pgsql: Ensure casting to typmod -1 generates a RelabelType.
От | Tom Lane |
---|---|
Тема | pgsql: Ensure casting to typmod -1 generates a RelabelType. |
Дата | |
Msg-id | E1mxxUG-0006ki-Rz@gemulon.postgresql.org обсуждение исходный текст |
Список | 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 ------ master Details ------- https://git.postgresql.org/pg/commitdiff/9c356f4b2dd8f8ff49757287e387ab1d023e4449 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 по дате отправления: