Re: Proposal: plpgsql - "for in array" statement
От | Pavel Stehule |
---|---|
Тема | Re: Proposal: plpgsql - "for in array" statement |
Дата | |
Msg-id | AANLkTikCGGi2yNZUr8260UJmFEozpLDBk1=j1ZGEaAjX@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Proposal: plpgsql - "for in array" statement (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: Proposal: plpgsql - "for in array" statement
|
Список | pgsql-hackers |
2010/9/28 Tom Lane <tgl@sss.pgh.pa.us>: > Pavel Stehule <pavel.stehule@gmail.com> writes: >> 2010/9/28 Tom Lane <tgl@sss.pgh.pa.us>: >>> As an example, is this a for-in-query or a >>> for-in-array? >>> >>> FOR v IN (SELECT arraycol FROM tab) LOOP ... > >> This is a subquery - so it is a for-in-array - should return one row >> with one column. > > That's not obvious at all. It's legal right now to write that, and it > will be interpreted as for-in-query. but it has not a sense. It's based on implementation and I am sure, so this isn't documented. Yes, we are able to write a := 10 FROM tab WHERE y = 10 but it is just more bug then required feature. FOR v IN (SELECT FROM) when select returns more than one row is big inconsistency - and this is bug, when this is allowed Regards Pavel Furthermore, there are cases where > it's essential to be able to write a left paren before SELECT, so that > you can control the precedence of UNION/INTERSECT/EXCEPT constructs. > So you're proposing to remove functionality and break existing code in > order to have a "simple" syntax for for-in-array. > > regards, tom lane >
В списке pgsql-hackers по дате отправления: