Re: could not find array type for data type character varying[]

From: Merlin Moncure <mmoncure(at)gmail(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: could not find array type for data type character varying[]
Date: 2009-10-28 15:44:46
Message-ID: b42b73150910280844u364f9c26sf37e7788b7e38bf@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Wed, Oct 28, 2009 at 11:17 AM, Viktor Rosenfeld
<listuser36(at)googlemail(dot)com> wrote:
> Hi,
>
> I'm trying to aggregate a list of table attributes into an array.
>
> The actual code looks something like this:
>
>  SELECT
>    node_ref AS id,
>    array_agg(DISTINCT ARRAY[namespace, name, value]) as annotations
>  ...
>  GROUP BY id;
>
> I guess the minimal example that reproduces the error is:
>
>  annis=> select array_agg(array['a'::varchar, 'b', 'c']);
>  ERROR:  could not find array type for data type character varying[]
>
> Why doesn't this work?

There are no arrays of arrays. There are however multi dimension
arrays and arrays of composite types (which may contain arrays).
Pick your poison. Also, prefer array() to array_agg if you are not
truly aggregating (hard to tell in this query).

your problem:
postgres=# select array(select current_schemas(true));
ERROR: could not find array type for datatype name[]

possible fix:
postgres=# select array(select row(current_schemas(true)));
?column?
-----------------------------------------------
{"(\"{pg_catalog,public,dblink,pgcrypto}\")"}

another way:
postgres=# select (v[1]).n[1] from (select array(select
row(current_schemas(true))::a) as v) q;
n
------------
pg_catalog
(1 row)

head spinning yet? :-)

merlin

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Ivan Sergio Borgonovo 2009-10-28 15:48:35 Re: still on joining array/inline values was and is: design, ref integrity and performance
Previous Message Sam Mason 2009-10-28 15:36:48 Re: could not find array type for data type character varying[]