pgsql: Don't elide casting to typmod -1.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Don't elide casting to typmod -1.
Date: 2021-09-20 15:49:30
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Don't elide casting to typmod -1.

Casting a value that's already of a type with a specific typmod
to an unspecified typmod doesn't do anything so far as run-time
behavior is concerned. However, it really ought to change the
exposed type of the expression to match. Up to now,
coerce_type_typmod hasn't bothered with that, which creates gotchas
in contexts such as recursive unions. If for example one side of
the union is numeric(18,3), but it needs to be plain numeric to
match the other side, there's no direct way to express that.

This is easy enough to fix, by inserting a RelabelType to update the
exposed type of the expression. However, it's a bit nervous-making
to change this behavior, because it's stood for a really long time.
But no complaints have emerged about 14beta3, so go ahead and
back-patch.

Back-patch of 5c056b0c2 into previous supported branches.

Discussion: https://postgr.es/m/CABNQVagu3bZGqiTjb31a8D5Od3fUMs7Oh3gmZMQZVHZ=uWWWfQ@mail.gmail.com
Discussion: https://postgr.es/m/[email protected]

Branch
------
REL_13_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/dede1439978120d2196e0d3963bb809a8b262e5b

Modified Files
--------------
src/backend/parser/parse_coerce.c | 26 ++++++++++++++--------
src/test/regress/expected/expressions.out | 37 +++++++++++++++++++++++++++++++
src/test/regress/sql/expressions.sql | 20 +++++++++++++++++
3 files changed, 74 insertions(+), 9 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Andres Freund 2021-09-20 20:56:51 pgsql: pgstat: Split out relation stats handling from AtEO[Sub]Xact_PgS
Previous Message Alvaro Herrera 2021-09-20 15:22:39 pgsql: Doc: add glossary term for "auxiliary process"