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.
Showing
- src/backend/catalog/dependency.c 9 additions, 4 deletionssrc/backend/catalog/dependency.c
- src/backend/nodes/copyfuncs.c 1 addition, 0 deletionssrc/backend/nodes/copyfuncs.c
- src/backend/nodes/equalfuncs.c 1 addition, 0 deletionssrc/backend/nodes/equalfuncs.c
- src/backend/nodes/outfuncs.c 1 addition, 0 deletionssrc/backend/nodes/outfuncs.c
- src/backend/nodes/readfuncs.c 1 addition, 0 deletionssrc/backend/nodes/readfuncs.c
- src/backend/optimizer/plan/setrefs.c 1 addition, 0 deletionssrc/backend/optimizer/plan/setrefs.c
- src/backend/parser/analyze.c 85 additions, 40 deletionssrc/backend/parser/analyze.c
- src/backend/parser/parse_relation.c 17 additions, 7 deletionssrc/backend/parser/parse_relation.c
- src/include/catalog/catversion.h 1 addition, 1 deletionsrc/include/catalog/catversion.h
- src/include/nodes/parsenodes.h 2 additions, 1 deletionsrc/include/nodes/parsenodes.h
- src/include/parser/parse_relation.h 1 addition, 0 deletionssrc/include/parser/parse_relation.h
- src/test/regress/expected/collate.out 8 additions, 0 deletionssrc/test/regress/expected/collate.out
- src/test/regress/sql/collate.sql 3 additions, 0 deletionssrc/test/regress/sql/collate.sql
Loading
Please register or sign in to comment