aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/arrayfuncs.c
diff options
context:
space:
mode:
authorNeil Conway <neilc@samurai.com>2005-02-28 03:45:24 +0000
committerNeil Conway <neilc@samurai.com>2005-02-28 03:45:24 +0000
commit484f0464ff4aa5a5fccc1d4e3c0d3518a8f01068 (patch)
treeb939fae4ca3af9e19186f89bcaa00aecae632b05 /src/backend/utils/adt/arrayfuncs.c
parent517872c566217368b370fbf2a7c229529b405042 (diff)
downloadpostgresql-484f0464ff4aa5a5fccc1d4e3c0d3518a8f01068.tar.gz
postgresql-484f0464ff4aa5a5fccc1d4e3c0d3518a8f01068.zip
Implement max() and min() aggregates for array types. Patch from Koju
Iijima, reviewed by Neil Conway. Catalog version number bumped, regression tests updated.
Diffstat (limited to 'src/backend/utils/adt/arrayfuncs.c')
-rw-r--r--src/backend/utils/adt/arrayfuncs.c32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c
index dfdeb0bd160..19db8f4cc96 100644
--- a/src/backend/utils/adt/arrayfuncs.c
+++ b/src/backend/utils/adt/arrayfuncs.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.115 2004/12/31 22:01:21 pgsql Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.116 2005/02/28 03:45:21 neilc Exp $
*
*-------------------------------------------------------------------------
*/
@@ -3387,3 +3387,33 @@ makeMdArrayResult(ArrayBuildState *astate,
return PointerGetDatum(result);
}
+
+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);
+}