postgresql/src/test/regress/sql/infinite_recurse.sql

30 lines
995 B
SQL

-- Check that stack depth detection mechanism works and
-- max_stack_depth is not set too high.
create function infinite_recurse() returns int as
'select infinite_recurse()' language sql;
-- Unfortunately, up till mid 2020 the Linux kernel had a bug in PPC64
-- signal handling that would cause this test to crash if it happened
-- to receive an sinval catchup interrupt while the stack is deep:
-- https://bugzilla.kernel.org/show_bug.cgi?id=205183
-- It is likely to be many years before that bug disappears from all
-- production kernels, so disable this test on such platforms.
-- (We still create the function, so as not to have a cross-platform
-- difference in the end state of the regression database.)
SELECT version() ~ 'powerpc64[^,]*-linux-gnu'
AS skip_test \gset
\if :skip_test
\quit
\endif
-- The full error report is not very stable, so we show only SQLSTATE
-- and primary error message.
\set VERBOSITY sqlstate
select infinite_recurse();
\echo :LAST_ERROR_MESSAGE