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