Re: Fail to search in array, produced by subquery - is it a bug?
От | Merlin Moncure |
---|---|
Тема | Re: Fail to search in array, produced by subquery - is it a bug? |
Дата | |
Msg-id | BANLkTin0ntd9uRH+1bno-9_OGm0ap8Weyw@mail.gmail.com обсуждение исходный текст |
Ответ на | Fail to search in array, produced by subquery - is it a bug? (Dmitry Fefelov <fozzy@ac-sw.com>) |
Ответы |
Re: Fail to search in array, produced by subquery - is it a bug?
|
Список | pgsql-hackers |
On Tue, Apr 26, 2011 at 10:29 PM, Dmitry Fefelov <fozzy@ac-sw.com> wrote: > 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'\\') > )); well, if you *had* to use any you could rewrite that as: SELECT *FROM core.tag_links ctlWHERE (ctl.tag_id = ANY ( array ( SELECT ct.id FROM core.tags ct WHERE (LOWER(ct.tag)LIKE LOWER(('search tag')::text || '%') ESCAPE E'\\')) )); but you're far better off still using 'where in/'where exists' for this query. You could also expand an array with 'unnest' and use 'where in'. according to the documentation, 'any' only takes array expressions...this feels really awkward but i'm not sure if it's a bug. the semantics of 'any' suck and I prefer not to use it :(. this has come up a bunch of times in the archives (unfortunately, searching for 'any' isn't pleasant) and I think there's an explanation behind the current behavior. Couldn't find it though, so I'm not sure. merlin
В списке pgsql-hackers по дате отправления: