Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- forward declarations
- CREATE OR REPLACE FUNCTION pg_temp.f0(input TEXT) RETURNS BOOLEAN AS $$ SELECT TRUE; $$ LANGUAGE SQL VOLATILE;
- CREATE OR REPLACE FUNCTION pg_temp.f1(input TEXT) RETURNS BOOLEAN AS $$ SELECT TRUE; $$ LANGUAGE SQL VOLATILE;
- CREATE OR REPLACE FUNCTION pg_temp.f2(input TEXT) RETURNS BOOLEAN AS $$ SELECT TRUE; $$ LANGUAGE SQL VOLATILE;
- CREATE OR REPLACE FUNCTION pg_temp.f3(input TEXT) RETURNS BOOLEAN AS $$ SELECT TRUE; $$ LANGUAGE SQL VOLATILE;
- -- end of forward declarations
- CREATE OR REPLACE FUNCTION pg_temp.f0(input TEXT) RETURNS BOOLEAN AS $$
- SELECT CASE WHEN input SIMILAR TO '[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]%' THEN pg_temp.f1(SUBSTRING(input FROM 1))
- ELSE FALSE END;
- $$ LANGUAGE SQL VOLATILE;
- CREATE OR REPLACE FUNCTION pg_temp.f1(input TEXT) RETURNS BOOLEAN AS $$
- SELECT CASE WHEN input SIMILAR TO '[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]%' THEN pg_temp.f1(SUBSTRING(input FROM 1))
- WHEN input SIMILAR TO '[0123456789]%' THEN pg_temp.f2(SUBSTRING(input FROM 1))
- WHEN input SIMILAR TO '[+-]%' THEN pg_temp.f3(SUBSTRING(input FROM 1))
- ELSE TRUE END;
- $$ LANGUAGE SQL VOLATILE;
- CREATE OR REPLACE FUNCTION pg_temp.f2(input TEXT) RETURNS BOOLEAN AS $$
- SELECT CASE WHEN input SIMILAR TO '[0123456789]%' THEN pg_temp.f2(SUBSTRING(input FROM 1))
- WHEN input SIMILAR TO '[+-]%' THEN pg_temp.f3(SUBSTRING(input FROM 1))
- ELSE FALSE
- END;
- $$ LANGUAGE SQL VOLATILE;
- CREATE OR REPLACE FUNCTION pg_temp.f3(input TEXT) RETURNS BOOLEAN AS $$
- SELECT CASE WHEN input SIMILAR TO '[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]%' THEN pg_temp.f1(SUBSTRING(input FROM 1))
- ELSE TRUE END;
- $$ LANGUAGE SQL VOLATILE;
- SELECT * FROM pg_temp.f0('H2O');
- -- psql:dfa.sql:40: 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.
- -- CONTEXT: SQL function "f3" during inlining
- -- SQL function "f2" during inlining
- -- SQL function "f1" during inlining
- -- SQL function "f1" during startup
- -- SQL function "f1" statement 1
- -- SQL function "f1" statement 1
- -- ...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement