Hello,
I've send this message also on 29-1-2004 and have since no solution for
this problem .. >:o .
I have a little test program (see at the end of the message).
The program crashes when PQTrace is called (instruction xxxx referenced
memory at "0x00000010", the
memory could not be written" (obvious ... ). I use the library
libpqdll.lib and postgresql v8.0.1, but also happens
in 7.4.9.
Running under W2000 sp4, VC++ 6 SP5. If compiling under Linux then there
is no problem. Obvious there is
something wrong with the use under windows
If I comment traceoption all works fine.
Any ideas?
gr,
Willem.
#include <stdio.h>
#include <stdlib.h>
#include <libpq-fe.h>
#include <winsock.h>
void main ()
{
int nFields;
int i, j;
PGconn *conn;
PGresult *res;
char *pghost = "linux";
char *dbName = "some_db";
FILE *debug;
WSADATA wsadata;
WSAStartup(0x0101, &wsadata);
conn = PQsetdbLogin (pghost, NULL, NULL, NULL, dbName, "user","");
if (PQstatus(conn) == CONNECTION_BAD)
{
printf ("Connection to database %s is failed\n", dbName);
printf ("%s", PQerrorMessage (conn));
PQfinish (conn);
exit (1);
}
debug = fopen ("trace.out", "w");
--->> PQtrace (conn, debug);
res = PQexec (conn, "BEGIN");
if (!res || PQresultStatus (res) != PGRES_COMMAND_OK)
{
printf ("BEGIN command failed\n");
PQclear (res);
PQfinish (conn);
exit (1);
}
PQclear (res);
res = PQexec (conn, "DECLARE mycursor CURSOR FOR select sum(id) from
relaties");
if (!res || PQresultStatus (res) != PGRES_COMMAND_OK)
{
printf ("DECLARE CURSOR command failed\n");
PQclear (res);
PQfinish (conn);
exit (1);
}
PQclear (res);
res = PQexec (conn, "FETCH ALL in mycursor");
if (!res || PQresultStatus (res) != PGRES_TUPLES_OK)
{
printf ("FETCH ALL command didn't return tuples properly\n");
PQclear (res);
PQfinish (conn);
exit (1);
}
nFields = PQnfields (res);
for (i = 0; i < nFields; i++)
printf ("%-15s", PQfname (res, i));
printf ("\n\n");
for (i = 0; i < PQntuples (res); i++)
{
for (j = 0; j < nFields; j++)
printf ("%-15s", PQgetvalue (res, i, j));
printf ("\n");
}
PQclear (res);
res = PQexec (conn, "CLOSE mycursor");
PQclear (res);
res = PQexec (conn, "COMMIT");
PQclear (res);
PQfinish (conn);
fclose (debug);
WSACleanup();
}
---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@xxxxxxxxxxxxxx so that your
message can get through to the mailing list cleanly