Hi,
Found a misleading comment in JsonTablePlanJoinNextRow() while reading
the JSON_TABLE execution code.
The function returns false when both siblings are exhausted (meaning no
more rows), but the comment says "there are more rows" — the exact
opposite of what's happening. The code itself is correct.
if (!JsonTablePlanNextRow(planstate->right))
{
/* Right sibling ran out of row, so there are more rows. */ /* wrong */
return false;
}
A reader might reasonably treat this as a bug and flip the return value,
which would cause JSON_TABLE UNION plans to loop indefinitely.
Patch attached.
Regards,
Chuanwen Hu