On Sun, Nov 11, 2012 at 12:22:24PM -0500, Tom Lane wrote: > perl -e 'print "SELECT 1 a, 2 b, 3 c\n"; print "UNION ALL SELECT 1 a, 2 b, 3 > c\n" foreach (1..8200);' | psql > > On the machine I tried this on, it works up to about 8200 and then fails > in the way I'd expect: > > ERROR: stack depth limit exceeded > HINT: Increase the configuration parameter "max_stack_depth" (currently > 2048kB), after ensuring the platform's stack depth limit is adequate. > > But then when I cranked it up to 80000, kaboom: > > connection to server was lost
I tried this test case on Windows Server 2008 (x64). It hit max_stack_depth at 9000 UNIONs and crashed at 10000. When I run it under a debugger, the debugger reports exception 0xC00000FD (STATUS_STACK_OVERFLOW). Run normally, the server log reports exception 0xC0000005 (STATUS_ACCESS_VIOLATION). > Inspection of the core dump shows transformSetOperationTree is the > problem --- it's recursing but lacks a check_stack_depth test. > So that's easy to fix, but I wonder why the critical depth limit seems > to be so much less on your machine. I get the expected error up to > about 65000 UNION ALLs --- why is yours crashing at a tenth of that? So, I can reproduce the lower threshold, but the exception type does not agree with the one Matthew observed. -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers