diff --git a/sql/schema.functions.postgresql.sql b/sql/schema.functions.postgresql.sql index 5884c89de1a69689e66ce65ac348fa2763265664..fced8751a07bb6cc2f8f3151bef38cd35f447bca 100644 --- a/sql/schema.functions.postgresql.sql +++ b/sql/schema.functions.postgresql.sql @@ -3,9 +3,20 @@ RETURNS VOID AS $$ BEGIN REFRESH MATERIALIZED VIEW agrometinfo.v_pra_dailyvalue; END; -$$ LANGUAGE plpgsql +$$ LANGUAGE plpgsql SECURITY DEFINER -- Set a secure search_path: trusted schema(s), then 'pg_temp'. SET search_path = agrometinfo, pg_temp; GRANT EXECUTE ON FUNCTION agrometinfo.refresh_materialized_view() TO season; +COMMENT ON FUNCTION refresh_materialized_view() IS 'Secure function to update v_pra_dailyvalue using season role, from insert_indicators function.'; +CREATE OR REPLACE FUNCTION update_comparedvalue() +RETURNS VOID AS $$ +BEGIN + UPDATE dailyvalue AS d + SET comparedvalue=COALESCE(d.computedvalue - n."medianvalue", 0) + FROM normalvalue AS n + WHERE n."indicator"=d.indicator AND n.cell=d.cell AND n.doy=EXTRACT(doy FROM d.date); +END; +$$ LANGUAGE plpgsql; +COMMENT ON FUNCTION update_comparedvalue() IS 'Update the compared value in dailyvalue, useful when normalvalue is changed.';