Pavel Stehule <pavel.steh...@gmail.com> writes: > 2010/12/17 Tom Lane <t...@sss.pgh.pa.us>: >> Furthermore, it's underspecified: who's to say how many dimensions of >> the array are supposed to get sliced off? Â There's no reasonable place >> to extend this syntax to specify that. Â It will also be inconsistent >> for "foreach scalar in array" to iterate element-by-element no matter >> how many dimensions array has, while "foreach array in array" does >> something different from that.
> it reduce just one dimension. Now I expect, and I think so it is > correct, so user knows a used dimension. Just doesn't know a data. So > user can to decide and fill correct type. The design strictly remove > any U.I. from design. So using a incorect type is bug. In other words, your proposal is error-prone to use, restricted in what it can do, and incapable of being extended later without breaking things. If there is some redeeming social value to set against those problems, I'm not seeing it. What I think we should have is FOREACH scalar-variable IN ARRAY array-expression which iterates element by element regardless of how many dimensions the array has. Then there should be some other syntax for iterating over slices, and we should give some thought to being able to specify how "deep" the slice is. I can definitely think of use cases for pulling off either 1 dimension at a time (so you get vectors) or N-1 dimensions at a time, and it's not out of the realm of reason to want intermediate cases. Maybe FOR_EACH scalar-variable IN ARRAY array-expression FOR_SLICE array-variable [DEPTH n] IN ARRAY array-expression Or I guess you could use the same leading keyword if you make the depth specification mandatory for the slice case: FOREACH scalar-variable IN ARRAY array-expression FOREACH array-variable SLICE n IN ARRAY array-expression That might be a better idea since it avoids the inevitable argument over whether the default slice depth should be 1 dimension or N-1 dimensions. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers