Would someone care to defend this code?

    int            total = 2 * JB_ROOT_COUNT(jb);

    ...

    if (total == 0)
    {
        *nentries = 0;
        PG_RETURN_POINTER(NULL);
    }

    ...

    while ((r = JsonbIteratorNext(&it, &v, false)) != WJB_DONE)
    {
        if (i >= total)
        {
            total *= 2;
            entries = (Datum *) repalloc(entries, sizeof(Datum) * total);
        }

The early-exit code path supposes that JB_ROOT_COUNT is absolutely
reliable as an indicator that there's nothing in the jsonb value.
On the other hand, the realloc logic inside the iteration loop implies
that JB_ROOT_COUNT is just an untrustworthy estimate.  Which theory is
correct?  And why is there not a comment to be seen anywhere?  If the code
is correct then this logic is certainly worthy of a comment or three.

                        regards, tom lane


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to