Re: BUG #18657: Using JSON_OBJECTAGG with volatile function leads to segfault

Tender Wang <tndrwang@gmail.com>

From: Tender Wang <tndrwang@gmail.com>
To: Amit Langote <amitlangote09@gmail.com>
Cc: Michael Paquier <michael@paquier.xyz>, exclusion@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2024-10-16T09:18:55Z
Lists: pgsql-bugs
Amit Langote <amitlangote09@gmail.com> 于2024年10月16日周三 17:14写道:

> On Wed, Oct 16, 2024 at 6:11 PM Tender Wang <tndrwang@gmail.com> wrote:
> > Amit Langote <amitlangote09@gmail.com> 于2024年10月16日周三 17:06写道:
> >>
> >> On Wed, Oct 16, 2024 at 5:20 PM Tender Wang <tndrwang@gmail.com> wrote:
> >> > Amit Langote <amitlangote09@gmail.com> 于2024年10月16日周三 08:35写道:
> >> >>
> >> >> On Wed, Oct 16, 2024 at 9:19 AM Michael Paquier <michael@paquier.xyz>
> wrote:
> >> >> > On Tue, Oct 15, 2024 at 11:00:01AM +0000, PG Bug reporting form
> wrote:
> >> >> > > First bad commit for this anomaly is b6e1157e7.
> >> >> >
> >> >> > Amit, any thoughts?
> >> >>
> >> >> Will look into it, thanks.
> >> > Hi,
> >> >
> >> > I debug this issue, and I find that:
> >> > after  b6e1157e7,  we shouldn't walk JsonValueExpr.raw_expr in
> expression_tree_walker_impl(), which
> >> > is called in preprocess_aggrefs().
> >> >
> >> > I try to above solution, no crashed again.
> >>
> >> Thanks for the analysis.  That is my conclusion as well.
> >>
> >> Attached a patch.
> >>
> >
> > Yeah, yours look more better than mine.  And the typo in my attached
> patch, is that right?
> > JSON_OBJECT() should be JSON_OBJECTAGG()  near  transformJsonObjectAgg()
>
> Yeah, the typo needs to be fixed as well.  Thanks for the patch.
>
> So, attaching 0002 for that.
>

LGTM


-- 
Thanks,
Tender Wang

Commits

  1. SQL/JSON: Fix some oversights in commit b6e1157e7

  2. Don't include CaseTestExpr in JsonValueExpr.formatted_expr