summaryrefslogtreecommitdiffstats
path: root/pgcli/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'pgcli/main.py')
-rw-r--r--pgcli/main.py15
1 files changed, 14 insertions, 1 deletions
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