Let's drop V2 protocol - Mailing list pgsql-hackers

From Marko Kreen
Subject Let's drop V2 protocol
Date
Msg-id 20120224135210.GA11282@gmail.com
Whole thread Raw
In response to Re: Speed dblink using alternate libpq tuple storage  (Marko Kreen <markokr@gmail.com>)
Responses Re: Let's drop V2 protocol  (Merlin Moncure <mmoncure@gmail.com>)
List pgsql-hackers
On Fri, Feb 24, 2012 at 02:11:45PM +0200, Marko Kreen wrote:
> On Fri, Feb 24, 2012 at 07:53:14PM +0900, Kyotaro HORIGUCHI wrote:
> > - I have no idea how to do test for protocol 2...
> 
> I have a urge to test with "rm fe-protocol2.c"...

Now I tested with 7.3.21 and the non-error case works fine.  Error state
does not - and not because patch is buggy, but because it has never
worked - V2 protocol has no working concept of skipping packets because
pending error state.

On OOM, V2 code does:
  conn->inStart = conn->inEnd;

and hopes for the best, but it does not work, because on short results
it moves past ReadyForQuery, on long results it moves into middle of
some packet.

With user-specified row processor, we need to have a working
error state handling.  With some surgery, it's possible to
introduce something like
  if (conn->result->resultStatus != PGRES_TUPLES_OK)

into various places in the code, to ignore but still
parse the packets.  But it will be rather non-trivial patch.

So could we like, uh, not do it and simply drop the V2 code?


Ofcourse, the row-processor patch does not make the situation worse,
so we could just say "don't use custom row processor with V2 servers",
but it still raises the question: "Does anyone have pre-7.4
servers around and if yes, then why does he need to use 9.2 libpq
to access those?"

-- 
marko



pgsql-hackers by date:

Previous
From: Kohei KaiGai
Date:
Subject: Re: [v9.2] Add GUC sepgsql.client_label
Next
From: Alex Shulgin
Date:
Subject: Re: Reviewing patch "URI connection string support for libpq"