Your patch has been added to the PostgreSQL unapplied patches list at:

        http://momjian.postgresql.org/cgi-bin/pgpatches

I will try to apply it within the next 48 hours.

---------------------------------------------------------------------------


Christopher Kings-Lynne wrote:
> Resubmission of patch (for 7.4).
> 
> I fixed the problems I was having what I chatted to you Bruce, I've 
> tested it well and it shouldn't be a problem to apply for 7.4.  It looks 
> really nice with the pretty print stuff!
> 
> Chris
> 
> -------- Original Message --------
> Subject: [PATCHES] Make psql use all pretty print options
> Date: Mon, 29 Sep 2003 12:31:18 +0800 (WST)
> From: Christopher Kings-Lynne <[EMAIL PROTECTED]>
> To: [EMAIL PROTECTED]
> 
> Hi,
> 
> This patch finishes off the work that I did with making view
> definitions use pretty printing.
> 
> It does:
> 
> * Pretty check constraints
> * Pretty index predicates
> * Pretty rule definitions
> * Uppercases PRIMARY KEY and UNIQUE to be consistent with CHECK and
> FOREIGN KEY
> * View rules are improved to match table rules:
> 
>          View "public.v"
>    Column  |  Type   | Modifiers
> ----------+---------+-----------
>   ?column? | integer |
> View definition:
>   SELECT 1;
> Rules:
>   r1 AS
>      ON INSERT TO v DO INSTEAD NOTHING
>   r2 AS
>      ON INSERT TO v DO INSTEAD NOTHING
> 
> Chris
> 
> 
> 

