From: | Dagfinn Ilmari Mannsåker <ilmari(at)ilmari(dot)org> |
---|---|
To: | Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | pgsql-hackers(at)lists(dot)postgresql(dot)org |
Subject: | Re: [PATCH] Add result_types column to pg_prepared_statements view |
Date: | 2022-07-01 12:27:20 |
Message-ID: | 87v8shj9w7.fsf@wibble.ilmari.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com> writes:
> On 19.05.22 17:34, Dagfinn Ilmari Mannsåker wrote:
>> Prompted by a question on IRC, here's a patch to add a result_types
>> column to the pg_prepared_statements view, so that one can see the types
>> of the columns returned by a prepared statement, not just the parameter
>> types.
>> I'm not quite sure about the column name, suggestions welcome.
>
> I think this patch is sensible.
>
> I see one issue: When you describe a prepared statement via the
> protocol, if a result field has a domain as its type, the RowDescription
> message sends the underlying base type, not the domain type directly
> (see SendRowDescriptionMessage()). But it doesn't do that for the
> parameters (see exec_describe_statement_message()). I don't know why
> that is; the protocol documentation doesn't mention it. Might be worth
> looking into, and checking whether the analogous information contained
> in this view should be made consistent.
A bit of git archaeology shows that the change was made by Tom (Cc-ed)
in 7.4:
commit d9b679c13a820eb7b464a1eeb1f177c3fea13ece
Author: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Date: 2003-05-13 18:39:50 +0000
In RowDescription messages, report columns of domain datatypes as having
the type OID and typmod of the underlying base type. Per discussions
a few weeks ago with Andreas Pflug and others. Note that this behavioral
change affects both old- and new-protocol clients.
I can't find that discussion in the archive, but someone did complain
about it shortly after:
https://www.postgresql.org/message-id/flat/D71A1574-A772-11D7-913D-0030656EE7B2%40icx.net
I think in this case returning the domain type is more useful, since
it's easy to get from that to the base type, but not vice versa.
The arguments about client-side type-specific value handling for
RowDescription don't apply here IMO, since this view is more
user-facing.
- ilmari
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2022-07-01 12:30:39 | Re: doc: Clarify what "excluded" represents for INSERT ON CONFLICT |
Previous Message | Matthias van de Meent | 2022-07-01 12:27:16 | Re: Pluggable toaster |