Would someone care to defend this code?

    int            total = 2 * JB_ROOT_COUNT(jb);


    if (total == 0)
        *nentries = 0;


    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:

Reply via email to