> Index: describe.c
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/bin/psql/describe.c,v
> retrieving revision 1.85
> diff -c -r1.85 describe.c
> *** describe.c        7 Sep 2003 03:43:53 -0000       1.85
> --- describe.c        29 Sep 2003 04:24:56 -0000
> ***************
> *** 857,863 ****
>   
>               printfPQExpBuffer(&buf,
>                 "SELECT i.indisunique, i.indisprimary, a.amname, c2.relname,\n"
> !                                       "  pg_catalog.pg_get_expr(i.indpred, 
> i.indrelid)\n"
>                                                 "FROM pg_catalog.pg_index i, 
> pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_am a\n"
>                                                 "WHERE i.indexrelid = c.oid AND 
> c.oid = '%s' AND c.relam = a.oid\n"
>                                                 "AND i.indrelid = c2.oid",
> --- 857,863 ----
>   
>               printfPQExpBuffer(&buf,
>                 "SELECT i.indisunique, i.indisprimary, a.amname, c2.relname,\n"
> !                                       "  pg_catalog.pg_get_expr(i.indpred, 
> i.indrelid, true)\n"
>                                                 "FROM pg_catalog.pg_index i, 
> pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_am a\n"
>                                                 "WHERE i.indexrelid = c.oid AND 
> c.oid = '%s' AND c.relam = a.oid\n"
>                                                 "AND i.indrelid = c2.oid",
> ***************
> *** 880,888 ****
>                       char       *indpred = PQgetvalue(result, 0, 4);
>   
>                       if (strcmp(indisprimary, "t") == 0)
> !                             printfPQExpBuffer(&tmpbuf, _("primary key, "));
>                       else if (strcmp(indisunique, "t") == 0)
> !                             printfPQExpBuffer(&tmpbuf, _("unique, "));
>                       else
>                               resetPQExpBuffer(&tmpbuf);
>                       appendPQExpBuffer(&tmpbuf, "%s, ", indamname);
> --- 880,888 ----
>                       char       *indpred = PQgetvalue(result, 0, 4);
>   
>                       if (strcmp(indisprimary, "t") == 0)
> !                             printfPQExpBuffer(&tmpbuf, _("PRIMARY KEY, "));
>                       else if (strcmp(indisunique, "t") == 0)
> !                             printfPQExpBuffer(&tmpbuf, _("UNIQUE, "));
>                       else
>                               resetPQExpBuffer(&tmpbuf);
>                       appendPQExpBuffer(&tmpbuf, "%s, ", indamname);
> ***************
> *** 892,898 ****
>                                                         schemaname, indtable);
>   
>                       if (strlen(indpred))
> !                             appendPQExpBuffer(&tmpbuf, ", predicate %s", indpred);
>   
>                       footers = xmalloczero(2 * sizeof(*footers));
>                       footers[0] = xstrdup(tmpbuf.data);
> --- 892,898 ----
>                                                         schemaname, indtable);
>   
>                       if (strlen(indpred))
> !                             appendPQExpBuffer(&tmpbuf, ", predicate (%s)", 
> indpred);
>   
>                       footers = xmalloczero(2 * sizeof(*footers));
>                       footers[0] = xstrdup(tmpbuf.data);
> ***************
> *** 911,917 ****
>               if (tableinfo.hasrules)
>               {
>                       printfPQExpBuffer(&buf,
> !                                                       "SELECT r.rulename\n"
>                                                         "FROM pg_catalog.pg_rewrite 
> r\n"
>                                  "WHERE r.ev_class = '%s' AND r.rulename != 
> '_RETURN'",
>                                                         oid);
> --- 911,917 ----
>               if (tableinfo.hasrules)
>               {
>                       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);
> ***************
> *** 923,949 ****
>               }
>   
>               /* Footer information about a view */
> !             footers = xmalloczero((rule_count + 2) * sizeof(*footers));
>               footers[count_footers] = xmalloc(64 + strlen(view_def));
>               snprintf(footers[count_footers], 64 + strlen(view_def),
>                                _("View definition:\n%s"), view_def);
>               count_footers++;
>   
>               /* print rules */
> !             for (i = 0; i < rule_count; i++)
>               {
> !                     char       *s = _("Rules");
>   
> !                     if (i == 0)
> !                             printfPQExpBuffer(&buf, "%s: %s", s, 
> PQgetvalue(result, i, 0));
> !                     else
> !                             printfPQExpBuffer(&buf, "%*s  %s", (int) strlen(s), 
> "", PQgetvalue(result, i, 0));
> !                     if (i < rule_count - 1)
> !                             appendPQExpBuffer(&buf, ",");
>   
> !                     footers[count_footers++] = xstrdup(buf.data);
>               }
> -             PQclear(result);
>   
>               footers[count_footers] = NULL;
>   
> --- 923,953 ----
>               }
>   
>               /* Footer information about a view */
> !             footers = xmalloczero((rule_count + 3) * sizeof(*footers));
>               footers[count_footers] = xmalloc(64 + strlen(view_def));
>               snprintf(footers[count_footers], 64 + strlen(view_def),
>                                _("View definition:\n%s"), view_def);
>               count_footers++;
>   
>               /* print rules */
> !             if (rule_count > 0)
>               {
> !                     printfPQExpBuffer(&buf, _("Rules:"));
> !                     footers[count_footers++] = xstrdup(buf.data);
> !                     for (i = 0; i < rule_count; i++)
> !                     {
> !                             const char *ruledef;
>   
> !                             /* Everything after "CREATE RULE" is echoed verbatim */
> !                             ruledef = PQgetvalue(result, i, 1);
> !                             ruledef += 12;
>   
> !                             printfPQExpBuffer(&buf, " %s", ruledef);
> ! 
> !                             footers[count_footers++] = xstrdup(buf.data);
> !                     }
> !                     PQclear(result);
>               }
>   
>               footers[count_footers] = NULL;
>   
> ***************
> *** 970,976 ****
>               {
>                       printfPQExpBuffer(&buf,
>                                        "SELECT c2.relname, i.indisprimary, 
> i.indisunique, "
> !                                                       
> "pg_catalog.pg_get_indexdef(i.indexrelid)\n"
>                                                         "FROM pg_catalog.pg_class c, 
> pg_catalog.pg_class c2, pg_catalog.pg_index i\n"
>                                                         "WHERE c.oid = '%s' AND 
> c.oid = i.indrelid AND i.indexrelid = c2.oid\n"
>                                                         "ORDER BY i.indisprimary 
> DESC, i.indisunique DESC, c2.relname",
> --- 974,980 ----
>               {
>                       printfPQExpBuffer(&buf,
>                                        "SELECT c2.relname, i.indisprimary, 
> i.indisunique, "
> !                                                       
> "pg_catalog.pg_get_indexdef(i.indexrelid, 0, true)\n"
>                                                         "FROM pg_catalog.pg_class c, 
> pg_catalog.pg_class c2, pg_catalog.pg_index i\n"
>                                                         "WHERE c.oid = '%s' AND 
> c.oid = i.indrelid AND i.indexrelid = c2.oid\n"
>                                                         "ORDER BY i.indisprimary 
> DESC, i.indisunique DESC, c2.relname",
> ***************
> *** 986,992 ****
>               if (tableinfo.checks)
>               {
>                       printfPQExpBuffer(&buf,
> !                                                       "SELECT consrc, conname\n"
>                                                         "FROM 
> pg_catalog.pg_constraint r\n"
>                                                  "WHERE r.conrelid = '%s' AND 
> r.contype = 'c'",
>                                                         oid);
> --- 990,996 ----
>               if (tableinfo.checks)
>               {
>                       printfPQExpBuffer(&buf,
> !                                               "SELECT 
> pg_catalog.pg_get_constraintdef(oid, true) AS consrc, conname\n"
>                                                         "FROM 
> pg_catalog.pg_constraint r\n"
>                                                  "WHERE r.conrelid = '%s' AND 
> r.contype = 'c'",
>                                                         oid);
> ***************
> *** 1004,1010 ****
>               if (tableinfo.hasrules)
>               {
>                       printfPQExpBuffer(&buf,
> !                                                       "SELECT r.rulename, 
> trim(trailing ';' from pg_catalog.pg_get_ruledef(r.oid))\n"
>                                                         "FROM pg_catalog.pg_rewrite 
> r\n"
>                                                         "WHERE r.ev_class = '%s'",
>                                                         oid);
> --- 1008,1014 ----
>               if (tableinfo.hasrules)
>               {
>                       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);
> ***************
> *** 1049,1055 ****
>               {
>                       printfPQExpBuffer(&buf,
>                                                         "SELECT conname,\n"
> !                                      "  pg_catalog.pg_get_constraintdef(oid) as 
> condef\n"
>                                                         "FROM 
> pg_catalog.pg_constraint r\n"
>                                                  "WHERE r.conrelid = '%s' AND 
> r.contype = 'f'",
>                                                         oid);
> --- 1053,1059 ----
>               {
>                       printfPQExpBuffer(&buf,
>                                                         "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);
> ***************
> *** 1095,1103 ****
>                               /* Label as primary key or unique (but not both) */
>                               appendPQExpBuffer(&buf,
>                                                         strcmp(PQgetvalue(result1, 
> i, 1), "t") == 0
> !                                                               ? _(" primary key,") 
> :
>                                                        (strcmp(PQgetvalue(result1, 
> i, 2), "t") == 0
> !                                                       ? _(" unique,")
>                                                         : ""));
>   
>                               /* Everything after "USING" is echoed verbatim */
> --- 1099,1107 ----
>                               /* Label as primary key or unique (but not both) */
>                               appendPQExpBuffer(&buf,
>                                                         strcmp(PQgetvalue(result1, 
> i, 1), "t") == 0
> !                                                               ? _(" PRIMARY KEY,") 
> :
>                                                        (strcmp(PQgetvalue(result1, 
> i, 2), "t") == 0
> !                                                       ? _(" UNIQUE,")
>                                                         : ""));
>   
>                               /* Everything after "USING" is echoed verbatim */
> ***************
> *** 1119,1125 ****
>                       footers[count_footers++] = xstrdup(buf.data);
>                       for (i = 0; i < check_count; i++)
>                       {
> !                             printfPQExpBuffer(&buf, _("    \"%s\" CHECK %s"),
>                                                                 PQgetvalue(result2, 
> i, 1),
>                                                                 PQgetvalue(result2, 
> i, 0));
>   
> --- 1123,1129 ----
>                       footers[count_footers++] = xstrdup(buf.data);
>                       for (i = 0; i < check_count; i++)
>                       {
> !                             printfPQExpBuffer(&buf, _("    \"%s\" %s"),
>                                                                 PQgetvalue(result2, 
> i, 1),
>                                                                 PQgetvalue(result2, 
> i, 0));
>   

> 
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
      joining column's datatypes do not match

Reply via email to