Advertisement
Guest User

Untitled

a guest
Aug 24th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- forward declarations
  2. CREATE OR REPLACE FUNCTION pg_temp.f0(input TEXT) RETURNS BOOLEAN AS $$ SELECT TRUE; $$ LANGUAGE SQL VOLATILE;
  3. CREATE OR REPLACE FUNCTION pg_temp.f1(input TEXT) RETURNS BOOLEAN AS $$ SELECT TRUE; $$ LANGUAGE SQL VOLATILE;
  4. CREATE OR REPLACE FUNCTION pg_temp.f2(input TEXT) RETURNS BOOLEAN AS $$ SELECT TRUE; $$ LANGUAGE SQL VOLATILE;
  5. CREATE OR REPLACE FUNCTION pg_temp.f3(input TEXT) RETURNS BOOLEAN AS $$ SELECT TRUE; $$ LANGUAGE SQL VOLATILE;
  6. -- end of forward declarations
  7.  
  8. CREATE OR REPLACE FUNCTION pg_temp.f0(input TEXT) RETURNS BOOLEAN AS $$
  9.     SELECT CASE WHEN input SIMILAR TO '[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]%' THEN pg_temp.f1(SUBSTRING(input FROM 1))
  10.                 ELSE FALSE END;
  11. $$ LANGUAGE SQL VOLATILE;
  12.  
  13. CREATE OR REPLACE FUNCTION pg_temp.f1(input TEXT) RETURNS BOOLEAN AS $$
  14.     SELECT CASE WHEN input SIMILAR TO '[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]%' THEN pg_temp.f1(SUBSTRING(input FROM 1))
  15.                 WHEN input SIMILAR TO '[0123456789]%' THEN pg_temp.f2(SUBSTRING(input FROM 1))
  16.                 WHEN input SIMILAR TO '[+-]%' THEN pg_temp.f3(SUBSTRING(input FROM 1))
  17.                 ELSE TRUE END;
  18. $$ LANGUAGE SQL VOLATILE;
  19.  
  20. CREATE OR REPLACE FUNCTION pg_temp.f2(input TEXT) RETURNS BOOLEAN AS $$
  21.     SELECT CASE WHEN input SIMILAR TO '[0123456789]%' THEN pg_temp.f2(SUBSTRING(input FROM 1))
  22.                 WHEN input SIMILAR TO '[+-]%' THEN pg_temp.f3(SUBSTRING(input FROM 1))
  23.                 ELSE FALSE
  24.             END;
  25. $$ LANGUAGE SQL VOLATILE;
  26.  
  27. CREATE OR REPLACE FUNCTION pg_temp.f3(input TEXT) RETURNS BOOLEAN AS $$
  28.     SELECT CASE WHEN input SIMILAR TO '[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]%' THEN pg_temp.f1(SUBSTRING(input FROM 1))
  29.                 ELSE TRUE END;
  30. $$ LANGUAGE SQL VOLATILE;
  31.  
  32. SELECT * FROM pg_temp.f0('H2O');
  33.  
  34.  
  35. -- psql:dfa.sql:40: ERROR:  stack depth limit exceeded
  36. -- HINT:  Increase the configuration parameter "max_stack_depth" (currently 2048kB), after ensuring the platform's stack depth limit is adequate.
  37. -- CONTEXT:  SQL function "f3" during inlining
  38. -- SQL function "f2" during inlining
  39. -- SQL function "f1" during inlining
  40. -- SQL function "f1" during startup
  41. -- SQL function "f1" statement 1
  42. -- SQL function "f1" statement 1
  43. -- ...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement