From 9ea9918e37689fbc9ed43532b8828652b5ea90cd Mon Sep 17 00:00:00 2001 From: Itagaki Takahiro Date: Mon, 1 Feb 2010 03:14:45 +0000 Subject: Add string_agg aggregate functions. The one argument version concatenates the input values into a string. The two argument version also does the same thing, but inserts delimiters between elements. Original patch by Pavel Stehule, reviewed by David E. Wheeler and me. --- src/test/regress/expected/aggregates.out | 31 +++++++++++++++++++++++++++++++ src/test/regress/sql/aggregates.sql | 7 +++++++ 2 files changed, 38 insertions(+) (limited to 'src/test') diff --git a/src/test/regress/expected/aggregates.out b/src/test/regress/expected/aggregates.out index 9669a52fbe..2460d9dfd6 100644 --- a/src/test/regress/expected/aggregates.out +++ b/src/test/regress/expected/aggregates.out @@ -799,3 +799,34 @@ select aggfns(distinct a,a,c order by a,b) ERROR: in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list LINE 1: select aggfns(distinct a,a,c order by a,b) ^ +-- string_agg tests +select string_agg(a) from (values('aaaa'),('bbbb'),('cccc')) g(a); + string_agg +-------------- + aaaabbbbcccc +(1 row) + +select string_agg(a,',') from (values('aaaa'),('bbbb'),('cccc')) g(a); + string_agg +---------------- + aaaa,bbbb,cccc +(1 row) + +select string_agg(a,',') from (values('aaaa'),(null),('bbbb'),('cccc')) g(a); + string_agg +---------------- + aaaa,bbbb,cccc +(1 row) + +select string_agg(a,',') from (values(null),(null),('bbbb'),('cccc')) g(a); + string_agg +------------ + bbbb,cccc +(1 row) + +select string_agg(a,',') from (values(null),(null)) g(a); + string_agg +------------ + +(1 row) + diff --git a/src/test/regress/sql/aggregates.sql b/src/test/regress/sql/aggregates.sql index 18f2e57b72..daa89167a2 100644 --- a/src/test/regress/sql/aggregates.sql +++ b/src/test/regress/sql/aggregates.sql @@ -355,3 +355,10 @@ select aggfns(distinct a,b,c order by a,b,i,c) from (values (1,1,'foo')) v(a,b,c), generate_series(1,2) i; select aggfns(distinct a,a,c order by a,b) from (values (1,1,'foo')) v(a,b,c), generate_series(1,2) i; + +-- string_agg tests +select string_agg(a) from (values('aaaa'),('bbbb'),('cccc')) g(a); +select string_agg(a,',') from (values('aaaa'),('bbbb'),('cccc')) g(a); +select string_agg(a,',') from (values('aaaa'),(null),('bbbb'),('cccc')) g(a); +select string_agg(a,',') from (values(null),(null),('bbbb'),('cccc')) g(a); +select string_agg(a,',') from (values(null),(null)) g(a); -- cgit v1.2.3