Re: BUG #19412: Wrong query result with not null constraint - Mailing list pgsql-bugs

From Richard Guo
Subject Re: BUG #19412: Wrong query result with not null constraint
Date
Msg-id CAMbWs49NVUNpQPwGb56SCSQL-bkjtxnkCb6Ot7dBxGndJoA3Pw@mail.gmail.com
Whole thread Raw
In response to Re: BUG #19412: Wrong query result with not null constraint  (Richard Guo <guofenglinux@gmail.com>)
Responses Re: BUG #19412: Wrong query result with not null constraint
Re: BUG #19412: Wrong query result with not null constraint
List pgsql-bugs
On Wed, Feb 18, 2026 at 10:51 AM Richard Guo <guofenglinux@gmail.com> wrote:
> Exactly.  I think this is because when adjust_appendrel_attrs_mutator
> propagates the nullingrel bits from the parent rel's Var into the
> translated Var, it loses the translated Var's original bits.  Instead
> of overwriting the translated Var's nullingrels, I think we should
> merge them.
>
> --- a/src/backend/optimizer/util/appendinfo.c
> +++ b/src/backend/optimizer/util/appendinfo.c
> @@ -291,8 +291,11 @@ adjust_appendrel_attrs_mutator(Node *node,
>                  var->varattno, get_rel_name(appinfo->parent_reloid));
>         if (IsA(newnode, Var))
>         {
> -           ((Var *) newnode)->varreturningtype = var->varreturningtype;
> -           ((Var *) newnode)->varnullingrels = var->varnullingrels;
> +           Var    *newvar = (Var *) newnode;
> +
> +           newvar->varreturningtype = var->varreturningtype;
> +           newvar->varnullingrels = bms_add_members(newvar->varnullingrels,
> +                                                    var->varnullingrels);
>         }

Here is a more readable version of the patch.

- Richard

Attachment

pgsql-bugs by date:

Previous
From: Andrey Borodin
Date:
Subject: Re: 17.8 standby crashes during WAL replay from 17.5 primary: "could not access status of transaction"
Next
From: Sergey Shinderuk
Date:
Subject: Re: BUG #19412: Wrong query result with not null constraint