To extract aggregate definitions can select from `pg_aggregate` SQL for current aggregates I'm using now: ``` CREATE OR REPLACE FUNCTION public.jsonb_concat( state jsonb, concat jsonb) RETURNS jsonb AS $BODY$ BEGIN --RAISE notice 'state is %', state; --RAISE notice 'concat is %', concat; RETURN state || concat; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; CREATE OR REPLACE FUNCTION public.jsonb_concat_distinct_arr( state jsonb, concat jsonb) RETURNS jsonb AS $BODY$ BEGIN --RAISE notice 'state is %', state; --RAISE notice 'concat is %', concat; RETURN SELECT jsonb_agg(state || concat; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; DROP AGGREGATE IF EXISTS public.jsonb_arr_aggc(jsonb); CREATE AGGREGATE public.jsonb_arr_aggc(jsonb) ( SFUNC=public.jsonb_concat, STYPE=jsonb, INITCOND='[]' ); DROP AGGREGATE IF EXISTS public.jsonb_obj_aggc(jsonb); CREATE AGGREGATE public.jsonb_obj_aggc(jsonb) ( SFUNC=public.jsonb_concat, STYPE=jsonb, INITCOND='{}' ); ```