mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-08 20:49:20 +02:00
Since most of the system thinks AND and OR are N-argument expressions anyway, let's have the grammar generate a representation of that form when dealing with input like "x AND y AND z AND ...", rather than generating a deeply-nested binary tree that just has to be flattened later by the planner. This avoids stack overflow in parse analysis when dealing with queries having more than a few thousand such clauses; and in any case it removes some rather unsightly inconsistencies, since some parts of parse analysis were generating N-argument ANDs/ORs already. It's still possible to get a stack overflow with weirdly parenthesized input, such as "x AND (y AND (z AND ( ... )))", but such cases are not mainstream usage. The maximum depth of parenthesization is already limited by Bison's stack in such cases, anyway, so that the limit is probably fairly platform-independent. Patch originally by Gurjeet Singh, heavily revised by me |
||
---|---|---|
.. | ||
bitmapset.h | ||
execnodes.h | ||
makefuncs.h | ||
memnodes.h | ||
nodeFuncs.h | ||
nodes.h | ||
params.h | ||
parsenodes.h | ||
pg_list.h | ||
plannodes.h | ||
primnodes.h | ||
print.h | ||
readfuncs.h | ||
relation.h | ||
replnodes.h | ||
tidbitmap.h | ||
value.h |