Re: Named Prepared statement problems and possible solutions - Mailing list pgsql-hackers

From Dave Cramer
Subject Re: Named Prepared statement problems and possible solutions
Date
Msg-id CADK3HHJ--urwdtNBZrb70umtCrwdB_MHg_kKywXBOyjgj_gPfQ@mail.gmail.com
Whole thread Raw
In response to Re: Named Prepared statement problems and possible solutions  (Konstantin Knizhnik <knizhnik@garret.ru>)
Responses Re: Named Prepared statement problems and possible solutions
List pgsql-hackers

On Thu, 8 Jun 2023 at 11:22, Konstantin Knizhnik <knizhnik@garret.ru> wrote:


On 08.06.2023 6:18 PM, Dave Cramer wrote:


On Thu, 8 Jun 2023 at 11:15, Jan Wieck <jan@wi3ck.info> wrote:
On 6/8/23 10:56, Dave Cramer wrote:
>
>
>
>
> On Thu, 8 Jun 2023 at 10:31, Jan Wieck <jan@wi3ck.info
> <mailto:jan@wi3ck.info>> wrote:
>
>     On 6/8/23 09:53, Jan Wieck wrote:
>      > On 6/8/23 09:21, Dave Cramer wrote:
>      > The server doesn't know about all the clients of the pooler, does
>     it? It
>      > has no way of telling if/when a client disconnects from the pooler.
>
>     Another problem that complicates doing it in the server is that the
>     information require to (re-)prepare a statement in a backend that
>     currently doesn't have it needs to be kept in shared memory. This
>     includes the query string itself. Doing that without shared memory in a
>     pooler that is multi-threaded or based on async-IO is much simpler and
>     allows for easy ballooning.
>
>
> I don't expect the server to re-prepare the statement. If the server
> responds with "statement doesn't exist" the client would send a prepare.

Are you proposing a new libpq protocol version?

I believe we would need to add this to the protocol, yes.


So it will be responsibility of client to remember text of prepared query to be able to resend it when statement doesn't exists at server?
IMHO very strange decision. Why not to handle it in connection pooler (doesn't matter - external or embedded)?

I may be myopic but in the JDBC world and I assume others we have a `PreparedStatement` object which has the text of the query.
The text is readily available to us.

Also again from the JDBC point of view we have use un-named statements normally and then name them after 5 uses so we already have embedded logic on how to deal with PreparedStatements

Dave
 

pgsql-hackers by date:

Previous
From: Hannu Krosing
Date:
Subject: Re: Let's make PostgreSQL multi-threaded
Next
From: Tomas Vondra
Date:
Subject: Re: Use of additional index columns in rows filtering