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

>
>
> On 08.06.2023 6:18 PM, Dave Cramer wrote:
>
>
>
> On Thu, 8 Jun 2023 at 11:15, Jan Wieck <j...@wi3ck.info> wrote:
>
>> On 6/8/23 10:56, Dave Cramer wrote:
>> >
>> >
>> >
>> >
>> > On Thu, 8 Jun 2023 at 10:31, Jan Wieck <j...@wi3ck.info
>> > <mailto:j...@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

Reply via email to