agora inbox for pgsql-interfaces@postgresql.org
help / color / mirror / Atom feedFrom: Gustavo Lopes <contratempo@gmail.com>
To: pgsql-interfaces@postgresql.org
Subject: Re: libpq on windows
Date: Fri, 20 May 2005 14:20:58 +0100
Message-ID: <2b5c484b05052006206c301de@mail.gmail.com> (raw)
In-Reply-To: <20704.202.47.227.25.1116570741.squirrel@202.47.227.25>
References: <2b5c484b05051906526f8bb577@mail.gmail.com>
<20704.202.47.227.25.1116570741.squirrel@202.47.227.25>
No, I'd say the notice processor/receiver is not the problem since
I've been able to implement a notice receiver that would display the
received notices without any complications.
The problem seems to arise only when a message contains a HINT
attached (I don't even know whether messages of type NOTICE can
cointain a hint field, but anyway that doesn't seem relevant to this
issue).
Gustavio Lopes
On 20/05/05, jtv@xs4all.nl <jtv@xs4all.nl> wrote:
> Gustavo Lopes <contratempo@gmail.com> wrote:
>
> > The problem seems to occurr only when the server sends a hint or the
> > dll generates one. This can happen when the connection to the server
> > cannot be established because the server is not running, a nonexistant
> > postgres function exist is called, when one attempts to drop an index
> > upon which a constraint depends, etc. (the program doesn't go beyond
> > PQconnectdb, PQexec or PQexecparam). Since my debugging skills are
> > very poor I cannot give any accurate description on what is causing
> > the exception.
> > The problem can be very easily reproduced by creating a C program
> > which calls PQconnectdb with a host parameter that points to a machine
> > that is not running postgres.
> > Running the same program under linux (although I used older versions
> > of the interface and the server) does not cause any problems.
>
> It could be the notice processor that crashes. A "notice processor" is a
> callback that you can register with libpq that handles error messages.
> The default is to print them to the console, but I'm not sure you can
> always do that in a Windows program. Or since you're apparently using
> different compilers for libpq and the application, maybe the default
> notice processor gets linked to a different standard library than it
> expects and fails because of that.
>
> Notice processors are documented here:
>
> http://www.postgresql.org/docs/8.0/interactive/libpq-notice-processing.html
>
> To find out if this is what's wrong, try creating an empty function (with
> C-style calling convention, not a regular C++ function) and setting that
> as the notice processor:
>
> extern "C" { /* (this line only needed in C++) */
> void emptynoticeprocessor(void *, const char *)
> {
> }
> } /* (this line only needed in C++) */
>
> Now in your code, just after you opened your connection (call it "c"):
>
> PQsetNoticeProcessor(c,emptynoticeprocessor,NULL);
>
> Of course that will mean that error messages are not displayed, so if this
> solves your crashing problem then your next step is to implement something
> here that displays the given message!
>
> Jeroen
>
>
view thread (26+ messages) latest in thread
Message-ID: <2b5c484b05052006206c301de@mail.gmail.com>
Permalink: ../2b5c484b05052006206c301de@mail.gmail.com/
Also on: postgresql.org/message-id/2b5c484b05052006206c301de@mail.gmail.com
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-interfaces@postgresql.org
Cc: contratempo@gmail.com
Subject: Re: libpq on windows
In-Reply-To: <2b5c484b05052006206c301de@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox