blob: d805ca3bc79bc9bbe82391c36c14beed99132711 [file] [log] [blame]
-- ----------------------------------------------------------------------
-- Test: manage resource group in transaction
-- ----------------------------------------------------------------------
--start_ignore
DROP RESOURCE GROUP rg_test_group;
--end_ignore
-- helper view to check the resgroup status
CREATE OR REPLACE VIEW rg_test_monitor AS
SELECT groupname, concurrency, cpu_rate_limit
FROM gp_toolkit.gp_resgroup_config
WHERE groupname='rg_test_group';
-- ----------------------------------------------------------------------
-- Test: create/alter/drop a resource group in transaction block
-- ----------------------------------------------------------------------
-- CREATE RESOURCE GROUP cannot run inside a transaction block
BEGIN;
CREATE RESOURCE GROUP rg_test_group WITH (cpu_rate_limit=5, memory_limit=5);
END;
SELECT * FROM rg_test_monitor;
-- ALTER RESOURCE GROUP cannot run inside a transaction block
CREATE RESOURCE GROUP rg_test_group WITH (cpu_rate_limit=5, memory_limit=5);
BEGIN;
ALTER RESOURCE GROUP rg_test_group SET CONCURRENCY 10;
END;
SELECT * FROM rg_test_monitor;
-- DROP RESOURCE GROUP cannot run inside a transaction block
BEGIN;
DROP RESOURCE GROUP rg_test_group;
END;
SELECT * FROM rg_test_monitor;
DROP RESOURCE GROUP rg_test_group;
-- ----------------------------------------------------------------------
-- Test: create/alter/drop a resource group and DML in transaction block
-- ----------------------------------------------------------------------
-- CREATE RESOURCE GROUP cannot run inside a transaction block
BEGIN;
SELECT 1;
CREATE RESOURCE GROUP rg_test_group WITH (cpu_rate_limit=5, memory_limit=5);
END;
SELECT * FROM rg_test_monitor;
-- ALTER RESOURCE GROUP cannot run inside a transaction block
CREATE RESOURCE GROUP rg_test_group WITH (cpu_rate_limit=5, memory_limit=5);
BEGIN;
SELECT 1;
ALTER RESOURCE GROUP rg_test_group SET CONCURRENCY 10;
END;
SELECT * FROM rg_test_monitor;
-- DROP RESOURCE GROUP cannot run inside a transaction block
BEGIN;
SELECT 1;
DROP RESOURCE GROUP rg_test_group;
END;
SELECT * FROM rg_test_monitor;
DROP RESOURCE GROUP rg_test_group;
-- ----------------------------------------------------------------------
-- Test: create/alter/drop a resource group in subtransaction
-- ----------------------------------------------------------------------
-- CREATE RESOURCE GROUP cannot run inside a subtransaction
BEGIN;
SAVEPOINT rg_savepoint;
CREATE RESOURCE GROUP rg_test_group WITH (cpu_rate_limit=5, memory_limit=5);
ROLLBACK TO SAVEPOINT rg_savepoint;
ABORT;
SELECT * FROM rg_test_monitor;
-- ALTER RESOURCE GROUP cannot run inside a subtransaction
CREATE RESOURCE GROUP rg_test_group WITH (cpu_rate_limit=5, memory_limit=5);
BEGIN;
SAVEPOINT rg_savepoint;
ALTER RESOURCE GROUP rg_test_group SET CONCURRENCY 10;
ROLLBACK TO SAVEPOINT rg_savepoint;
ABORT;
SELECT * FROM rg_test_monitor;
-- DROP RESOURCE GROUP cannot run inside a subtransaction
BEGIN;
SAVEPOINT rg_savepoint;
DROP RESOURCE GROUP rg_test_group;
ROLLBACK TO SAVEPOINT rg_savepoint;
ABORT;
SELECT * FROM rg_test_monitor;
DROP RESOURCE GROUP rg_test_group;
-- ----------------------------------------------------------------------
-- Test: create/alter/drop a resource group in function call
-- ----------------------------------------------------------------------
CREATE OR REPLACE FUNCTION rg_create_func() RETURNS VOID
AS $$ CREATE RESOURCE GROUP rg_test_group WITH (cpu_rate_limit=5, memory_limit=5) $$
LANGUAGE SQL;
CREATE OR REPLACE FUNCTION rg_alter_func() RETURNS VOID
AS $$ ALTER RESOURCE GROUP rg_test_group SET CONCURRENCY 10 $$
LANGUAGE SQL;
CREATE OR REPLACE FUNCTION rg_drop_func() RETURNS VOID
AS $$ DROP RESOURCE GROUP rg_test_group $$
LANGUAGE SQL;
-- CREATE RESOURCE GROUP cannot run inside a function call
SELECT * FROM rg_create_func();
SELECT * FROM rg_test_monitor;
-- ALTER RESOURCE GROUP cannot run inside a function call
CREATE RESOURCE GROUP rg_test_group WITH (cpu_rate_limit=5, memory_limit=5);
SELECT * FROM rg_alter_func();
SELECT * FROM rg_test_monitor;
-- DROP RESOURCE GROUP cannot run inside a function call
SELECT * FROM rg_drop_func();
SELECT * FROM rg_test_monitor;
DROP RESOURCE GROUP rg_test_group;
DROP FUNCTION rg_create_func();
DROP FUNCTION rg_alter_func();
DROP FUNCTION rg_drop_func();
-- cleanup
DROP VIEW rg_test_monitor;