• Bruce Momjian's avatar
    Here is my much-promised patch to let people add UNIQUE constraints after · bd9b3280
    Bruce Momjian authored
    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
    
    Christopher Kings-Lynne
    bd9b3280
command.c 60.4 KB