Re: pretty print for check constraints broken

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Christopher Kings-Lynne <chriskl(at)familyhealth(dot)com(dot)au>
Cc: Patches <pgsql-patches(at)postgresql(dot)org>
Subject: Re: pretty print for check constraints broken
Date: 2003-09-29 18:55:59
Message-ID: 200309291855.h8TItxm03739@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-patches


Patch applied. Thanks.

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

Christopher Kings-Lynne wrote:
> Hi,
>
> The brackets aren't put on the CHECK constraints properly.
>
> Before patch:
>
> test=# select pg_get_constraintdef(oid) from pg_constraint;
> pg_get_constraintdef
> -------------------------------------------------------------------------------------------------
> CHECK (VALUE >= 0)
> CHECK ((((a)::text = 'asdf'::text) OR ((a)::text = 'fdsa'::text)) OR
> ((a)::text = 'dfd'::text))
> PRIMARY KEY (b)
> FOREIGN KEY (a) REFERENCES test2(b)
> UNIQUE (b)
> (5 rows)
>
> test=# select pg_get_constraintdef(oid, true) from pg_constraint;
> pg_get_constraintdef
> -----------------------------------------------------------------------------------
> CHECK VALUE >= 0
> CHECK a::text = 'asdf'::text OR a::text = 'fdsa'::text OR a::text =
> 'dfd'::text
> PRIMARY KEY (b)
> FOREIGN KEY (a) REFERENCES test2(b)
> UNIQUE (b)
> (5 rows)
>
> After patch:
>
> test=# select pg_get_constraintdef(oid) from pg_constraint;
> pg_get_constraintdef
> -------------------------------------------------------------------------------------------------
> CHECK (VALUE >= 0)
> CHECK ((((a)::text = 'asdf'::text) OR ((a)::text = 'fdsa'::text)) OR
> ((a)::text = 'dfd'::text))
> PRIMARY KEY (b)
> FOREIGN KEY (a) REFERENCES test2(b)
> UNIQUE (b)
> (5 rows)
>
> test=# select pg_get_constraintdef(oid, true) from pg_constraint;
> pg_get_constraintdef
> -----------------------------------------------------------------------------------
> CHECK (VALUE >= 0)
> CHECK (a::text = 'asdf'::text OR a::text = 'fdsa'::text OR a::text =
> 'dfd'::text)
> PRIMARY KEY (b)
> FOREIGN KEY (a) REFERENCES test2(b)
> UNIQUE (b)
> (5 rows)
>
> It's important that those brackets are there to (a) match all other
> constraints and (b) so that people can just copy and paste them and it
> will work as SQL.
>
> Chris
>

> Index: src/backend/utils/adt/ruleutils.c
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/backend/utils/adt/ruleutils.c,v
> retrieving revision 1.154
> diff -c -r1.154 ruleutils.c
> *** src/backend/utils/adt/ruleutils.c 15 Sep 2003 20:03:37 -0000 1.154
> --- src/backend/utils/adt/ruleutils.c 26 Sep 2003 07:45:02 -0000
> ***************
> *** 1056,1061 ****
> --- 1056,1065 ----
> */
> appendStringInfo(&buf, "CHECK ");
>
> + /* If we're pretty-printing we need to add brackets */
> + if (prettyFlags != 0)
> + appendStringInfo(&buf, "(");
> +
> /* Fetch constraint source */
> val = heap_getattr(tup, Anum_pg_constraint_conbin,
> RelationGetDescr(conDesc), &isnull);
> ***************
> *** 1093,1098 ****
> --- 1097,1106 ----
>
> /* Append the constraint source */
> appendStringInfoString(&buf, consrc);
> +
> + /* If we're pretty-printing we need to add brackets */
> + if (prettyFlags != 0)
> + appendStringInfo(&buf, ")");
>
> break;
> }

>
> ---------------------------(end of broadcast)---------------------------
> TIP 7: don't forget to increase your free space map settings

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

In response to

Browse pgsql-patches by date

  From Date Subject
Next Message Neil Conway 2003-10-01 00:00:22 introduce "default_use_oids"
Previous Message Bruce Momjian 2003-09-29 18:54:52 Re: tsearch2 memory alloc checks