On Mon, 12 Jul 2010 12:13:03 +0200, Magnus Hagander <magnus@hagander.net>
wrote:
> On Sat, Jul 10, 2010 at 22:49, Guillaume Lelarge
<guillaume@lelarge.info>
> wrote:
>> Hi,
>>
>> At least, I finally did it :)
>>
>> This patch adds support for exclusion constraint (9.0 new feature). All
>> examples from Magnus's talk (Beyond Unique) work with this patch.
>>
>> Anyway, this patch needs more work:
>>
>> 1. Displayed in both Constraints and Indexes
>>
>> I don't know why but each exclusion constraint is displayed two times.
>> In the indexes node (where it doesn't belong), and in the constraints
>> node (where it belongs). Any idea why? should not be too hard to find
>> out, but I'm unable to find it right now.
>
> How do we do it with Primary Keys? It's the same thing - both an index
> and a constraint. There should be some code to hide it, thus similar
> code should be needed here.
>
Fixed.
>> 2. Need an icon
>>
>> I copied the unique constraint icon, but we really need another one for
>> this specific constraint.
>>
>> 3. Probably some misunderstanding of the feature
>>
>> Should we propose all operators for the columns? or just the ones
>> related to 1. the operator class 2. the column's type 3. something
else?
>> actually, I propose all of them. But I don't think this is what we
>> should do.
>
> You need to show only commutative operators.
>
> That may be we need to filter on oid=oprcom in pg_operator - I'm not
> sure of that though, I didn't really investigate, but it looks like a
> reasonable thing.
>
> And yes, it should definitely be filtered on the column types.
>
Done. The filter is a simple "(oprleft=<column's type OID> OR
oprright=<column's type OID>) AND oprcom > 0". The list is much lighter now
:)
>> In Magnus's talk, I see that only GiST is supported right now as an
>> index method. In PostgreSQL fine manual, it says that, to be usable, an
>> index should provide the amgettuple method. And I see three of them
>> support this method. Who's wrong? :)
>
> Trust The Fine Manual.
>
> Always remember that some of those things may also have changed since
> my talk :-)
>
OK.
So here is version 2 of this patch. Still lacks the icon. I would draw one
if I had any idea on what to draw :)
--
Guillaume
http://www.postgresql.fr
http://dalibo.com