From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: Ensure casting to typmod -1 generates a RelabelType. |
Date: | 2021-12-16 20:36:24 |
Message-ID: | E1mxxUG-0006kk-SM@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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_14_STABLE
Details
-------
https://git.postgresql.org/pg/commitdiff/f9a8bc9f27e6c7569f30fc86b82129647068f6a0
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(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2021-12-17 05:44:59 | pgsql: Simplify the general-purpose 64-bit integer parsing APIs |
Previous Message | Tom Lane | 2021-12-16 19:02:37 | pgsql: Remove psql support for server versions preceding 9.2. |