Re: DBD::Pg and "invalid frontend message type 10"

From: Scott Cain <cain(at)cshl(dot)edu>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Michael Fuhr <mike(at)fuhr(dot)org>, pgsql-interfaces(at)postgresql(dot)org
Subject: Re: DBD::Pg and "invalid frontend message type 10"
Date: 2005-08-24 15:30:30
Message-ID: 1124897430.2940.143.camel@localhost.localdomain
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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 from google
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(at)cshl(dot)edu
GMOD Coordinator (http://www.gmod.org/) 216-392-3087
Cold Spring Harbor Laboratory

In response to

Responses

Browse pgsql-interfaces by date

  From Date Subject
Next Message Silvio Macedo 2005-08-25 03:59:40 LabView and PostgreSQL ; and RecordSet GetString performance
Previous Message Tom Lane 2005-08-24 15:10:06 Re: DBD::Pg and "invalid frontend message type 10"