Still intrigued... (was: Socket command type e unknown) - Mailing list pgsql-general

From Carlos Moreno
Subject Still intrigued... (was: Socket command type e unknown)
Date
Msg-id 3E5D461B.2060705@mochima.com
Whole thread Raw
Responses Re: Still intrigued... (was: Socket command type e unknown)  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: Still intrigued... (was: Socket command type e unknown)  (Dennis Gearon <gearond@cvc.net>)
List pgsql-general
After following your advice and tap on the communications
between frontend and backend  (I must say it was a bit
intimidating, but I did have a lot of fun), things are
very weird.

My current working theory is that all the commands are
being executed properly, despite a mysterious random
data exchange that produces the error I'm seeing.

What I observed is the following:  message from FE
to BE, data:  Qinsert into table ......

Then a reply Pblank.CINSERT.304712345

(I guess the number is the OID of the record inserted).

After that, another message from FE to BE, with an X
(which is "close connection", if I understand correctly).

But then, *after* sending that one, the client sends
another block, starting with an e, or a p.  Bang!!
That's my error.

Of course, in my code, I simply do:

if (db.Exec (sql_string) != PGRES_COMMAND_OK)
{
    cerr << "Error at ... currentdate ...."
         << db.ErrorMessage() << endl;
}

So, apparently Exec is internally doing more than it
should, and by the time it comes back to the calling
function, it carries the error message corresponding to
the spurious block, after having succesfully executed
the statement).

Sounds familiar to anyone out there?  Any sane reason
why this could be happening??

This sounds like the typical symptoms of a case of
undefined behaviour -- some lost pointers and the
like...  Except that I practically use no pointers at
all (all of them are encapsulated anyway...  I use
*strictly* string class, vector, list, and map -- there
is not *a single* use of any pointer in the classical
sense of using pointers -- i.e., pointer manipulation
of data structures, raw allocation, pointer arithmetic,
etc.).  Can you think of other explanations?

Thanks!

Carlos
--





pgsql-general by date:

Previous
From: Stephan Szabo
Date:
Subject: Re: index usage (and foreign keys/triggers)
Next
From: Hadley Willan
Date:
Subject: Is renaming a database easy or dangerous