From 7653ea9c1fc7ef2056baea862d5766c2d0290851 Mon Sep 17 00:00:00 2001 From: Irina Truong Date: Fri, 20 Jul 2018 15:47:40 -0700 Subject: Print server version as part of welcome message. --- pgcli/main.py | 1 + pgcli/pgexecute.py | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/pgcli/main.py b/pgcli/main.py index 6bdf9dff..2babcfb7 100644 --- a/pgcli/main.py +++ b/pgcli/main.py @@ -599,6 +599,7 @@ class PGCli(object): self.cli = self._build_cli(history) if not self.less_chatty: + print('Server: PostgreSQL', self.pgexecute.get_server_version()) print('Version:', __version__) print('Chat: https://gitter.im/dbcli/pgcli') print('Mail: https://groups.google.com/forum/#!forum/pgcli') 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: -- cgit v1.2.3