| \set ECHO none |
| \pset format unaligned |
| /* |
| * Test for dbms_utility.format_call_stack(char mode). |
| * Mode is hex. |
| * The callstack returned is passed to regex_replace function. |
| * Regex_replace replaces the function oid from the stack with zero. |
| * This is done to avoid random results due to different oids generated. |
| * Also the line number and () of the function is removed since it is different |
| * across different pg version. |
| */ |
| |
| CREATE OR REPLACE FUNCTION checkHexCallStack() returns text as $$ |
| DECLARE |
| stack text; |
| BEGIN |
| select * INTO stack from dbms_utility.format_call_stack('o'); |
| select * INTO stack from regexp_replace(stack,'[ 0-9a-fA-F]{4}[0-9a-fA-F]{4}',' 0','g'); |
| select * INTO stack from regexp_replace(stack,'[45()]','','g'); |
| return stack; |
| END; |
| $$ LANGUAGE plpgsql; |
| |
| /* |
| * Test for dbms_utility.format_call_stack(char mode). |
| * Mode is integer. |
| */ |
| |
| CREATE OR REPLACE FUNCTION checkIntCallStack() returns text as $$ |
| DECLARE |
| stack text; |
| BEGIN |
| select * INTO stack from dbms_utility.format_call_stack('p'); |
| select * INTO stack from regexp_replace(stack,'[ 0-9]{3}[0-9]{5}',' 0','g'); |
| select * INTO stack from regexp_replace(stack,'[45()]','','g'); |
| return stack; |
| END; |
| $$ LANGUAGE plpgsql; |
| |
| /* |
| * Test for dbms_utility.format_call_stack(char mode). |
| * Mode is integer with unpadded output. |
| */ |
| |
| CREATE OR REPLACE FUNCTION checkIntUnpaddedCallStack() returns text as $$ |
| DECLARE |
| stack text; |
| BEGIN |
| select * INTO stack from dbms_utility.format_call_stack('s'); |
| select * INTO stack from regexp_replace(stack,'[0-9]{5,}','0','g'); |
| select * INTO stack from regexp_replace(stack,'[45()]','','g'); |
| return stack; |
| END; |
| $$ LANGUAGE plpgsql; |
| |
| select * from checkHexCallStack(); |
| select * from checkIntCallStack(); |
| select * from checkIntUnpaddedCallStack(); |
| |
| DROP FUNCTION checkHexCallStack(); |
| DROP FUNCTION checkIntCallStack(); |
| DROP FUNCTION checkIntUnpaddedCallStack(); |
| |
| /* |
| * Test for dbms_utility.get_time(), the result is rounded |
| * to have constant result in the regression test. |
| */ |
| DO $$ |
| DECLARE |
| start_time integer; |
| end_time integer; |
| BEGIN |
| start_time := DBMS_UTILITY.GET_TIME(); |
| PERFORM pg_sleep(2); |
| end_time := DBMS_UTILITY.GET_TIME(); |
| -- clamp long runtime on slow build machines to the 2s the testsuite is expecting |
| IF end_time BETWEEN start_time + 300 AND start_time + 1000 THEN end_time := start_time + 250; END IF; |
| RAISE NOTICE 'Execution time: % seconds', trunc((end_time - start_time)::numeric/100); |
| END |
| $$; |
| |
| |