Re: WIP: generalized index constraints

Jeff Davis <pgsql@j-davis.com>

From: Jeff Davis <pgsql@j-davis.com>
To: pgsql-hackers@postgresql.org
Date: 2009-07-14T15:13:51Z
Lists: pgsql-hackers

Attachments

Updated patch attached.

Changes:
 * Added syntax support:
     CREATE INDEX foo_idx ON foo ... (a CONSTRAINT =, b CONSTRAINT &&);
 * More aggressively clear the shared memory entries to avoid 
   unnecessary checks
 * Code cleanup

TODO:
 * When adding constraint to table with data already in it, verify that 
   existing data satisfies constraint.
 * Clean up error messages a little
 * Docs

The following are possible TODO items, but I'd like to get some feedback
first:
 * It seems like an alternative language would be better:
     ALTER TABLE foo ADD INDEX CONSTRAINT optional_name (a =, b &&)
       USING foo_idx;
   This language would be more like a table constraint that happens to 
   use an index. I think it's better because it allows multiple 
   constraints to be enforced by the same index.
 * Right now it only supports index AMs that offer amgettuple, which 
   excludes GIN. Consider adding a crude implementation of gingettuple 
   that just calls gingetbitmap internally (obviously providing no 
   performance advantage over gingetbitmap).

Regards,
	Jeff Davis