pgsql: Check for stack overflow in transformSetOperationTree().

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Check for stack overflow in transformSetOperationTree().
Date: 2012-11-12 00:57:05
Message-ID: E1TXiKn-0003tu-Qd@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Check for stack overflow in transformSetOperationTree().

Since transformSetOperationTree() recurses, it can be driven to stack
overflow with enough UNION/INTERSECT/EXCEPT clauses in a query. Add a
check to ensure it fails cleanly instead of crashing. Per report from
Matthew Gerber (though it's not clear whether this is the only thing
going wrong for him).

Historical note: I think the reasoning behind not putting a check here in
the beginning was that the check in transformExpr() ought to be sufficient
to guard the whole parser. However, because transformSetOperationTree()
recurses all the way to the bottom of the set-operation tree before doing
any analysis of the statement's expressions, that check doesn't save it.

Branch
------
REL8_4_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/78542e37b8e1b25f329e4baac618da39ee8f911b

Modified Files
--------------
src/backend/parser/analyze.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Peter Eisentraut 2012-11-12 04:41:14 pgsql: doc: "only relevant" -> "relevant only"
Previous Message User Fxjr 2012-11-10 00:17:31 npgsql - Npgsql2: [#1011271] NpgsqlSchema: Use InvariantCulture on all