PQtrace doesn't work

Поиск
Список
Период
Сортировка
От W. van den Akker
Тема PQtrace doesn't work
Дата
Msg-id 4325F135.3070008@wilsoft.nl
обсуждение исходный текст
Ответ на PQtrace doesn't work  ("W. van den Akker" <listsrv@wilsoft.nl>)
Ответы Re: PQtrace doesn't work  (Bruce Momjian <pgman@candle.pha.pa.us>)
Список 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 по дате отправления:

Предыдущее
От: Poul Jensen
Дата:
Сообщение: Re: SQL - planet redundant data
Следующее
От: Christian Goetze
Дата:
Сообщение: Building postgres on Suze