On Sat, Jan 23, 2021 at 12:52 PM Zhihong Yu <z...@yugabyte.com> wrote:

> Hi,
>
> +       for (i = 0; i < riinfo->nkeys; i++)
> +       {
> +           Oid     eq_opr = eq_oprs[i];
> +           Oid     typeid = RIAttType(fk_rel, riinfo->fk_attnums[i]);
> +           RI_CompareHashEntry *entry = ri_HashCompareOp(eq_opr, typeid);
> +
> +           if (pk_nulls[i] != 'n' &&
> OidIsValid(entry->cast_func_finfo.fn_oid))
>
> It seems the pk_nulls[i] != 'n' check can be lifted ahead of the
> assignment to the three local variables. That way, ri_HashCompareOp
> wouldn't be called when pk_nulls[i] == 'n'.
>
> +           case TM_Updated:
> +               if (IsolationUsesXactSnapshot())
> ...
> +           case TM_Deleted:
> +               if (IsolationUsesXactSnapshot())
>
> It seems the handling for TM_Updated and TM_Deleted is the same. The cases
> for these two values can be put next to each other (saving one block of
> code).
>
> Cheers
>

I'll pause on reviewing v4 until you've addressed the suggestions above.

Reply via email to