1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-14 08:21:07 +03:00

Fix UNION/INTERSECT/EXCEPT so that when two inputs being merged have

same data type and same typmod, we show that typmod as the output
typmod, rather than generic -1.  This responds to several complaints
over the past few years about UNIONs unexpectedly dropping length or
precision info.
This commit is contained in:
Tom Lane
2006-08-10 02:36:29 +00:00
parent e860e746e1
commit 0ee26100b6
11 changed files with 79 additions and 35 deletions

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/optimizer/path/allpaths.c,v 1.150 2006/08/02 01:59:45 joe Exp $
* $PostgreSQL: pgsql/src/backend/optimizer/path/allpaths.c,v 1.151 2006/08/10 02:36:28 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@ -813,6 +813,10 @@ recurse_pushdown_safe(Node *setOp, Query *topquery,
* Compare tlist's datatypes against the list of set-operation result types.
* For any items that are different, mark the appropriate element of
* differentTypes[] to show that this column will have type conversions.
*
* We don't have to care about typmods here: the only allowed difference
* between set-op input and output typmods is input is a specific typmod
* and output is -1, and that does not require a coercion.
*/
static void
compare_tlist_datatypes(List *tlist, List *colTypes,