v1-0001-psql-add-size-based-sorting-for-tables-and-indexes.patch
application/octet-stream
Filename: v1-0001-psql-add-size-based-sorting-for-tables-and-indexes.patch
Type: application/octet-stream
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v1-0001
Subject: psql: add size-based sorting options (O/o) for tables and indexes
| File | + | − |
|---|---|---|
| src/bin/psql/describe.c | 23 | 1 |
| src/bin/psql/help.c | 2 | 2 |
From 633b8ac3ce5d021fb31b16fa76744992bafcd2be Mon Sep 17 00:00:00 2001
From: "M.Atif Ceylan" <mehmet@atifceylan.com>
Date: Wed, 26 Nov 2025 00:21:50 +0300
Subject: [PATCH] psql: add size-based sorting options (O/o) for tables and indexes
---
src/bin/psql/describe.c | 24 +++++++++++++++++++++++-
src/bin/psql/help.c | 4 ++--
2 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index 36f24502842..33eb5e799c7 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -4194,7 +4194,29 @@ listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSys
return false;
}
- appendPQExpBufferStr(&buf, "ORDER BY 1,2;");
+ /*
+ * Append ORDER BY clause to the query buffer.
+ *
+ * If the 'o' or 'O' flags are present in tabtypes (e.g., \dtO+)
+ * sort the results by relation size.
+ *
+ * - 'o': Sort by size ascending.
+ * - 'O': Sort by size descending.
+ * - Default: Sort by schema name (1) and relation name (2).
+ */
+ if (showTables || showIndexes)
+ {
+ if (strchr(tabtypes, 'o') != NULL)
+ appendPQExpBufferStr(&buf, "ORDER BY pg_catalog.pg_table_size(c.oid), 1, 2;");
+ else if (strchr(tabtypes, 'O') != NULL)
+ appendPQExpBufferStr(&buf, "ORDER BY pg_catalog.pg_table_size(c.oid) DESC, 1, 2;");
+ else
+ appendPQExpBufferStr(&buf, "ORDER BY 1,2;");
+ }
+ else
+ {
+ appendPQExpBufferStr(&buf, "ORDER BY 1,2;");
+ }
res = PSQLexec(buf.data);
termPQExpBuffer(&buf);
diff --git a/src/bin/psql/help.c b/src/bin/psql/help.c
index ec0b49b957b..f58b66b2aa0 100644
--- a/src/bin/psql/help.c
+++ b/src/bin/psql/help.c
@@ -246,7 +246,7 @@ slashUsage(unsigned short int pager)
HELP0(" \\dFp[x+] [PATTERN] list text search parsers\n");
HELP0(" \\dFt[x+] [PATTERN] list text search templates\n");
HELP0(" \\dg[Sx+] [PATTERN] list roles\n");
- HELP0(" \\di[Sx+] [PATTERN] list indexes\n");
+ HELP0(" \\di[OoSx+] [PATTERN] list indexes\n");
HELP0(" \\dl[x+] list large objects, same as \\lo_list\n");
HELP0(" \\dL[Sx+] [PATTERN] list procedural languages\n");
HELP0(" \\dm[Sx+] [PATTERN] list materialized views\n");
@@ -262,7 +262,7 @@ slashUsage(unsigned short int pager)
HELP0(" \\dRp[x+] [PATTERN] list replication publications\n");
HELP0(" \\dRs[x+] [PATTERN] list replication subscriptions\n");
HELP0(" \\ds[Sx+] [PATTERN] list sequences\n");
- HELP0(" \\dt[Sx+] [PATTERN] list tables\n");
+ HELP0(" \\dt[OoSx+] [PATTERN] list tables\n");
HELP0(" \\dT[Sx+] [PATTERN] list data types\n");
HELP0(" \\du[Sx+] [PATTERN] list roles\n");
HELP0(" \\dv[Sx+] [PATTERN] list views\n");
--
2.39.5 (Apple Git-154)