blob: ddccacc138995f6f02381d99c43a5598b0fdc79b [file] [log] [blame]
CREATE FUNCTION checkResourceQueueMemoryLimits(cstring) RETURNS boolean
AS '@abs_srcdir@/regress.so', 'checkResourceQueueMemoryLimits' LANGUAGE C READS SQL DATA;
CREATE TABLE test_table(c1 int, c2 int);
NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'c1' as the Apache Cloudberry 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');
WARNING: resource queue is disabled
HINT: To enable set gp_resource_manager=queue
CREATE ROLE test_role WITH RESOURCE QUEUE test_q;
WARNING: resource queue is disabled
HINT: To enable set gp_resource_manager=queue
NOTICE: resource group required -- using default resource group "default_group"
WARNING: resource queue is disabled (seg0 172.17.0.2:25432 pid=10465)
HINT: To enable set gp_resource_manager=queue
WARNING: resource queue is disabled (seg1 172.17.0.2:25433 pid=10466)
HINT: To enable set gp_resource_manager=queue
WARNING: resource queue is disabled (seg2 172.17.0.2:25434 pid=10467)
HINT: To enable set gp_resource_manager=queue
GRANT SELECT ON test_table TO test_role;
SET STATEMENT_MEM = '125MB';
-- should return true
select checkResourceQueueMemoryLimits('test_q');
checkresourcequeuememorylimits
--------------------------------
f
(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;
count
-------
1
(1 row)
RESET ROLE;
-- should return true
select checkResourceQueueMemoryLimits('test_q');
checkresourcequeuememorylimits
--------------------------------
f
(1 row)
RESET STATEMENT_MEM;
REVOKE SELECT ON test_table FROM test_role;
DROP ROLE test_role;
DROP RESOURCE QUEUE test_q;
WARNING: resource queue is disabled
HINT: To enable set gp_resource_manager=queue
-- MPP-15992
CREATE RESOURCE QUEUE test_q WITH (ACTIVE_STATEMENTS = 1, MEMORY_LIMIT='8GB');
WARNING: resource queue is disabled
HINT: To enable set gp_resource_manager=queue
CREATE ROLE test_role WITH RESOURCE QUEUE test_q;
WARNING: resource queue is disabled
HINT: To enable set gp_resource_manager=queue
NOTICE: resource group required -- using default resource group "default_group"
WARNING: resource queue is disabled (seg0 172.17.0.2:25432 pid=10465)
HINT: To enable set gp_resource_manager=queue
WARNING: resource queue is disabled (seg1 172.17.0.2:25433 pid=10466)
HINT: To enable set gp_resource_manager=queue
WARNING: resource queue is disabled (seg2 172.17.0.2:25434 pid=10467)
HINT: To enable set gp_resource_manager=queue
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');
WARNING: resource queue is disabled
HINT: To enable set gp_resource_manager=queue
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
--------------------------------
f
(1 row)
ALTER RESOURCE QUEUE test_q WITH (ACTIVE_STATEMENTS = 1, MEMORY_LIMIT='7GB');
WARNING: resource queue is disabled
HINT: To enable set gp_resource_manager=queue
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
--------------------------------
f
(1 row)
REVOKE SELECT ON test_table FROM test_role;
DROP TABLE test_table;
DROP ROLE test_role;
DROP RESOURCE QUEUE test_q;
WARNING: resource queue is disabled
HINT: To enable set gp_resource_manager=queue
DROP FUNCTION checkResourceQueueMemoryLimits(cstring);