v2-0001-Simplify-backend-terminate-and-wait-logic-in-post.patch
application/octet-stream
Filename: v2-0001-Simplify-backend-terminate-and-wait-logic-in-post.patch
Type: application/octet-stream
Part: 0
Patch
Format: format-patch
Series: patch v2-0001
Subject: Simplify backend terminate and wait logic in postgres_fdw test
| File | + | − |
|---|---|---|
| contrib/postgres_fdw/expected/postgres_fdw.out | 8 | 5 |
| contrib/postgres_fdw/sql/postgres_fdw.sql | 8 | 5 |
From 78bee027fee0ef1ae5e4873c293d0412197c4ac6 Mon Sep 17 00:00:00 2001
From: Bharath Rupireddy <bharath.rupireddy@enterprisedb.com>
Date: Thu, 8 Apr 2021 18:23:16 +0530
Subject: [PATCH v2] Simplify backend terminate and wait logic in postgres_fdw
test
With the recent commit aaf0432572 which introduced a waiting
capability for pg_teriminate_backend function, we can simply
backend terminate and wait logic in postgres_fdw.sql tests.
---
contrib/postgres_fdw/expected/postgres_fdw.out | 13 ++++++++-----
contrib/postgres_fdw/sql/postgres_fdw.sql | 13 ++++++++-----
2 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/contrib/postgres_fdw/expected/postgres_fdw.out b/contrib/postgres_fdw/expected/postgres_fdw.out
index 7f69fa0054..97b9431021 100644
--- a/contrib/postgres_fdw/expected/postgres_fdw.out
+++ b/contrib/postgres_fdw/expected/postgres_fdw.out
@@ -9198,13 +9198,16 @@ WARNING: there is no transaction in progress
-- Terminate the backend having the specified application_name and wait for
-- the termination to complete.
CREATE OR REPLACE PROCEDURE terminate_backend_and_wait(appname text) AS $$
+DECLARE
+ pid_v int;
+ is_terminated bool := false;
BEGIN
- PERFORM pg_terminate_backend(pid) FROM pg_stat_activity
- WHERE application_name = appname;
+ SELECT pid INTO pid_v FROM pg_stat_activity
+ WHERE application_name = appname;
+ SELECT * INTO is_terminated FROM pg_terminate_backend(pid_v);
LOOP
- PERFORM * FROM pg_stat_activity WHERE application_name = appname;
- EXIT WHEN NOT FOUND;
- PERFORM pg_sleep(1), pg_stat_clear_snapshot();
+ EXIT WHEN is_terminated;
+ SELECT * INTO is_terminated FROM pg_wait_for_backend_termination(pid_v, 1000);
END LOOP;
END;
$$ LANGUAGE plpgsql;
diff --git a/contrib/postgres_fdw/sql/postgres_fdw.sql b/contrib/postgres_fdw/sql/postgres_fdw.sql
index 7487096eac..accc904c3e 100644
--- a/contrib/postgres_fdw/sql/postgres_fdw.sql
+++ b/contrib/postgres_fdw/sql/postgres_fdw.sql
@@ -2789,13 +2789,16 @@ ROLLBACK;
-- Terminate the backend having the specified application_name and wait for
-- the termination to complete.
CREATE OR REPLACE PROCEDURE terminate_backend_and_wait(appname text) AS $$
+DECLARE
+ pid_v int;
+ is_terminated bool := false;
BEGIN
- PERFORM pg_terminate_backend(pid) FROM pg_stat_activity
- WHERE application_name = appname;
+ SELECT pid INTO pid_v FROM pg_stat_activity
+ WHERE application_name = appname;
+ SELECT * INTO is_terminated FROM pg_terminate_backend(pid_v);
LOOP
- PERFORM * FROM pg_stat_activity WHERE application_name = appname;
- EXIT WHEN NOT FOUND;
- PERFORM pg_sleep(1), pg_stat_clear_snapshot();
+ EXIT WHEN is_terminated;
+ SELECT * INTO is_terminated FROM pg_wait_for_backend_termination(pid_v, 1000);
END LOOP;
END;
$$ LANGUAGE plpgsql;
--
2.25.1