This is an automated email from the ASF dual-hosted git repository.

reshke pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudberry.git

commit b1d0954a25bcd0dcc0ad8df5cda507545403352b
Author: Tom Lane <[email protected]>
AuthorDate: Sun Jul 17 17:43:28 2022 -0400

    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/[email protected]
---
 src/backend/catalog/dependency.c   | 7 +++++++
 src/backend/utils/adt/selfuncs.c   | 2 ++
 src/backend/utils/cache/catcache.c | 1 +
 3 files changed, 10 insertions(+)

diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c
index 6c38ca470f6..39994474faf 100644
--- a/src/backend/catalog/dependency.c
+++ b/src/backend/catalog/dependency.c
@@ -1972,6 +1972,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 6001982a6d2..10017cb583a 100644
--- a/src/backend/utils/adt/selfuncs.c
+++ b/src/backend/utils/adt/selfuncs.c
@@ -4336,6 +4336,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:
@@ -4467,6 +4468,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 60f643c2d87..5ccb028a1a2 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:


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to