Weird behaviour of = ANY ( SUBQUERY ) ?

Started by hubert depesz lubaczewskiover 16 years ago2 messagesbugs
Jump to latest

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

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: hubert depesz lubaczewski (#1)
Re: Weird behaviour of = ANY ( SUBQUERY ) ?

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