469,568 Members | 1,391 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,568 developers. It's quick & easy.

Unable to run testlibpq.c program

Hello All,
Im novice to Postgres ,Im trying to program in 'libpq the C
application programmer's interface to PostgreSQL'
I was trying to execute sample 'testlibpq.c'.

I did the following......

#su postgres(enter)

(bash#)createdb sampledb
(bash#)psql sampledb

(sampledb#)create table sirisha (name varchar(20),city varchar(20));
(sampledb#)insert into sirisha(name,city) values('Vikram','Toronto');
(sampledb#)\q

(bash#)gcc -I/usr/include/pgsql sirisha_retrieve.c -o output2 -lpq
(enter)

/usr/bin/ld: cannot open output file output2: Permission denied
collect2: ld returned 1 exit status

What does the above message signify? I tried to run the program as
root still the same prob ?
What is the problem?
Thanks in advance ......

Vikram.
*********Source Code is as follows.*********************
*
* testlibpq.c
*
* Test the C version of libpq, the PostgreSQL frontend
* library.
*/
#include <stdio.h>
#include <libpq-fe.h>

void
exit_nicely(PGconn *conn)
{
PQfinish(conn);
exit(1);
}

main()
{
char *pghost,
*pgport,
*pgoptions,
*pgtty;
char *dbName;
int nFields;
int i,
j;

/* FILE *debug; */

PGconn *conn;
PGresult *res;

/*
* begin, by setting the parameters for a backend connection if
the
* parameters are null, then the system will try to use
reasonable
* defaults by looking up environment variables or, failing that,
* using hardwired constants
*/
pghost = NULL; /* host name of the backend server */
pgport = NULL; /* port of the backend server */
pgoptions = NULL; /* special options to start up the
backend
* server */
pgtty = NULL; /* debugging tty for the backend
server */
dbName = "template1";

/* make a connection to the database */
conn = PQsetdb(pghost, pgport, pgoptions, pgtty, dbName);

/*
* check to see that the backend connection was successfully made
*/
if (PQstatus(conn) == CONNECTION_BAD)
{
fprintf(stderr, "Connection to database '%s' failed.\n",
dbName);
fprintf(stderr, "%s", PQerrorMessage(conn));
exit_nicely(conn);
}

/* debug = fopen("/tmp/trace.out","w"); */
/* PQtrace(conn, debug); */

/* start a transaction block */
res = PQexec(conn, "BEGIN");
if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr, "BEGIN command failed\n");
PQclear(res);
exit_nicely(conn);
}

/*
* should PQclear PGresult whenever it is no longer needed to
avoid
* memory leaks
*/
PQclear(res);

/*
* fetch rows from the pg_database, the system catalog of
* databases
*/
res = PQexec(conn, "DECLARE mycursor CURSOR FOR SELECT * FROM
pg_database");
if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr, "DECLARE CURSOR command failed\n");
PQclear(res);
exit_nicely(conn);
}
PQclear(res);
res = PQexec(conn, "FETCH ALL in mycursor");
if (!res || PQresultStatus(res) != PGRES_TUPLES_OK)
{
fprintf(stderr, "FETCH ALL command didn't return tuples
properly\n");
PQclear(res);
exit_nicely(conn);
}

/* first, print out the attribute names */
nFields = PQnfields(res);
for (i = 0; i < nFields; i++)
printf("%-15s", PQfname(res, i));
printf("\n\n");

/* next, print out the rows */
for (i = 0; i < PQntuples(res); i++)
{
for (j = 0; j < nFields; j++)
printf("%-15s", PQgetvalue(res, i, j));
printf("\n");
}
PQclear(res);

/* close the cursor */
res = PQexec(conn, "CLOSE mycursor");
PQclear(res);

/* commit the transaction */
res = PQexec(conn, "COMMIT");
PQclear(res);

/* close the connection to the database and cleanup */
PQfinish(conn);

/* fclose(debug); */
return 0;

}
Nov 23 '05 #1
1 1669
vi********@yahoo.com (Vikram) writes:
(bash#)gcc -I/usr/include/pgsql sirisha_retrieve.c -o output2 -lpq
/usr/bin/ld: cannot open output file output2: Permission denied
collect2: ld returned 1 exit status What does the above message signify?


It sure looks like you're doing this in a directory that you don't have
write permission for.

A less-probable alternative is that output2 already exists in your
current directory and you don't have write permission to overwrite it.

regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to ma*******@postgresql.org)

Nov 23 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

8 posts views Thread by Jonathan Polley | last post: by
2 posts views Thread by Jim Chapman | last post: by
1 post views Thread by geetu | last post: by
1 post views Thread by Benedict Verheyen | last post: by
5 posts views Thread by kailashchandra | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.