summaryrefslogtreecommitdiffstats
path: root/pgcli/pgexecute.py
diff options
context:
space:
mode:
Diffstat (limited to 'pgcli/pgexecute.py')
-rw-r--r--pgcli/pgexecute.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/pgcli/pgexecute.py b/pgcli/pgexecute.py
index 58986aca..d428e840 100644
--- a/pgcli/pgexecute.py
+++ b/pgcli/pgexecute.py
@@ -183,6 +183,8 @@ class PGExecute(object):
SELECT pg_catalog.pg_get_functiondef(f.f_oid)
FROM f'''
+ version_query = "SELECT current_setting('server_version')"
+
def __init__(self, database, user, password, host, port, dsn, **kwargs):
self.dbname = database
self.user = user
@@ -191,8 +193,19 @@ class PGExecute(object):
self.port = port
self.dsn = dsn
self.extra_args = {k: unicode2utf8(v) for k, v in kwargs.items()}
+ self.server_version = None
self.connect()
+ def get_server_version(self):
+ if self.server_version:
+ return self.server_version
+ with self.conn.cursor() as cur:
+ _logger.debug('Version Query. sql: %r', self.version_query)
+ cur.execute(self.version_query)
+ result = cur.fetchone()
+ self.server_version = result[0] if result else ''
+ return self.server_version
+
def connect(self, database=None, user=None, password=None, host=None,
port=None, dsn=None, **kwargs):
@@ -280,18 +293,15 @@ class PGExecute(object):
else:
return json_data
-
def failed_transaction(self):
status = self.conn.get_transaction_status()
return status == ext.TRANSACTION_STATUS_INERROR
-
def valid_transaction(self):
status = self.conn.get_transaction_status()
return (status == ext.TRANSACTION_STATUS_ACTIVE or
status == ext.TRANSACTION_STATUS_INTRANS)
-
def run(self, statement, pgspecial=None, exception_formatter=None,
on_error_resume=False):
"""Execute the sql in the database and return the results.
@@ -707,7 +717,6 @@ class PGExecute(object):
for row in cur:
yield row
-
def casing(self):
"""Yields the most common casing for names used in db functions"""
with self.conn.cursor() as cur: