Re: operator exclusion constraints

Simon Riggs <simon@2ndquadrant.com>

From: Simon Riggs <simon@2ndQuadrant.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Jeff Davis <pgsql@j-davis.com>, Peter Eisentraut <peter_e@gmx.net>, pgsql-hackers@postgresql.org
Date: 2009-11-02T18:28:09Z
Lists: pgsql-hackers
On Mon, 2009-11-02 at 13:12 -0500, Tom Lane wrote:
> Jeff Davis <pgsql@j-davis.com> writes:
> > On Mon, 2009-11-02 at 08:25 +0000, Peter Eisentraut wrote:
> >> I think the word CHECK should be avoided completely in this syntax, to
> >> avoid confusion with CHECK constraints.
> 
> > This is an easy change. I don't have a strong opinion, so the only thing
> > I can think to do is ask for a vote.
> 
> > Do you have a specific alternative in mind? How about just "WITH"?
> 
> I think we had that discussion already, and rejected using "WITH" by
> itself because it was so totally devoid of suggestion of what it was
> the system would do "with" the expression or operator.
> 
> If we don't want to introduce a new reserved word it's difficult to
> find alternatives :-(.  One thing that just came to mind is that we
> might be able to do something like
> 
> 	EXCLUSION (expr CHECK NOT operator)
> or
> 	EXCLUSION (expr CONSTRAIN NOT operator)
> 
> I like the "NOT" here because "CHECK NOT =" seems to convey pretty
> clearly what it is you are checking for.  Because NOT is reserved and
> can't appear as a connective, I think that this approach might allow
> a non-reserved leading word, thus possibly the second variant would
> work without reserving CONSTRAIN.  I have not tested whether bison
> agrees with me though ;-).  In any case I think "CHECK NOT =" reads
> pretty well, and don't feel a strong urge to use some other word there.

Yep, like the NOT.

Other ideas
	EXCLUSION (expr NOT operator)

	CONSTRAINT (expr NOT operator ALL ROWS)

-- 
 Simon Riggs           www.2ndQuadrant.com