From a449be784e8fa6ee719aa97bcb8b5e514fc7150e Mon Sep 17 00:00:00 2001 From: Akshay Joshi Date: Mon, 24 Apr 2017 13:56:01 +0100 Subject: [PATCH] Initial support for PG 10.0, per #2214 (missed some files) --- .../sequence/sql/10.0_plus/get_def.sql | 11 +++++ .../connect/sql/10.0_plus/check_recovery.sql | 9 ++++ .../servers/tests/test_check_recovery.py | 46 +++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequence/sql/10.0_plus/get_def.sql create mode 100644 web/pgadmin/browser/server_groups/servers/templates/connect/sql/10.0_plus/check_recovery.sql create mode 100644 web/pgadmin/browser/server_groups/servers/tests/test_check_recovery.py diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequence/sql/10.0_plus/get_def.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequence/sql/10.0_plus/get_def.sql new file mode 100644 index 000000000..9ecb461d7 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequence/sql/10.0_plus/get_def.sql @@ -0,0 +1,11 @@ +SELECT + last_value, + seqmin AS min_value, + seqmax AS max_value, + seqstart AS start_value, + seqcache AS cache_value, + seqcycle AS is_cycled, + seqincrement AS increment_by, + is_called +FROM pg_sequence, {{ conn|qtIdent(data.schema) }}.{{ conn|qtIdent(data.name) }} +WHERE seqrelid = '{{ conn|qtIdent(data.schema) }}.{{ conn|qtIdent(data.name) }}'::regclass diff --git a/web/pgadmin/browser/server_groups/servers/templates/connect/sql/10.0_plus/check_recovery.sql b/web/pgadmin/browser/server_groups/servers/templates/connect/sql/10.0_plus/check_recovery.sql new file mode 100644 index 000000000..fd27aaab7 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/connect/sql/10.0_plus/check_recovery.sql @@ -0,0 +1,9 @@ +SELECT CASE WHEN usesuper + THEN pg_is_in_recovery() + ELSE FALSE + END as inrecovery, + CASE WHEN usesuper AND pg_is_in_recovery() + THEN pg_is_wal_replay_paused() + ELSE FALSE + END as isreplaypaused +FROM pg_user WHERE usename=current_user \ No newline at end of file diff --git a/web/pgadmin/browser/server_groups/servers/tests/test_check_recovery.py b/web/pgadmin/browser/server_groups/servers/tests/test_check_recovery.py new file mode 100644 index 000000000..870f2a4b8 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/tests/test_check_recovery.py @@ -0,0 +1,46 @@ +import os + +from pgadmin.utils.route import BaseTestGenerator +from regression.python_test_utils import test_utils + + +class TestCheckRecovery(BaseTestGenerator): + + scenarios = [ + ("Test for check recovery", dict()) + ] + + def runTest(self): + + cursor = test_utils.get_db_connection(self.server['db'], + self.server['username'], + self.server['db_password'], + self.server['host'], + self.server['port']).cursor() + + if cursor is not None and cursor.connection is not None: + server_version = cursor.connection.server_version + if server_version >= 100000: + version = '10.0_plus' + elif server_version >= 90000: + version = '9.0_plus' + else: + version = 'default' + + template_file = os.path.join( + os.path.dirname(__file__), "../templates/connect/sql", version, + "check_recovery.sql" + ) + + cursor.execute(open(template_file, 'r').read()) + fetch_result = cursor.fetchall() + + first_row = {} + for index, description in enumerate(cursor.description): + first_row[description.name] = fetch_result[0][index] + + in_recovery = first_row['inrecovery'] + wal_paused = first_row['isreplaypaused'] + + self.assertEqual(False, in_recovery) + self.assertEqual(False, wal_paused)