> On 15 Nov 2019, at 12:25, Ranier Vilela <ranier_...@hotmail.com> wrote:

> It's probably not happening, but it can happen, I think.

I don't think it can, given how elog() works.

> -     if (!HeapTupleIsValid(classtup))
> +     if (!HeapTupleIsValid(classtup)) {
>               elog(ERROR, "cache lookup failed for operator class %u", 
> opclassoid);
> +        return false;

elog or ereport with a severity of ERROR or higher will never return.

> -     if (!HeapTupleIsValid(familytup))
> +     if (!HeapTupleIsValid(familytup)) {
>               elog(ERROR, "cache lookup failed for operator family %u", 
> opfamilyoid);
> +         ReleaseSysCache(classtup);
> +        return false;
> +    }

Not only will elog(ERROR ..) not return to run this, the errorhandling
machinery will automatically release resources and clean up.

cheers ./daniel


Reply via email to