Re: Assert failure of the cross-check for nullingrels

Richard Guo <guofenglinux@gmail.com>

From: Richard Guo <guofenglinux@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2023-05-18T06:47:42Z
Lists: pgsql-hackers
On Thu, May 18, 2023 at 3:42 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:

> ... BTW, something I'd considered in an earlier attempt at fixing this
> was to change clause_is_computable_at's API to pass the clause's
> RestrictInfo not just the clause_relids, along the lines of
>
> @@ -541,9 +547,10 @@ extract_actual_join_clauses(List *restrictinfo_list,
>   */
>  bool
>  clause_is_computable_at(PlannerInfo *root,
> -                        Relids clause_relids,
> +                        RestrictInfo *rinfo,
>                          Relids eval_relids)
>  {
> +    Relids        clause_relids = rinfo->clause_relids;
>      ListCell   *lc;
>
>      /* Nothing to do if no outer joins have been performed yet. */
>
> with corresponding simplifications at the call sites.  That was with
> a view to examining has_clone/is_clone inside this function.  My
> current proposal doesn't require that, but I'm somewhat tempted
> to make this API change anyway for future-proofing purposes.
> Thoughts?


This change looks good to me.

Thanks
Richard

Commits

  1. In clause_is_computable_at(), test required_relids for clone clauses.

  2. Tweak API of new function clause_is_computable_at().