Hi, PFA patch to fix the issue where pgAdmin4 was throwing error when user clicks on Statistics tab when using PG9.6. RM#1719
*Issue:* The column `waiting` has been removed from `pg_stat_activity` View instead two new columns has been added `wait_event` and `wait_event_type`. -- Regards, Murtuza Zabuawala EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
diff --git a/web/pgadmin/browser/server_groups/servers/__init__.py b/web/pgadmin/browser/server_groups/servers/__init__.py index 0b6c6ca..24859e8 100644 --- a/web/pgadmin/browser/server_groups/servers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/__init__.py @@ -662,17 +662,26 @@ class ServerNode(PGChildNodeView): def modified_sql(self, gid, sid): return make_json_response(data='') + def get_template_directory(self, version): + """ This function will check and return template directory + based on postgres verion""" + if version >= 90600: + return '9.6_plus' + elif version >= 90200: + return '9.2_plus' + else: + return '9.1_plus' + def statistics(self, gid, sid): from pgadmin.utils.driver import get_driver manager = get_driver(PG_DEFAULT_DRIVER).connection_manager(sid) conn = manager.connection() - if conn.connected(): status, res = conn.execute_dict( render_template( "/".join([ 'servers/sql', - '9.2_plus' if manager.version >= 90200 else '9.1_plus', + self.get_template_directory(manager.version), 'stats.sql' ]), conn=conn, _=gettext @@ -1053,7 +1062,7 @@ class ServerNode(PGChildNodeView): SQL = render_template("/".join([ 'servers/sql', - '9.2_plus' if manager.version >= 90200 else '9.1_plus', + self.get_template_directory(manager.version), 'change_password.sql' ]), conn=conn, _=gettext, diff --git a/web/pgadmin/browser/server_groups/servers/templates/servers/sql/9.6_plus/change_password.sql b/web/pgadmin/browser/server_groups/servers/templates/servers/sql/9.6_plus/change_password.sql new file mode 100644 index 0000000..dcf0ec1 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/servers/sql/9.6_plus/change_password.sql @@ -0,0 +1,2 @@ +{# Change database server password #} +ALTER USER {{conn|qtIdent(user)}} WITH ENCRYPTED PASSWORD {{encrypted_password|qtLiteral}}; diff --git a/web/pgadmin/browser/server_groups/servers/templates/servers/sql/9.6_plus/stats.sql b/web/pgadmin/browser/server_groups/servers/templates/servers/sql/9.6_plus/stats.sql new file mode 100644 index 0000000..a1dbc37 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/servers/sql/9.6_plus/stats.sql @@ -0,0 +1,51 @@ +SELECT + pid AS "PID", + usename AS {{ conn|qtIdent(_('User')) }}, + datname AS {{ conn|qtIdent(_('Database')) }}, + backend_start AS {{ conn|qtIdent(_('Backend start')) }}, + CASE + WHEN client_hostname IS NOT NULL AND client_hostname != '' THEN + client_hostname || ':' || client_port + WHEN client_addr IS NOT NULL AND client_addr::text != '' THEN + client_addr || ':' || client_port + WHEN client_port = -1 THEN + 'local pipe' + ELSE + 'localhost:' || client_port + END AS {{ conn|qtIdent(_('Client')) }}, + application_name AS {{ conn|qtIdent(_('Application')) }}, + wait_event_type AS {{ conn|qtIdent(_('Wait event type')) }}, + wait_event AS {{ conn|qtIdent(_('Wait event name')) }}, + query AS {{ conn|qtIdent(_('Query')) }}, + query_start AS {{ conn|qtIdent(_('Query start')) }}, + xact_start AS {{ conn|qtIdent(_('Xact start')) }} +FROM + pg_stat_activity sa +WHERE + (SELECT r.rolsuper OR r.oid = sa.usesysid FROM pg_roles r WHERE r.rolname = current_user) +UNION +SELECT + pid AS "PID", + usename AS {{ conn|qtIdent(_('User')) }}, + '' AS {{ conn|qtIdent(_('Database')) }}, + backend_start AS {{ conn|qtIdent(_('Backend start')) }}, + CASE + WHEN client_hostname IS NOT NULL AND client_hostname != '' THEN + client_hostname || ':' || client_port + WHEN client_addr IS NOT NULL AND client_addr::text != '' THEN + client_addr || ':' || client_port + WHEN client_port = -1 THEN + 'local pipe' + ELSE + 'localhost:' || client_port + END AS {{ conn|qtIdent(_('Client')) }}, + {{ _('Streaming Replication')|qtLiteral }} AS {{ conn|qtIdent(_('Application')) }}, + null AS {{ conn|qtIdent(_('Wait event type')) }}, + null AS {{ conn|qtIdent(_('Wait event name')) }}, + state || ' [sync (state: ' || COALESCE(sync_state, '') || ', priority: ' || sync_priority::text || ')] (' || sent_location || ' sent, ' || write_location || ' written, ' || flush_location || ' flushed, ' || replay_location || ' applied)' AS {{ conn|qtIdent(_('Query')) }}, + null AS {{ conn|qtIdent(_('Query start')) }}, + null AS {{ conn|qtIdent(_('Xact start')) }} +FROM + pg_stat_replication sa +WHERE + (SELECT r.rolsuper OR r.oid = sa.usesysid FROM pg_roles r WHERE r.rolname = current_user)
-- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers