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
This commit is contained in:
parent
0a7ccee8fe
commit
f49a9fc2bb
@ -1839,6 +1839,13 @@ find_expr_references_walker(Node *node,
|
|||||||
add_object_address(OCLASS_TYPE, objoid, 0,
|
add_object_address(OCLASS_TYPE, objoid, 0,
|
||||||
context->addrs);
|
context->addrs);
|
||||||
break;
|
break;
|
||||||
|
case REGCOLLATIONOID:
|
||||||
|
objoid = DatumGetObjectId(con->constvalue);
|
||||||
|
if (SearchSysCacheExists1(COLLOID,
|
||||||
|
ObjectIdGetDatum(objoid)))
|
||||||
|
add_object_address(OCLASS_COLLATION, objoid, 0,
|
||||||
|
context->addrs);
|
||||||
|
break;
|
||||||
case REGCONFIGOID:
|
case REGCONFIGOID:
|
||||||
objoid = DatumGetObjectId(con->constvalue);
|
objoid = DatumGetObjectId(con->constvalue);
|
||||||
if (SearchSysCacheExists1(TSCONFIGOID,
|
if (SearchSysCacheExists1(TSCONFIGOID,
|
||||||
|
@ -4326,6 +4326,7 @@ convert_to_scalar(Datum value, Oid valuetypid, Oid collid, double *scaledvalue,
|
|||||||
case REGOPERATOROID:
|
case REGOPERATOROID:
|
||||||
case REGCLASSOID:
|
case REGCLASSOID:
|
||||||
case REGTYPEOID:
|
case REGTYPEOID:
|
||||||
|
case REGCOLLATIONOID:
|
||||||
case REGCONFIGOID:
|
case REGCONFIGOID:
|
||||||
case REGDICTIONARYOID:
|
case REGDICTIONARYOID:
|
||||||
case REGROLEOID:
|
case REGROLEOID:
|
||||||
@ -4457,6 +4458,7 @@ convert_numeric_to_scalar(Datum value, Oid typid, bool *failure)
|
|||||||
case REGOPERATOROID:
|
case REGOPERATOROID:
|
||||||
case REGCLASSOID:
|
case REGCLASSOID:
|
||||||
case REGTYPEOID:
|
case REGTYPEOID:
|
||||||
|
case REGCOLLATIONOID:
|
||||||
case REGCONFIGOID:
|
case REGCONFIGOID:
|
||||||
case REGDICTIONARYOID:
|
case REGDICTIONARYOID:
|
||||||
case REGROLEOID:
|
case REGROLEOID:
|
||||||
|
1
src/backend/utils/cache/catcache.c
vendored
1
src/backend/utils/cache/catcache.c
vendored
@ -240,6 +240,7 @@ GetCCHashEqFuncs(Oid keytype, CCHashFN *hashfunc, RegProcedure *eqfunc, CCFastEq
|
|||||||
case REGOPERATOROID:
|
case REGOPERATOROID:
|
||||||
case REGCLASSOID:
|
case REGCLASSOID:
|
||||||
case REGTYPEOID:
|
case REGTYPEOID:
|
||||||
|
case REGCOLLATIONOID:
|
||||||
case REGCONFIGOID:
|
case REGCONFIGOID:
|
||||||
case REGDICTIONARYOID:
|
case REGDICTIONARYOID:
|
||||||
case REGROLEOID:
|
case REGROLEOID:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user