Re: DBD::Pg and "invalid frontend message type 10" - Mailing list pgsql-interfaces

From Scott Cain
Subject Re: DBD::Pg and "invalid frontend message type 10"
Date
Msg-id 1124897430.2940.143.camel@localhost.localdomain
Whole thread Raw
In response to Re: DBD::Pg and "invalid frontend message type 10"  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: DBD::Pg and "invalid frontend message type 10"
List pgsql-interfaces
On Wed, 2005-08-24 at 11:10 -0400, Tom Lane wrote:
> Since 10 is the ascii code for line-feed, I wonder if this could
> indicate an unwanted newline format conversion someplace.  In particular
> I'm imagining something like this:
> 
> * frontend thinks it's sending 'Q' message type, message length,
>   and a query string that ends with \n:
>     Q 0 0 0 42 SELECT ... \n
> * some evil code changes this to
>     Q 0 0 0 42 SELECT ... \r \n
> * backend receives and executes
>     Q 0 0 0 42 SELECT ... \r
>   which is perfectly OK
> * next time backend tries to read a message, it gets the \n
>   which leads to the reported complaint
> 
> I've glossed over some details but in general it seems like something
> like this could be happening, if you are using the V3 protocol which
> relies on message length words.
> 

Wow, Tom, I have no idea what that means!  I haven't heard back from my
user whom I asked to turn on query logging so that we can see what the
server is seeing, but I suspect that the offending code may be in this
sub that is doing a COPY FROM STDIN:

sub copy_from_stdin { my $dbh      = shift; my $table    = shift; my $fields   = shift; my $file     = shift; my
$sequence= shift; my $nextval  = shift;
 
 warn "Loading data into $table table ...\n"; my $query = "COPY $table $fields FROM STDIN;"; #warn "\t".$query; my $sth
=$dbh->prepare($query); $sth->execute();
 
 open FILE, $file; while (<FILE>) {   $dbh->func($_, 'putline'); } $dbh->func('endcopy');  # no docs on this func--got
fromgoogle close FILE;
 
 $sth->finish; #update the sequence so that later inserts will work $dbh->do("SELECT setval('public.$sequence',
$nextval)FROM $table");
 
}

Does that help at all?

Thanks,
Scott

-- 
------------------------------------------------------------------------
Scott Cain, Ph. D.                                         cain@cshl.edu
GMOD Coordinator (http://www.gmod.org/)                     216-392-3087
Cold Spring Harbor Laboratory



pgsql-interfaces by date:

Previous
From: Tom Lane
Date:
Subject: Re: DBD::Pg and "invalid frontend message type 10"
Next
From: "Silvio Macedo"
Date:
Subject: LabView and PostgreSQL ; and RecordSet GetString performance