Skip site navigation (1) Skip section navigation (2)

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-28 01:15:54
Message-ID: 200309280115.h8S1Fsn29448@candle.pha.pa.us (view raw or flat)
Thread:
Lists: pgsql-patches
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:
> 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

pgsql-patches by date

Next:From: Hiroshi InoueDate: 2003-09-28 09:18:11
Subject: Re: pgsql-server/src/backend catalog/index.c comma ...
Previous:From: Bruce MomjianDate: 2003-09-28 00:36:58
Subject: Re: correct NUL vs. NULL usage

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group