diff --git a/src/backend/distributed/sql/udfs/citus_backend_gpid/11.0-1.sql b/src/backend/distributed/sql/udfs/citus_backend_gpid/11.0-1.sql index fd7222c04..0d543ef97 100644 --- a/src/backend/distributed/sql/udfs/citus_backend_gpid/11.0-1.sql +++ b/src/backend/distributed/sql/udfs/citus_backend_gpid/11.0-1.sql @@ -1,8 +1,8 @@ -CREATE FUNCTION pg_catalog.citus_backend_gpid() +CREATE FUNCTION pg_catalog.citus_backend_gpid(pid int default NULL) RETURNS BIGINT - LANGUAGE C STRICT + LANGUAGE C AS 'MODULE_PATHNAME',$$citus_backend_gpid$$; -COMMENT ON FUNCTION pg_catalog.citus_backend_gpid() +COMMENT ON FUNCTION pg_catalog.citus_backend_gpid(int) IS 'returns gpid of the current backend'; -GRANT EXECUTE ON FUNCTION pg_catalog.citus_backend_gpid() TO PUBLIC; +GRANT EXECUTE ON FUNCTION pg_catalog.citus_backend_gpid(int) TO PUBLIC; diff --git a/src/backend/distributed/sql/udfs/citus_isolation_test_session_is_blocked/11.1-1.sql b/src/backend/distributed/sql/udfs/citus_isolation_test_session_is_blocked/11.1-1.sql index ce7df8322..c7a33f83e 100644 --- a/src/backend/distributed/sql/udfs/citus_isolation_test_session_is_blocked/11.1-1.sql +++ b/src/backend/distributed/sql/udfs/citus_isolation_test_session_is_blocked/11.1-1.sql @@ -24,14 +24,16 @@ RETURNS boolean AS $$ FROM get_all_active_transactions() WHERE process_id = pBlockedPid; END IF; - FOR r IN select a1.query blocking_query, a2.query waiting_query from citus_internal_global_blocked_processes() p join pg_stat_activity a1 on p.blocking_pid = a1.pid join pg_stat_activity a2 on p.waiting_pid = a2.pid WHERE waiting_global_pid = mBlockedGlobalPid + RAISE WARNING E'DETECTING BLOCKS FOR %', mBlockedGlobalPid; + FOR r IN select p.blocking_global_pid, a1.query blocking_query, p.waiting_global_pid, a2.query waiting_query from citus_internal_global_blocked_processes() p join pg_stat_activity a1 on p.blocking_pid = a1.pid join pg_stat_activity a2 on p.waiting_pid = a2.pid WHERE waiting_global_pid = mBlockedGlobalPid LOOP - RAISE WARNING E'%\nBLOCKS\n%', r.blocking_query, r.waiting_query; + RAISE WARNING E'GPID: % %\nBLOCKS\nGPID: % %', r.blocking_global_pid, r.blocking_query, r.waiting_global_pid, r.waiting_query; END LOOP; RETURN EXISTS ( SELECT 1 FROM citus_internal_global_blocked_processes() WHERE waiting_global_pid = mBlockedGlobalPid + AND blocking_global_pid in (SELECT citus_backend_gpid(pid) FROM unnest(pInterestingPids) pid) ); END; $$ LANGUAGE plpgsql; diff --git a/src/backend/distributed/sql/udfs/citus_isolation_test_session_is_blocked/11.2-1.sql b/src/backend/distributed/sql/udfs/citus_isolation_test_session_is_blocked/11.2-1.sql index bf6cd33f9..9f4261734 100644 --- a/src/backend/distributed/sql/udfs/citus_isolation_test_session_is_blocked/11.2-1.sql +++ b/src/backend/distributed/sql/udfs/citus_isolation_test_session_is_blocked/11.2-1.sql @@ -4,6 +4,7 @@ RETURNS boolean AS $$ mBlockedGlobalPid int8; workerProcessId integer := current_setting('citus.isolation_test_session_remote_process_id'); coordinatorProcessId integer := current_setting('citus.isolation_test_session_process_id'); + r record; BEGIN IF pg_catalog.old_pg_isolation_test_session_is_blocked(pBlockedPid, pInterestingPids) THEN RETURN true; @@ -23,6 +24,12 @@ RETURNS boolean AS $$ FROM get_all_active_transactions() WHERE process_id = pBlockedPid; END IF; + RAISE WARNING E'DETECTING BLOCKS FOR %', mBlockedGlobalPid; + FOR r IN select p.blocking_global_pid, a1.query blocking_query, p.waiting_global_pid, a2.query waiting_query from citus_internal_global_blocked_processes() p join pg_stat_activity a1 on p.blocking_pid = a1.pid join pg_stat_activity a2 on p.waiting_pid = a2.pid + LOOP + RAISE WARNING E'GPID: % %\nBLOCKS\nGPID: % %', r.blocking_global_pid, r.blocking_query, r.waiting_global_pid, r.waiting_query; + END LOOP; + IF current_setting('citus.isolation_test_check_all_blocks') = 'off' THEN RETURN EXISTS ( SELECT 1 FROM citus_internal_global_blocked_processes()