aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2022-07-17 17:43:28 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2022-07-17 17:43:28 -0400
commitf49a9fc2bb1228e98cf4fe217e661f3d1dd2ca8c (patch)
tree3f8dfb846beeea1776bff61232b60a8065e249d8 /src
parent0a7ccee8fe9ffaff09ad45f4890a3457c69e80b7 (diff)
downloadpostgresql-f49a9fc2bb1228e98cf4fe217e661f3d1dd2ca8c.tar.gz
postgresql-f49a9fc2bb1228e98cf4fe217e661f3d1dd2ca8c.zip
Fix omissions in support for the "regcollation" type.
The patch that added regcollation doesn't seem to have been too thorough about supporting it everywhere that other reg* types are supported. Fix that. (The find_expr_references omission is moderately serious, since it could result in missing expression dependencies. The others are less exciting.) Noted while fixing bug #17483. Back-patch to v13 where regcollation was added. Discussion: https://postgr.es/m/1423433.1652722406@sss.pgh.pa.us
Diffstat (limited to 'src')
-rw-r--r--src/backend/catalog/dependency.c7
-rw-r--r--src/backend/utils/adt/selfuncs.c2
-rw-r--r--src/backend/utils/cache/catcache.c1
3 files changed, 10 insertions, 0 deletions
diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c
index 5cbd72ce109..cf9ceddff1e 100644
--- a/src/backend/catalog/dependency.c
+++ b/src/backend/catalog/dependency.c
@@ -1839,6 +1839,13 @@ find_expr_references_walker(Node *node,
add_object_address(OCLASS_TYPE, objoid, 0,
context->addrs);
break;
+ case REGCOLLATIONOID:
+ objoid = DatumGetObjectId(con->constvalue);
+ if (SearchSysCacheExists1(COLLOID,
+ ObjectIdGetDatum(objoid)))
+ add_object_address(OCLASS_COLLATION, objoid, 0,
+ context->addrs);
+ break;
case REGCONFIGOID:
objoid = DatumGetObjectId(con->constvalue);
if (SearchSysCacheExists1(TSCONFIGOID,
diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c
index 6f99b5b2437..d35e5605de8 100644
--- a/src/backend/utils/adt/selfuncs.c
+++ b/src/backend/utils/adt/selfuncs.c
@@ -4326,6 +4326,7 @@ convert_to_scalar(Datum value, Oid valuetypid, Oid collid, double *scaledvalue,
case REGOPERATOROID:
case REGCLASSOID:
case REGTYPEOID:
+ case REGCOLLATIONOID:
case REGCONFIGOID:
case REGDICTIONARYOID:
case REGROLEOID:
@@ -4457,6 +4458,7 @@ convert_numeric_to_scalar(Datum value, Oid typid, bool *failure)
case REGOPERATOROID:
case REGCLASSOID:
case REGTYPEOID:
+ case REGCOLLATIONOID:
case REGCONFIGOID:
case REGDICTIONARYOID:
case REGROLEOID:
diff --git a/src/backend/utils/cache/catcache.c b/src/backend/utils/cache/catcache.c
index 6ae7c1f50b8..38e943fab2b 100644
--- a/src/backend/utils/cache/catcache.c
+++ b/src/backend/utils/cache/catcache.c
@@ -240,6 +240,7 @@ GetCCHashEqFuncs(Oid keytype, CCHashFN *hashfunc, RegProcedure *eqfunc, CCFastEq
case REGOPERATOROID:
case REGCLASSOID:
case REGTYPEOID:
+ case REGCOLLATIONOID:
case REGCONFIGOID:
case REGDICTIONARYOID:
case REGROLEOID: