From: | Zhihong Yu <zyu(at)yugabyte(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Onder Kalaci <onderk(at)microsoft(dot)com>, "pgsql-hackers(at)lists(dot)postgresql(dot)org" <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: UPDATE on Domain Array that is based on a composite key crashes |
Date: | 2021-10-19 17:29:40 |
Message-ID: | CALNJ-vQCoLsi6qhpL7drQqgBP7E3iDSRSvmJKaWk0=E4oe8gEw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Oct 19, 2021 at 10:04 AM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> [ please do not quote the entire thread when replying ]
>
> Zhihong Yu <zyu(at)yugabyte(dot)com> writes:
> > Here is the patch.
>
> This patch seems quite misguided to me. The proximate cause of
> the crash is that we're arriving at ExecEvalFieldStoreDeForm with
> *op->resnull and *op->resvalue both zero, which is a completely
> invalid situation for a pass-by-reference datatype; so something
> upstream of this messed up. Even if there were an argument for
> acting as though that were a valid NULL value, this patch fails to
> do so; that'd require setting all the output fieldstore.nulls[]
> entries to true, which you didn't.
>
> Moreover, experiment quickly shows that the problem only shows up with
> an array of domain over composite, not an array of plain composite.
> The proposed patch doesn't seem to have anything to do with that
> observation.
>
> After some digging around, I see where the issue actually is:
> the expression tree we're dealing with looks like
>
> {SUBSCRIPTINGREF
> :refexpr
> {VAR
> }
> :refassgnexpr
> {COERCETODOMAIN
> :arg
> {FIELDSTORE
> :arg
> {CASETESTEXPR
> }
> }
> }
> }
>
> The array element we intend to replace has to be passed down to
> the CaseTestExpr, but that isn't happening. That's because
> isAssignmentIndirectionExpr fails to recognize a tree like
> this, so ExecInitSubscriptingRef doesn't realize it needs to
> arrange for that.
>
> I believe the attached is a correct fix.
>
> regards, tom lane
>
> Hi,
Tom's patch fixes the update of individual field inside the domain type as
well.
Tom's patch looks good to me.
From | Date | Subject | |
---|---|---|---|
Next Message | Bossart, Nathan | 2021-10-19 17:41:29 | pg_upgrade test chatter |
Previous Message | Tom Lane | 2021-10-19 17:04:39 | Re: UPDATE on Domain Array that is based on a composite key crashes |