Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit a11c9c4

Browse filesBrowse files
committed
Check collation when creating partitioned index
When creating a partitioned index, the partition key must be a subset of the index's columns. But this currently doesn't check that the collations between the partition key and the index definition match. So you can construct a unique index that fails to enforce uniqueness. (This would most likely involve a nondeterministic collation, so it would have to be crafted explicitly and is not something that would just happen by accident.) This patch adds the required collation check. As a result, any previously allowed unique index that has a collation mismatch would no longer be allowed to be created. Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://www.postgresql.org/message-id/flat/3327cb54-f7f1-413b-8fdb-7a9dceebb938%40eisentraut.org
1 parent 5b2dcea commit a11c9c4
Copy full SHA for a11c9c4

File tree

Expand file treeCollapse file tree

1 file changed

+4
-1
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+4
-1
lines changed

‎src/backend/commands/indexcmds.c

Copy file name to clipboardExpand all lines: src/backend/commands/indexcmds.c
+4-1Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1011,10 +1011,13 @@ DefineIndex(Oid tableId,
10111011
{
10121012
if (key->partattrs[i] == indexInfo->ii_IndexAttrNumbers[j])
10131013
{
1014-
/* Matched the column, now what about the equality op? */
1014+
/* Matched the column, now what about the collation and equality op? */
10151015
Oid idx_opfamily;
10161016
Oid idx_opcintype;
10171017

1018+
if (key->partcollation[i] != collationIds[j])
1019+
continue;
1020+
10181021
if (get_opclass_opfamily_and_input_type(opclassIds[j],
10191022
&idx_opfamily,
10201023
&idx_opcintype))

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.