/** * Create a window function to calculate values for gaps * * @author: "Stefanie Janine Stölting" * @license: PostgreSQL https://opensource.org/licenses/postgresql */ CREATE OR REPLACE FUNCTION GapFillInternal(s anyelement, v anyelement) RETURNS anyelement AS $$ BEGIN RETURN COALESCE(v, s); END; $$ LANGUAGE PLPGSQL IMMUTABLE; COMMENT ON FUNCTION GapFillInternal(s anyelement, v anyelement) IS 'The function is used to fill gaps in window functions'; -- The Window function needs an aggregate CREATE AGGREGATE GapFill(anyelement) ( SFUNC=GapFillInternal, STYPE = anyelement ) ; COMMENT ON AGGREGATE GapFill(anyelement) IS 'Implements the aggregate function to fill gaps using the function GapFillInternal';