With Postgres 8.4 query like 

SELECT *
  FROM core.tag_links ctl
  WHERE (ctl.tag_id = ANY (
      SELECT array_agg(ct.id) 
        FROM core.tags ct
        WHERE (LOWER(ct.tag) LIKE LOWER(('search tag')::text || '%') ESCAPE
            E'\\')
    ));

produces error:

ERROR:  operator does not exist: bigint = bigint[]
ROW 3:  WHERE (ctl.tag_id = ANY (
                             ^
HINT:  No operator matches the given name and argument type(s). You might need 
to add explicit type casts.

Bith ct.id and ctl.tag_id - of type BIGINT.

Result of 

SELECT array_agg(ct.id) 
        FROM core.tags ct
        WHERE (LOWER(ct.tag) LIKE LOWER(('search tag')::text || '%') ESCAPE
            E'\\');

                                                                         
array_agg                                                                       
                                                       
-----------------------------------------------------------------------------------------------------------------------------
 {54426,53600,54062,187207,187642,54395,53312,51912,128621,19203,6613,54462}
(1 row)

Should ANY (...)  and ALL (...) work when "..." is a subquery, returning 
single ARRAY field, or maybe  I misunderstood something?

Regards, 
Dmitry

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to