Thread: 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
Attachment
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 >
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
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