mirror of
https://github.com/postgres/postgres.git
synced 2025-11-07 19:06:32 +03:00
Fix handling of collations in multi-row VALUES constructs.
Per spec we ought to apply select_common_collation() across the expressions in each column of the VALUES table. The original coding was just taking the first row and assuming it was representative. This patch adds a field to struct RangeTblEntry to carry the resolved collations, so initdb is forced for changes in stored rule representation.
This commit is contained in:
@@ -725,7 +725,7 @@ typedef struct RangeTblEntry
|
||||
*
|
||||
* If the function returns RECORD, funccoltypes lists the column types
|
||||
* declared in the RTE's column type specification, funccoltypmods lists
|
||||
* their declared typmods, funccolcollations their collations. Otherwise,
|
||||
* their declared typmods, funccolcollations their collations. Otherwise,
|
||||
* those fields are NIL.
|
||||
*/
|
||||
Node *funcexpr; /* expression tree for func call */
|
||||
@@ -737,6 +737,7 @@ typedef struct RangeTblEntry
|
||||
* Fields valid for a values RTE (else NIL):
|
||||
*/
|
||||
List *values_lists; /* list of expression lists */
|
||||
List *values_collations; /* OID list of column collation OIDs */
|
||||
|
||||
/*
|
||||
* Fields valid for a CTE RTE (else NULL/zero):
|
||||
|
||||
Reference in New Issue
Block a user