-- 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
