Dynamic multi dimensional arrays in SQL
Hello,
I'm trying to dynamically construct a multi dimensional array where the
outer most array's elements are binary arrays. My initial attempt was
something to the effect of:
SELECT ARRAY(SELECT ARRAY[true::text,false::text] FROM
generate_series(1,2));
My expectation is a result of the form: {{true,false},{true,false}}
But it doesn't work. I get the following error instead: "could not find
array type for data type text[]".
The only way I've gotten it to work is to concatenate strings and
explicitly cast the string to an array. It's ugly. I'm hoping the issue is
that I'm doing something wrong and not that string concatenation or a
procedural language are the only solutions.
Any insight into what I'm doing wrong would be appreciated.
Regards,
Dane
Hi
I am afraid, so this functionality is supported only in unreleased
PostgreSQL 9.5
postgres=# SELECT ARRAY(SELECT ARRAY[true::text,false::text] FROM
generate_series(1,2));
┌─────────────────────────────┐
│ array │
╞═════════════════════════════╡
│ {{true,false},{true,false}} │
└─────────────────────────────┘
(1 row)
It is one from new features there.
In previous versions you can to write own custom aggregate function.
Regards
Pavel Stehule
2015-07-10 16:52 GMT+02:00 Dane Foster <studdugie@gmail.com>:
Show quoted text
Hello,
I'm trying to dynamically construct a multi dimensional array where the
outer most array's elements are binary arrays. My initial attempt was
something to the effect of:
SELECT ARRAY(SELECT ARRAY[true::text,false::text] FROM
generate_series(1,2));My expectation is a result of the form: {{true,false},{true,false}}
But it doesn't work. I get the following error instead: "could not find
array type for data type text[]".The only way I've gotten it to work is to concatenate strings and
explicitly cast the string to an array. It's ugly. I'm hoping the issue is
that I'm doing something wrong and not that string concatenation or a
procedural language are the only solutions.Any insight into what I'm doing wrong would be appreciated.
Regards,
Dane