Thread: Sort psql output

Sort psql output

From
Christopher Kings-Lynne
Date:
This patch makes \d on tables and views sort fk constraints, triggers
and rules alphabetically in the output.  This makes it the same as for
indexes and stops the irritating random or reverse ordering it currently
has.

Chris
Index: src/bin/psql/describe.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/bin/psql/describe.c,v
retrieving revision 1.112
diff -c -r1.112 describe.c
*** src/bin/psql/describe.c    22 Feb 2005 04:40:55 -0000    1.112
--- src/bin/psql/describe.c    14 Mar 2005 07:45:01 -0000
***************
*** 959,965 ****
              printfPQExpBuffer(&buf,
                                "SELECT r.rulename, trim(trailing ';' from pg_catalog.pg_get_ruledef(r.oid, true))\n"
                                "FROM pg_catalog.pg_rewrite r\n"
!                    "WHERE r.ev_class = '%s' AND r.rulename != '_RETURN'",
                                oid);
              result = PSQLexec(buf.data, false);
              if (!result)
--- 959,965 ----
              printfPQExpBuffer(&buf,
                                "SELECT r.rulename, trim(trailing ';' from pg_catalog.pg_get_ruledef(r.oid, true))\n"
                                "FROM pg_catalog.pg_rewrite r\n"
!                    "WHERE r.ev_class = '%s' AND r.rulename != '_RETURN' ORDER BY 1",
                                oid);
              result = PSQLexec(buf.data, false);
              if (!result)
***************
*** 1040,1046 ****
                           "pg_catalog.pg_get_constraintdef(r.oid, true), "
                                "conname\n"
                                "FROM pg_catalog.pg_constraint r\n"
!                            "WHERE r.conrelid = '%s' AND r.contype = 'c'",
                                oid);
              result2 = PSQLexec(buf.data, false);
              if (!result2)
--- 1040,1046 ----
                           "pg_catalog.pg_get_constraintdef(r.oid, true), "
                                "conname\n"
                                "FROM pg_catalog.pg_constraint r\n"
!                            "WHERE r.conrelid = '%s' AND r.contype = 'c' ORDER BY 1",
                                oid);
              result2 = PSQLexec(buf.data, false);
              if (!result2)
***************
*** 1058,1064 ****
              printfPQExpBuffer(&buf,
                                "SELECT r.rulename, trim(trailing ';' from pg_catalog.pg_get_ruledef(r.oid, true))\n"
                                "FROM pg_catalog.pg_rewrite r\n"
!                               "WHERE r.ev_class = '%s'",
                                oid);
              result3 = PSQLexec(buf.data, false);
              if (!result3)
--- 1058,1064 ----
              printfPQExpBuffer(&buf,
                                "SELECT r.rulename, trim(trailing ';' from pg_catalog.pg_get_ruledef(r.oid, true))\n"
                                "FROM pg_catalog.pg_rewrite r\n"
!                               "WHERE r.ev_class = '%s' ORDER BY 1",
                                oid);
              result3 = PSQLexec(buf.data, false);
              if (!result3)
***************
*** 1082,1088 ****
                                " OR NOT EXISTS"
                                "  (SELECT 1 FROM pg_catalog.pg_depend d "
                                "   JOIN pg_catalog.pg_constraint c ON (d.refclassid = c.tableoid AND d.refobjid =
c.oid)" 
!                               "   WHERE d.classid = t.tableoid AND d.objid = t.oid AND d.deptype = 'i' AND c.contype
='f'))", 
                                oid);
              result4 = PSQLexec(buf.data, false);
              if (!result4)
--- 1082,1089 ----
                                " OR NOT EXISTS"
                                "  (SELECT 1 FROM pg_catalog.pg_depend d "
                                "   JOIN pg_catalog.pg_constraint c ON (d.refclassid = c.tableoid AND d.refobjid =
c.oid)" 
!                               "   WHERE d.classid = t.tableoid AND d.objid = t.oid AND d.deptype = 'i' AND c.contype
='f'))" 
!                               "   ORDER BY 1",
                                oid);
              result4 = PSQLexec(buf.data, false);
              if (!result4)
***************
*** 1103,1109 ****
                                "SELECT conname,\n"
                 "  pg_catalog.pg_get_constraintdef(oid, true) as condef\n"
                                "FROM pg_catalog.pg_constraint r\n"
!                            "WHERE r.conrelid = '%s' AND r.contype = 'f'",
                                oid);
              result5 = PSQLexec(buf.data, false);
              if (!result5)
--- 1104,1110 ----
                                "SELECT conname,\n"
                 "  pg_catalog.pg_get_constraintdef(oid, true) as condef\n"
                                "FROM pg_catalog.pg_constraint r\n"
!                            "WHERE r.conrelid = '%s' AND r.contype = 'f' ORDER BY 1",
                                oid);
              result5 = PSQLexec(buf.data, false);
              if (!result5)

Re: Sort psql output

From
Neil Conway
Date:
Christopher Kings-Lynne wrote:
> This patch makes \d on tables and views sort fk constraints, triggers
> and rules alphabetically in the output.  This makes it the same as for
> indexes and stops the irritating random or reverse ordering it currently
> has.

I'll apply this to HEAD later today, barring any objections.

-Neil

Re: Sort psql output

From
Neil Conway
Date:
Christopher Kings-Lynne wrote:
> This patch makes \d on tables and views sort fk constraints, triggers
> and rules alphabetically in the output.  This makes it the same as for
> indexes and stops the irritating random or reverse ordering it currently
> has.

Thanks, applied.

-Neil