first() and last() aggregates
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 16 Nov 2005 22:48:56 +0000 (22:48 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 16 Nov 2005 22:48:56 +0000 (22:48 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@2049 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/sql/Pg/020.schema.functions.sql

index 1d1fbf6..64f7be3 100644 (file)
@@ -10,6 +10,26 @@ CREATE OR REPLACE FUNCTION public.call_number_dewey( TEXT ) RETURNS TEXT AS $$
        }
 $$ LANGUAGE 'plperl' STRICT IMMUTABLE;
 
        }
 $$ LANGUAGE 'plperl' STRICT IMMUTABLE;
 
+CREATE OR REPLACE FUNCTION public.first_agg ( anyelement, anyelement ) RETURNS anyelement AS $$
+       SELECT CASE WHEN $1 IS NULL THEN $2 ELSE $1 END;
+$$ LANGUAGE SQL STABLE;
+
+CREATE AGGREGATE public.first (
+       sfunc    = public.first_agg,
+       basetype = anyelement,
+       stype    = anyelement
+);
+
+CREATE OR REPLACE FUNCTION public.last_agg ( anyelement, anyelement ) RETURNS anyelement AS $$
+       SELECT $2;
+$$ LANGUAGE SQL STABLE;
+
+CREATE AGGREGATE public.last (
+       sfunc    = public.last_agg,
+       basetype = anyelement,
+       stype    = anyelement
+);
+
 CREATE OR REPLACE FUNCTION public.text_concat ( TEXT, TEXT ) RETURNS TEXT AS $$
 SELECT
        CASE    WHEN $1 IS NULL
 CREATE OR REPLACE FUNCTION public.text_concat ( TEXT, TEXT ) RETURNS TEXT AS $$
 SELECT
        CASE    WHEN $1 IS NULL