pgsql: Don't elide casting to typmod -1.
От | Tom Lane |
---|---|
Тема | pgsql: Don't elide casting to typmod -1. |
Дата | |
Msg-id | E1mSLXu-000501-Pn@gemulon.postgresql.org обсуждение исходный текст |
Список | 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/1488389.1631984807@sss.pgh.pa.us Branch ------ REL_12_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/f230614da28b1b60a4c8faf1fe0f51f866c3093c 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(-)
В списке pgsql-committers по дате отправления: