Skip to content

Commit bb30410

Browse files
committed
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
1 parent 810bcbd commit bb30410

File tree

3 files changed

+10
-0
lines changed

3 files changed

+10
-0
lines changed

src/backend/catalog/dependency.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1842,6 +1842,13 @@ find_expr_references_walker(Node *node,
18421842
add_object_address(OCLASS_TYPE, objoid, 0,
18431843
context->addrs);
18441844
break;
1845+
case REGCOLLATIONOID:
1846+
objoid = DatumGetObjectId(con->constvalue);
1847+
if (SearchSysCacheExists1(COLLOID,
1848+
ObjectIdGetDatum(objoid)))
1849+
add_object_address(OCLASS_COLLATION, objoid, 0,
1850+
context->addrs);
1851+
break;
18451852
case REGCONFIGOID:
18461853
objoid = DatumGetObjectId(con->constvalue);
18471854
if (SearchSysCacheExists1(TSCONFIGOID,

src/backend/utils/adt/selfuncs.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4305,6 +4305,7 @@ convert_to_scalar(Datum value, Oid valuetypid, Oid collid, double *scaledvalue,
43054305
case REGOPERATOROID:
43064306
case REGCLASSOID:
43074307
case REGTYPEOID:
4308+
case REGCOLLATIONOID:
43084309
case REGCONFIGOID:
43094310
case REGDICTIONARYOID:
43104311
case REGROLEOID:
@@ -4436,6 +4437,7 @@ convert_numeric_to_scalar(Datum value, Oid typid, bool *failure)
44364437
case REGOPERATOROID:
44374438
case REGCLASSOID:
44384439
case REGTYPEOID:
4440+
case REGCOLLATIONOID:
44394441
case REGCONFIGOID:
44404442
case REGDICTIONARYOID:
44414443
case REGROLEOID:

src/backend/utils/cache/catcache.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@ GetCCHashEqFuncs(Oid keytype, CCHashFN *hashfunc, RegProcedure *eqfunc, CCFastEq
239239
case REGOPERATOROID:
240240
case REGCLASSOID:
241241
case REGTYPEOID:
242+
case REGCOLLATIONOID:
242243
case REGCONFIGOID:
243244
case REGDICTIONARYOID:
244245
case REGROLEOID:

0 commit comments

Comments
 (0)