postgresql/src
Tom Lane 051d1ba7a0 Avoid recursion while processing ELSIF lists in plpgsql.
The original implementation of ELSIF in plpgsql converted the construct
into nested simple IF statements.  This was prone to stack overflow with
long ELSIF lists, in two different ways.  First, it's difficult to generate
the parsetree without using right-recursion in the bison grammar, and
that's prone to parser stack overflow since nothing can be reduced until
the whole list has been read.  Second, we'd recurse during execution, thus
creating an unnecessary risk of execution-time stack overflow.  Rewrite
so that the ELSIF list is represented as a flat list, scanned via iteration
not recursion, and generated through left-recursion in the grammar.
Per a gripe from Håvard Kongsgård.
2011-10-27 15:21:51 -04:00
..
backend Improve planner's ability to recognize cases where an IN's RHS is unique. 2011-10-26 17:52:29 -04:00
bin Fix pg_bsd_indent bug where newlines were not being trimmed from typedef 2011-10-26 17:24:19 -04:00
include Improve planner's ability to recognize cases where an IN's RHS is unique. 2011-10-26 17:52:29 -04:00
interfaces Suppress remaining -Waddress warnings from recent gcc versions. 2011-10-18 21:44:23 -04:00
makefiles Fix pgxs.mk to always add --dbname=$(CONTRIB_TESTDB) to REGRESS_OPTS. 2011-08-24 15:16:50 -04:00
pl Avoid recursion while processing ELSIF lists in plpgsql. 2011-10-27 15:21:51 -04:00
port Fix typo in pg_srand48 (srand48 in older branches). 2011-09-03 16:17:34 -04:00
template Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00
test Change FK trigger creation order to better support self-referential FKs. 2011-10-26 13:02:28 -04:00
timezone Simplify handling of the timezone GUC by making initdb choose the default. 2011-09-09 17:59:11 -04:00
tools Add simple script to check for right recursion in Bison grammars. 2011-10-27 13:50:57 -04:00
tutorial Stamp copyrights for year 2011. 2011-01-01 13:18:15 -05:00
.gitignore Convert cvsignore to gitignore, and add .gitignore for build targets. 2010-09-22 12:57:04 +02:00
bcc32.mak Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
DEVELOPERS Replace a couple of references to files that no longer exist in the source 2009-05-04 08:08:47 +00:00
Makefile Fix some oversights in distprep and maintainer-clean targets. 2011-03-10 00:04:05 -05:00
Makefile.global.in Make distprep and *clean build targets recurse into all subdirectories. 2011-07-03 13:55:12 -04:00
Makefile.shlib Use single quotes in preference to double quotes for protecting pathnames. 2011-06-15 21:45:23 -04:00
nls-global.mk Add the possibility to pass --flag arguments to xgettext calls 2011-06-27 00:37:21 +03:00
win32.mak Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00