Thread: ADD CONSTRAINT UNIQUE patch

ADD CONSTRAINT UNIQUE patch

From
"Christopher Kings-Lynne"
Date:
Hi all,

Here is my much-promised patch to let people add UNIQUE constraints after
table creation time.  Big deal you say - but this patch is the basis of the
next thing which is adding PRIMARY KEYs after table creation time.  (Which
is currently impossible without twiddling catalogs)

Rundown
-------

* I have made the makeObjectName function of analyze.c non-static, and
exported it in analyze.h

* I have included analyze.h and defrem.h into command.c, to support
makingObjectNames and creating indices

* I removed the 'case CONSTR_PRIMARY' clause so that it properly fails and
says you can't add primary keys, rather than just doing nothing and
reporting nothing!!!

* I have modified the docs.

Algorithm
---------

* If name specified is null, search for a new valid constraint name.  I'm
not sure if I should "lock" my generated name somehow tho - should I open
the relation before doing this step?

* Open relation in access exclusive mode

* Check that the constraint does not already exist

* Define the new index

* Warn if they're doubling up on an existing index

Chris

Attachment

RE: ADD CONSTRAINT UNIQUE patch

From
"Christopher Kings-Lynne"
Date:
I haven't seen any replies to this patch - anything?

Chris

> -----Original Message-----
> From: pgsql-patches-owner@postgresql.org
> [mailto:pgsql-patches-owner@postgresql.org]On Behalf Of Christopher
> Kings-Lynne
> Sent: Friday, 24 August 2001 9:41 AM
> To: Patches
> Subject: [PATCHES] ADD CONSTRAINT UNIQUE patch
>
>
> Hi all,
>
> Here is my much-promised patch to let people add UNIQUE constraints after
> table creation time.  Big deal you say - but this patch is the
> basis of the
> next thing which is adding PRIMARY KEYs after table creation time.  (Which
> is currently impossible without twiddling catalogs)
>
> Rundown
> -------
>
> * I have made the makeObjectName function of analyze.c non-static, and
> exported it in analyze.h
>
> * I have included analyze.h and defrem.h into command.c, to support
> makingObjectNames and creating indices
>
> * I removed the 'case CONSTR_PRIMARY' clause so that it properly fails and
> says you can't add primary keys, rather than just doing nothing and
> reporting nothing!!!
>
> * I have modified the docs.
>
> Algorithm
> ---------
>
> * If name specified is null, search for a new valid constraint name.  I'm
> not sure if I should "lock" my generated name somehow tho - should I open
> the relation before doing this step?
>
> * Open relation in access exclusive mode
>
> * Check that the constraint does not already exist
>
> * Define the new index
>
> * Warn if they're doubling up on an existing index
>
> Chris
>


Re: ADD CONSTRAINT UNIQUE patch

From
Bruce Momjian
Date:
Your patch has been added to the PostgreSQL unapplied patches list at:

    http://candle.pha.pa.us/cgi-bin/pgpatches

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

> Hi all,
>
> Here is my much-promised patch to let people add UNIQUE constraints after
> table creation time.  Big deal you say - but this patch is the basis of the
> next thing which is adding PRIMARY KEYs after table creation time.  (Which
> is currently impossible without twiddling catalogs)
>
> Rundown
> -------
>
> * I have made the makeObjectName function of analyze.c non-static, and
> exported it in analyze.h
>
> * I have included analyze.h and defrem.h into command.c, to support
> makingObjectNames and creating indices
>
> * I removed the 'case CONSTR_PRIMARY' clause so that it properly fails and
> says you can't add primary keys, rather than just doing nothing and
> reporting nothing!!!
>
> * I have modified the docs.
>
> Algorithm
> ---------
>
> * If name specified is null, search for a new valid constraint name.  I'm
> not sure if I should "lock" my generated name somehow tho - should I open
> the relation before doing this step?
>
> * Open relation in access exclusive mode
>
> * Check that the constraint does not already exist
>
> * Define the new index
>
> * Warn if they're doubling up on an existing index
>
> Chris

[ Attachment, skipping... ]

[ Attachment, skipping... ]

>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

Re: ADD CONSTRAINT UNIQUE patch

From
Bruce Momjian
Date:
Patch applied.  Thanks.

> Hi all,
>
> Here is my much-promised patch to let people add UNIQUE constraints after
> table creation time.  Big deal you say - but this patch is the basis of the
> next thing which is adding PRIMARY KEYs after table creation time.  (Which
> is currently impossible without twiddling catalogs)
>
> Rundown
> -------
>
> * I have made the makeObjectName function of analyze.c non-static, and
> exported it in analyze.h
>
> * I have included analyze.h and defrem.h into command.c, to support
> makingObjectNames and creating indices
>
> * I removed the 'case CONSTR_PRIMARY' clause so that it properly fails and
> says you can't add primary keys, rather than just doing nothing and
> reporting nothing!!!
>
> * I have modified the docs.
>
> Algorithm
> ---------
>
> * If name specified is null, search for a new valid constraint name.  I'm
> not sure if I should "lock" my generated name somehow tho - should I open
> the relation before doing this step?
>
> * Open relation in access exclusive mode
>
> * Check that the constraint does not already exist
>
> * Define the new index
>
> * Warn if they're doubling up on an existing index
>
> Chris

[ Attachment, skipping... ]

[ Attachment, skipping... ]

>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026