On Wed, Feb 17, 2021 at 03:08:36PM +1300, Thomas Munro wrote:
>               tp = SearchSysCache1(COLLOID, ObjectIdGetDatum(oid));
>               if (!HeapTupleIsValid(tp))
> +             {
> +                     if (found)
> +                     {
> +                             *found = false;
> +                             return NULL;
> +                     }
>                       elog(ERROR, "cache lookup failed for collation %u", 
> oid);
> +             }
>               collform = (Form_pg_collation) GETSTRUCT(tp);
>               version = get_collation_actual_version(collform->collprovider,
>                                                                               
>            NameStr(collform->collcollate));
> +             if (found)
> +                     *found = true;
>       }

FWIW, we usually prefer using NULL instead of an error for the result
of a system function if an object cannot be found because it allows
users to not get failures in a middle of a full table scan if things
like an InvalidOid is mixed in the data set.  For example, we do that
in the partition functions, for objectaddress functions, etc.  That
would make this patch set simpler, switching
get_collation_version_for_oid() to just use a missing_ok argument.
And that would be more consistent with the other syscache lookup
functions we have here and there in the tree.
--
Michael

Attachment: signature.asc
Description: PGP signature

Reply via email to