| -- Tests for the functions and views in gp_toolkit that use resource queue. |
| -- gp_resource_manager=queue need to be set for this test to run as expected. |
| -- Create an empty database to test in, because some of the gp_toolkit views |
| -- are really slow, when there are a lot of objects in the database. |
| create database toolkit_testdb; |
| \c toolkit_testdb |
| create role toolkit_admin superuser createdb; |
| create role toolkit_user1 login; |
| NOTICE: resource queue required -- using default resource queue "pg_default" |
| -- Test Resource Queue views |
| -- GP Resource Queue Activity |
| select * from gp_toolkit.gp_resq_activity; |
| resqprocpid | resqrole | resqoid | resqname | resqstart | resqstatus |
| -------------+----------+---------+----------+-----------+------------ |
| (0 rows) |
| |
| -- GP Resource Queue Activity by Queue |
| -- There is no resource queue, so should be empty |
| select * from gp_toolkit.gp_resq_activity_by_queue; |
| resqoid | resqname | resqlast | resqstatus | resqtotal |
| ---------+----------+----------+------------+----------- |
| (0 rows) |
| |
| -- gp_resq_role |
| select * from gp_toolkit.gp_resq_role where rrrolname like 'toolkit%'; |
| rrrolname | rrrsqname |
| ---------------+------------ |
| toolkit_admin | pg_default |
| toolkit_user1 | pg_default |
| (2 rows) |
| |
| -- gp_locks_on_resqueue |
| -- Should be empty because there is no one in the queue |
| select * from gp_toolkit.gp_locks_on_resqueue; |
| lorusename | lorrsqname | lorlocktype | lorobjid | lortransaction | lorpid | lormode | lorgranted | lorwaitevent | lorwaiteventtype |
| ------------+------------+-------------+----------+----------------+--------+---------+------------+--------------+------------------ |
| (0 rows) |
| |
| -- GP Resource Queue Activity for User |
| set session authorization toolkit_user1; |
| select resqname, resqstatus from gp_toolkit.gp_resq_activity where resqname='pg_default'; |
| resqname | resqstatus |
| ------------+------------ |
| pg_default | running |
| (1 row) |
| |
| reset session authorization; |
| -- should be empty because the sql is completed |
| select * from gp_toolkit.gp_resq_activity where resqrole = 'toolkit_user1'; |
| resqprocpid | resqrole | resqoid | resqname | resqstart | resqstatus |
| -------------+----------+---------+----------+-----------+------------ |
| (0 rows) |
| |
| -- gp_pgdatabase_invalid |
| -- Should be empty unless there is failure in the segment, it's a view from gp_pgdatabase |
| select * from gp_toolkit.gp_pgdatabase_invalid; |
| pgdbidbid | pgdbiisprimary | pgdbicontent | pgdbivalid | pgdbidefinedprimary |
| -----------+----------------+--------------+------------+--------------------- |
| (0 rows) |
| |
| -- Test that the statistics on resource queue usage are properly updated and |
| -- reflected in the pg_stat_resqueues view |
| set stats_queue_level=on; |
| create resource queue q with (active_statements = 10); |
| create user resqueuetest with resource queue q; |
| set role resqueuetest; |
| select 1; |
| ?column? |
| ---------- |
| 1 |
| (1 row) |
| |
| select n_queries_exec from pg_stat_resqueues where queuename = 'q'; |
| n_queries_exec |
| ---------------- |
| 1 |
| (1 row) |
| |
| reset role; |
| drop role resqueuetest; |
| drop resource queue q; |
| \c contrib_regression |
| drop database toolkit_testdb; |
| drop role toolkit_user1; |
| drop role toolkit_admin; |