pgsql: Ensure casting to typmod -1 generates a RelabelType. - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Ensure casting to typmod -1 generates a RelabelType.
Date
Msg-id E1mxxUG-0006ko-TI@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Ensure casting to typmod -1 generates a RelabelType.

Fix the code changed by commit 5c056b0c2 so that we always generate
RelabelType, not something else, for a cast to unspecified typmod.
Otherwise planner optimizations might not happen.

It appears we missed this point because the previous experiments were
done on type numeric: the parser undesirably generates a call on the
numeric() length-coercion function, but then numeric_support()
optimizes that down to a RelabelType, so that everything seems fine.
It misbehaves for types that have a non-optimized length coercion
function, such as bpchar.

Per report from John Naylor.  Back-patch to all supported branches,
as the previous patch eventually was.  Unfortunately, that no longer
includes 9.6 ... we really shouldn't put this type of change into a
nearly-EOL branch.

Discussion: https://postgr.es/m/CAFBsxsEfbFHEkouc+FSj+3K1sHipLPbEC67L0SAe-9-da8QtYg@mail.gmail.com

Branch
------
REL_12_STABLE

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

Modified Files
--------------
src/backend/parser/parse_coerce.c         | 10 ++++++++-
src/test/regress/expected/expressions.out | 36 +++++++++++++++++++++++++++++++
src/test/regress/sql/expressions.sql      | 16 ++++++++++++++
3 files changed, 61 insertions(+), 1 deletion(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Remove psql support for server versions preceding 9.2.
Next
From: Peter Eisentraut
Date:
Subject: pgsql: Simplify the general-purpose 64-bit integer parsing APIs