Thread: Weird behaviour of = ANY ( SUBQUERY ) ?

Weird behaviour of = ANY ( SUBQUERY ) ?

From
hubert depesz lubaczewski
Date:
Version - 8.5devel.

Why this doesn't work:

# SELECT 1 = ANY( ( SELECT '{1,2}'::int4[]) );
ERROR:  operator does not exist: integer = integer[]
LINE 1: SELECT 1 = ANY( ( SELECT '{1,2}'::int4[]) );
                 ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

direct usage of array of course works:
# select 1 = any ( '{1,2}'::int4[] );
 ?column?
----------
 t
(1 row)

depesz

--
Linkedin: http://www.linkedin.com/in/depesz  /  blog: http://www.depesz.com/
jid/gtalk: depesz@depesz.com / aim:depeszhdl / skype:depesz_hdl / gg:6749007

Re: Weird behaviour of = ANY ( SUBQUERY ) ?

From
Tom Lane
Date:
hubert depesz lubaczewski <depesz@depesz.com> writes:
> Why this doesn't work:

> # SELECT 1 = ANY( ( SELECT '{1,2}'::int4[]) );
> ERROR:  operator does not exist: integer = integer[]
> LINE 1: SELECT 1 = ANY( ( SELECT '{1,2}'::int4[]) );
>                  ^

Why would you expect it to work?  The datatypes aren't compatible.

> direct usage of array of course works:
> # select 1 = any ( '{1,2}'::int4[] );

ANY with a sub-SELECT and ANY without one are two completely different
things.

            regards, tom lane