Re: request for database identifier in the startup packet - Mailing list pgsql-hackers

From Dave Cramer
Subject Re: request for database identifier in the startup packet
Date
Msg-id CADK3HH+_Q2As1tNwUjnxH5GEQ0o5g-YRSknCE4OL5Q-8kS6rag@mail.gmail.com
Whole thread Raw
In response to Re: request for database identifier in the startup packet  (Robert Haas <robertmhaas@gmail.com>)
Responses Re: request for database identifier in the startup packet
List pgsql-hackers

Dave Cramer


On Thu, 9 May 2024 at 12:22, Robert Haas <robertmhaas@gmail.com> wrote:
On Thu, May 9, 2024 at 8:06 AM Dave Cramer <davecramer@gmail.com> wrote:
> The JDBC driver is currently keeping a per connection cache of types in the driver. We are seeing cases where the number of columns is quite high. In one case Prevent fetchFieldMetaData() from being run when unnecessary. · Issue #3241 · pgjdbc/pgjdbc (github.com) 2.6 Million columns.
>
> If we knew that we were connecting to the same database we could use a single cache across connections.
>
> I think we would require a server/database identifier in the startup message.

I understand the desire to share the cache, but not why that would
require any kind of change to the wire protocol.

The server identity is actually useful for many things such as knowing which instance of a cluster you are connected to.
For the cache however we can't use the IP address to determine which server we are connected to as we could be connected to a pooler.
Knowing exactly which server/database makes it relatively easy to have a common cache across connections. Getting that in the startup message seems like a good place 

Dave

pgsql-hackers by date:

Previous
From: Jacob Champion
Date:
Subject: Re: [PATCH] json_lex_string: don't overread on bad UTF8
Next
From: Álvaro Herrera
Date:
Subject: Re: First draft of PG 17 release notes