Re: Making jsonb_agg() faster - Mailing list pgsql-hackers

From jian he
Subject Re: Making jsonb_agg() faster
Date
Msg-id CACJufxGFzbRDnyG-=WZ3RgkVUwOZexUobGDrA3n5bj8MxrAZvQ@mail.gmail.com
Whole thread Raw
In response to Re: Making jsonb_agg() faster  (jian he <jian.universality@gmail.com>)
List pgsql-hackers
On Thu, Aug 14, 2025 at 4:59 PM jian he <jian.universality@gmail.com> wrote:
>
> > 0001 is a somewhat invasive refactoring of the API for
> > pushJsonbValue and friends.

in pushJsonbValue:

    /*
     * pushJsonbValueScalar handles all cases not involving pushing a
     * container object as an ELEM or VALUE.
     */
    if (!jbval || (seq != WJB_ELEM && seq != WJB_VALUE))
    {
        pushJsonbValueScalar(pstate, seq, jbval);
        return;
    }
    /* If it's not a jbvBinary value, again it goes to pushJsonbValueScalar */
    if (jbval->type != jbvBinary)
    {
        pushJsonbValueScalar(pstate, seq, jbval);
        return;
    }

we can combine above these two into
    if (!jbval || (seq != WJB_ELEM && seq != WJB_VALUE) ||
IsAJsonbScalar(jbval))
    {
        pushJsonbValueScalar(pstate, seq, jbval);
        return;
    }
and put it in the earlier position of pushJsonbValue.



pgsql-hackers by date:

Previous
From: Álvaro Herrera
Date:
Subject: Re: Remove Instruction Synchronization Barrier in spin_delay() for ARM64 architecture
Next
From: Álvaro Herrera
Date:
Subject: Re: ALTER DOMAIN ADD NOT NULL NOT VALID