From ba445ed688a226df4e20ffd9f9a6f7c02ed9f9ee Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 26 Mar 2022 06:36:47 +0100 Subject: Adding upstream version 3.4.1. Signed-off-by: Daniel Baumann --- pgcli/main.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'pgcli/main.py') diff --git a/pgcli/main.py b/pgcli/main.py index a72f708..2d7edfa 100644 --- a/pgcli/main.py +++ b/pgcli/main.py @@ -80,6 +80,8 @@ except ImportError: from getpass import getuser from psycopg2 import OperationalError, InterfaceError + +# pg3: https://www.psycopg.org/psycopg3/docs/api/conninfo.html from psycopg2.extensions import make_dsn, parse_dsn import psycopg2 @@ -1545,6 +1547,14 @@ def format_output(title, cur, headers, status, settings): return data, headers + def format_status(cur, status): + # redshift does not return rowcount as part of status. + # See https://github.com/dbcli/pgcli/issues/1320 + if cur and hasattr(cur, "rowcount") and cur.rowcount is not None: + if status and not status.endswith(str(cur.rowcount)): + status += " %s" % cur.rowcount + return status + output_kwargs = { "sep_title": "RECORD {n}", "sep_character": "-", @@ -1580,12 +1590,15 @@ def format_output(title, cur, headers, status, settings): if hasattr(cur, "description"): column_types = [] for d in cur.description: + # pg3: type_name = cur.adapters.types[d.type_code].name if ( + # pg3: type_name in ("numeric", "float4", "float8") d[1] in psycopg2.extensions.DECIMAL.values or d[1] in psycopg2.extensions.FLOAT.values ): column_types.append(float) if ( + # pg3: type_name in ("int2", "int4", "int8") d[1] == psycopg2.extensions.INTEGER.values or d[1] in psycopg2.extensions.LONGINTEGER.values ): @@ -1614,7 +1627,7 @@ def format_output(title, cur, headers, status, settings): # Only print the status if it's not None and we are not producing CSV if status and table_format != "csv": - output = itertools.chain(output, [status]) + output = itertools.chain(output, [format_status(cur, status)]) return output -- cgit v1.2.3