CREATE FUNCTION checkResourceQueueMemoryLimits(cstring) RETURNS boolean
AS '@abs_srcdir@/regress.so', 'checkResourceQueueMemoryLimits' LANGUAGE C;
CREATE TABLE test_table(c1 int, c2 int); 
NOTICE:  Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'c1' as the Greenplum Database data distribution key for this table.
HINT:  The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
INSERT INTO test_table values(1, 2);
-- MPP-17240
CREATE RESOURCE QUEUE test_q WITH (ACTIVE_STATEMENTS = 1, MEMORY_LIMIT='10MB');
CREATE ROLE test_role WITH RESOURCE QUEUE test_q;
GRANT SELECT ON test_table TO test_role;
SET STATEMENT_MEM = '125MB';
-- should return true
select checkResourceQueueMemoryLimits('test_q'); 
 checkresourcequeuememorylimits 
--------------------------------
 t
(1 row)

SET ROLE test_role; 
-- should deadlock as there aren't enough resources to run the query.
-- query should be assigned 125MB, but queue only allows 10MB 
SELECT count(*) FROM test_table; 
ERROR:  deadlock detected, locking against self
HINT:  It is likely that a query is waiting on itself for resources. Check resource queue limits.
RESET ROLE;
-- should return true
select checkResourceQueueMemoryLimits('test_q'); 
 checkresourcequeuememorylimits 
--------------------------------
 t
(1 row)

RESET STATEMENT_MEM;
REVOKE SELECT ON test_table FROM test_role;
DROP ROLE test_role; 
DROP RESOURCE QUEUE test_q;
-- MPP-15992
CREATE RESOURCE QUEUE test_q WITH (ACTIVE_STATEMENTS = 1, MEMORY_LIMIT='8GB');
CREATE ROLE test_role WITH RESOURCE QUEUE test_q;
GRANT SELECT ON test_table TO test_role;
SET ROLE test_role; 
-- should return result 
SELECT count(*) FROM test_table; 
 count 
-------
     1
(1 row)

RESET ROLE;
ALTER RESOURCE QUEUE test_q WITH (ACTIVE_STATEMENTS = 1, MEMORY_LIMIT='10GB');
SET ROLE test_role; 
-- should return result 
SELECT count(*) FROM test_table; 
 count 
-------
     1
(1 row)

RESET ROLE;
-- should return true
select checkResourceQueueMemoryLimits('test_q'); 
 checkresourcequeuememorylimits 
--------------------------------
 t
(1 row)

ALTER RESOURCE QUEUE test_q WITH (ACTIVE_STATEMENTS = 1, MEMORY_LIMIT='7GB');
SET ROLE test_role; 
-- should return result 
SELECT count(*) FROM test_table; 
 count 
-------
     1
(1 row)

RESET ROLE;
-- should return true
select checkResourceQueueMemoryLimits('test_q'); 
 checkresourcequeuememorylimits 
--------------------------------
 t
(1 row)

REVOKE SELECT ON test_table FROM test_role;
DROP TABLE test_table;
DROP ROLE test_role; 
DROP RESOURCE QUEUE test_q;
DROP FUNCTION checkResourceQueueMemoryLimits(cstring);
