Fix stats on PG 9.6. Fixes #1719

pull/3/head
Murtuza Zabuawala 2016-09-22 14:17:47 +01:00 committed by Dave Page
parent 9a56fb552c
commit f48f806657
3 changed files with 65 additions and 2 deletions

View File

@ -656,6 +656,16 @@ 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):
manager = get_driver(PG_DEFAULT_DRIVER).connection_manager(sid)
conn = manager.connection()
@ -665,7 +675,7 @@ class ServerNode(PGChildNodeView):
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
@ -1040,7 +1050,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,

View File

@ -0,0 +1,2 @@
{# Change database server password #}
ALTER USER {{conn|qtIdent(user)}} WITH ENCRYPTED PASSWORD {{encrypted_password|qtLiteral}};

View File

@ -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)