Index: doc/src/sgml/func.sgml
===================================================================
RCS file: /usr/local/cvsroot/pgsql-server/doc/src/sgml/func.sgml,v
retrieving revision 1.216
diff -r1.216 func.sgml
7027c7027
< any numeric, string, or date/time type
---
> any array, any numeric, string, or date/time type
7038c7038
< any numeric, string, or date/time type
---
> any array, any numeric, string, or date/time type
Index: src/backend/utils/adt/arrayfuncs.c
===================================================================
RCS file: /usr/local/cvsroot/pgsql-server/src/backend/utils/adt/arrayfuncs.c,v
retrieving revision 1.106
diff -r1.106 arrayfuncs.c
3214a3215,3244
>
> Datum
> array_larger(PG_FUNCTION_ARGS)
> {
> ArrayType *v1,
> *v2,
> *result;
>
> v1 = PG_GETARG_ARRAYTYPE_P(0);
> v2 = PG_GETARG_ARRAYTYPE_P(1);
>
> result = ((array_cmp(fcinfo) > 0) ? v1 : v2);
>
> PG_RETURN_ARRAYTYPE_P(result);
> }
>
> Datum
> array_smaller(PG_FUNCTION_ARGS)
> {
> ArrayType *v1,
> *v2,
> *result;
>
> v1 = PG_GETARG_ARRAYTYPE_P(0);
> v2 = PG_GETARG_ARRAYTYPE_P(1);
>
> result = ((array_cmp(fcinfo) < 0) ? v1 : v2);
>
> PG_RETURN_ARRAYTYPE_P(result);
> }
Index: src/include/catalog/pg_aggregate.h
===================================================================
RCS file: /usr/local/cvsroot/pgsql-server/src/include/catalog/pg_aggregate.h,v
retrieving revision 1.44
diff -r1.44 pg_aggregate.h
110a111
> DATA(insert ( 2050 array_larger - 2277 _null_ ));
128a130
> DATA(insert ( 2051 array_smaller - 2277 _null_ ));
Index: src/include/catalog/pg_proc.h
===================================================================
RCS file: /usr/local/cvsroot/pgsql-server/src/include/catalog/pg_proc.h,v
retrieving revision 1.343
diff -r1.343 pg_proc.h
1036a1037,1042
> DATA(insert OID = 515 ( array_larger PGNSP PGUID 12 f f t f i 2 2277 "2277 2277" _null_ array_larger - _null_ ));
> DESCR("larger of two");
> DATA(insert OID = 516 ( array_smaller PGNSP PGUID 12 f f t f i 2 2277 "2277 2277" _null_ array_smaller - _null_ ));
> DESCR("smaller of two");
>
>
3037a3044
> DATA(insert OID = 2050 ( max PGNSP PGUID 12 t f f f i 1 2277 "2277" _null_ aggregate_dummy - _null_ ));
3054a3062
> DATA(insert OID = 2051 ( min PGNSP PGUID 12 t f f f i 1 2277 "2277" _null_ aggregate_dummy - _null_ ));
Index: src/include/utils/array.h
===================================================================
RCS file: /usr/local/cvsroot/pgsql-server/src/include/utils/array.h,v
retrieving revision 1.48
diff -r1.48 array.h
131a132,133
> extern Datum array_larger(PG_FUNCTION_ARGS);
> extern Datum array_smaller(PG_FUNCTION_ARGS);
Index: src/test/regress/expected/arrays.out
===================================================================
RCS file: /usr/local/cvsroot/pgsql-server/src/test/regress/expected/arrays.out,v
retrieving revision 1.22
diff -r1.22 arrays.out
427a428,480
> CREATE TEMP TABLE arraggtest ( f1 int[], f2 text [][], f3 float[]);
> INSERT INTO arraggtest (f1, f2, f3) VALUES
> ('{1,2,3,4}','{{white, yellow},{pink,orange}}','{2.1,3.3,1.8,1.7,1.6}');
> INSERT INTO arraggtest (f1, f2, f3) VALUES
> ('{1,2,3}','{{black, red},{green,orange}}','{1.6,2.2,2.6,0.4}');
> INSERT INTO arraggtest (f1, f2, f3) VALUES
> ('{2}','{{grey, red},{blue,blue}}','{0.2}');
> INSERT INTO arraggtest (f1, f2, f3) VALUES
> ('{4,2,6,7,8,1}','{{red},{black},{purple},{blue},{blue}}','{1.16, 1.07, 1.09}');
> INSERT INTO arraggtest (f1, f2, f3) VALUES
> ('{3,3,2,4,5,6}','{{pink,white,blue,red,grey,orange}}','{2.1,1.87,1.4,2.2}');
> SELECT f1 from arraggtest order by 1;
> f1
> ---------------
> {1,2,3}
> {1,2,3,4}
> {2}
> {3,3,2,4,5,6}
> {4,2,6,7,8,1}
> (5 rows)
>
> SELECT f2 from arraggtest order by 1;
> f2
> ----------------------------------------
> {{black,red},{green,orange}}
> {{grey,red},{blue,blue}}
> {{pink,white,blue,red,grey,orange}}
> {{red},{black},{purple},{blue},{blue}}
> {{white,yellow},{pink,orange}}
> (5 rows)
>
> SELECT f3 from arraggtest order by 1;
> f3
> -----------------------
> {0.2}
> {1.16,1.07,1.09}
> {1.6,2.2,2.6,0.4}
> {2.1,1.87,1.4,2.2}
> {2.1,3.3,1.8,1.7,1.6}
> (5 rows)
>
> SELECT max(f1), max(f2), max(f3) FROM arraggtest;
> max | max | max
> ---------------+--------------------------------+-----------------------
> {4,2,6,7,8,1} | {{white,yellow},{pink,orange}} | {2.1,3.3,1.8,1.7,1.6}
> (1 row)
>
> SELECT min(f1), min(f2), min(f3) FROM arraggtest;
> min | min | min
> ---------+------------------------------+-------
> {1,2,3} | {{black,red},{green,orange}} | {0.2}
> (1 row)
>
Index: src/test/regress/sql/arrays.sql
===================================================================
RCS file: /usr/local/cvsroot/pgsql-server/src/test/regress/sql/arrays.sql,v
retrieving revision 1.17
diff -r1.17 arrays.sql
194a195,212
>
> CREATE TEMP TABLE arraggtest ( f1 int[], f2 text [][], f3 float[]);
> INSERT INTO arraggtest (f1, f2, f3) VALUES
> ('{1,2,3,4}','{{white, yellow},{pink,orange}}','{2.1,3.3,1.8,1.7,1.6}');
> INSERT INTO arraggtest (f1, f2, f3) VALUES
> ('{1,2,3}','{{black, red},{green,orange}}','{1.6,2.2,2.6,0.4}');
> INSERT INTO arraggtest (f1, f2, f3) VALUES
> ('{2}','{{grey, red},{blue,blue}}','{0.2}');
> INSERT INTO arraggtest (f1, f2, f3) VALUES
> ('{4,2,6,7,8,1}','{{red},{black},{purple},{blue},{blue}}','{1.16, 1.07, 1.09}');
> INSERT INTO arraggtest (f1, f2, f3) VALUES
> ('{3,3,2,4,5,6}','{{pink,white,blue,red,grey,orange}}','{2.1,1.87,1.4,2.2}');
> SELECT f1 from arraggtest order by 1;
> SELECT f2 from arraggtest order by 1;
> SELECT f3 from arraggtest order by 1;
> SELECT max(f1), max(f2), max(f3) FROM arraggtest;
> SELECT min(f1), min(f2), min(f3) FROM arraggtest;
>