Joe Conway <[EMAIL PROTECTED]> writes: > Sorry for the slow response -- I'm at the airport just heading home from > a marathon 30 day business trip.
Yow. Hope you get some time off... > Tom Lane wrote: >> "Vitali Stupin" <[EMAIL PROTECTED]> writes: >>> The error "invalid memory alloc request size 4294967293" apears when >>> selecting array of empty arrays: >>> select ARRAY['{}'::text[],'{}'::text[]]; >> >> Joe, what do you think about this? Offhand I think that the only >> workable definition is that this case yields another zero-dimensional >> array, but maybe there is another choice? > I think producing another zero-dimensional result is the only way that > makes sense unless/until we change multidimensional arrays to really be > arrays of array-datatype elements. Right now they're two different things. On looking at the code, I notice that this somewhat-related case works: regression=# select array[null::text[], null::text[]]; array ------- {} (1 row) The reason is that null inputs are just ignored in ExecEvalArray. So one pretty simple patch would be to ignore zero-dimensional inputs too. This would have implications for mixed inputs though: instead of regression=# select array['{}'::text[], '{a,b,c}'::text[]]; ERROR: multidimensional arrays must have array expressions with matching dimensions you'd get behavior like regression=# select array[null::text[], '{a,b,c}'::text[]]; array ----------- {{a,b,c}} (1 row) Which of these seems more sane? regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 6: explain analyze is your friend