Relative ordering in array aggregation - Mailing list pgsql-general

From prakashn@uci.edu
Subject Relative ordering in array aggregation
Date
Msg-id 1926da192bd2b048d0b19ba22a55141c.squirrel@webmail.uci.edu
Whole thread Raw
Responses Re: Relative ordering in array aggregation  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-general
I'm using 8.3.3.  I came across the array_accum aggregate function in
the docs:

http://www.postgresql.org/docs/8.3/interactive/xaggr.html

CREATE AGGREGATE array_accum (anyelement)
(
    sfunc = array_append,
    stype = anyarray,
    initcond = '{}'
);


This would be very useful to me, but I have a question about ordering
of values.  If I use more than one array_accum in the same select
clause, is there any reliable correspondence between the order of
elements in the returned arrays?  In other words, if a have a table
foo like so:

   a    b    c
 ----+----+----
 aaa | 12 | a1
 aaa | 13 | a2

and I run

 select a, array_accum (b), array_accum (c) from foo group by a;

then can I expect that the results will always be one of
 aaa | {12, 13} | {a1, a2}
or
 aaa | {13, 12} | {a2, a1}?


OR, could the query also return the arrays as
 aaa | {13, 12} | {a1, a2}
or
 aaa | {12, 13} | {a2, a1}?

If so, would there be any way to enforce the first behaviour?

Thanks,

nishad


pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: pg_dump: schema with OID 58698 does not exist
Next
From: David Kerr
Date:
Subject: Re: pg_dump: schema with OID 58698 does not exist