From 9c7caf3b762f8c7a70fa02b867427c5c33696b4b Mon Sep 17 00:00:00 2001 From: amit Date: Mon, 5 Jun 2017 10:58:52 +0900 Subject: [PATCH] Do not store dependency on invalid and default collation Partitioning code failed to comply with that rule. --- doc/src/sgml/catalogs.sgml | 6 ++++-- src/backend/catalog/heap.c | 11 ++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/doc/src/sgml/catalogs.sgml b/doc/src/sgml/catalogs.sgml index b2fae027f5..7decc5a91e 100644 --- a/doc/src/sgml/catalogs.sgml +++ b/doc/src/sgml/catalogs.sgml @@ -3783,7 +3783,8 @@ SCRAM-SHA-256$<iteration count>:<salt>< pg_collation.oid For each column in the index key, this contains the OID of the - collation to use for the index. + the collation to use for the index, or zero if the column is not + of a collatable data type. @@ -4770,7 +4771,8 @@ SCRAM-SHA-256$<iteration count>:<salt>< pg_opclass.oid For each column in the partition key, this contains the OID of the - the collation to use for partitioning. + the collation to use for partitioning, or zero if the column is not + of a collatable data type. diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index 0ce94f346f..4e5b79ef94 100644 --- a/src/backend/catalog/heap.c +++ b/src/backend/catalog/heap.c @@ -3160,9 +3160,14 @@ StorePartitionKey(Relation rel, recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL); - referenced.classId = CollationRelationId; - referenced.objectId = partcollation[i]; - referenced.objectSubId = 0; + /* The default collation is pinned, so don't bother recording it */ + if (OidIsValid(partcollation[i]) && + partcollation[i] != DEFAULT_COLLATION_OID) + { + referenced.classId = CollationRelationId; + referenced.objectId = partcollation[i]; + referenced.objectSubId = 0; + } recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL); } -- 2.11.0