PQtrace doesn't work - Mailing list pgsql-general

From W. van den Akker
Subject PQtrace doesn't work
Date
Msg-id 4325F135.3070008@wilsoft.nl
Whole thread Raw
In response to PQtrace doesn't work  ("W. van den Akker" <listsrv@wilsoft.nl>)
Responses Re: PQtrace doesn't work
List pgsql-general
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();
}


pgsql-general by date:

Previous
From: Poul Jensen
Date:
Subject: Re: SQL - planet redundant data
Next
From: Christian Goetze
Date:
Subject: Building postgres on Suze