Thread: ANY/SOME/ALL with noncommutable operators

ANY/SOME/ALL with noncommutable operators

From
Peter Eisentraut
Date:
I can do

'abc' LIKE ANY (ARRAY['a%','b%'])

but not

ANY (ARRAY['abc', 'def']) LIKE '%a'

This seems to be a failing in the SQL standard. You can work around this by 
creating your own operators, but maybe there should be a general solution, as 
there are a lot of noncommutable operators and this example doesn't seem all 
that unuseful in practice.

Comments?


Re: ANY/SOME/ALL with noncommutable operators

From
David Fetter
Date:
On Thu, Jun 19, 2008 at 11:31:02AM +0200, Peter Eisentraut wrote:
> I can do
> 
> 'abc' LIKE ANY (ARRAY['a%','b%'])
> 
> but not
> 
> ANY (ARRAY['abc', 'def']) LIKE '%a'
> 
> This seems to be a failing in the SQL standard. You can work around
> this by creating your own operators, but maybe there should be a
> general solution, as there are a lot of noncommutable operators and
> this example doesn't seem all that unuseful in practice.
> 
> Comments?

It's been proposed several times before, at least once by Yours Truly,
without objections.  I seem to recall it's a SMOP.

Cheers,
David.
-- 
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
Skype: davidfetter      XMPP: david.fetter@gmail.com

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate


Re: ANY/SOME/ALL with noncommutable operators

From
Tom Lane
Date:
Peter Eisentraut <peter_e@gmx.net> writes:
> I can do
> 'abc' LIKE ANY (ARRAY['a%','b%'])

> but not

> ANY (ARRAY['abc', 'def']) LIKE '%a'

> This seems to be a failing in the SQL standard. You can work around this by 
> creating your own operators, but maybe there should be a general solution, as 
> there are a lot of noncommutable operators and this example doesn't seem all 
> that unuseful in practice.

> Comments?

Making the commutator operator where you need it *is* a general solution.
I think there's a syntactic-ambiguity reason why the spec is like that...
        regards, tom lane


Re: ANY/SOME/ALL with noncommutable operators

From
Peter Eisentraut
Date:
Am Donnerstag, 19. Juni 2008 schrieb Tom Lane:
> Making the commutator operator where you need it *is* a general solution.

True.  Let me rephrase.  The problem is that when dealing with operator names 
such as ~~ and &&, coming up with commutator operator names will make a mess 
of readability.

> I think there's a syntactic-ambiguity reason why the spec is like that...

OK, that might need to be analyzed.