| 123456789101112131415161718 |
- -- Patch only the version predicates, retaining deployed function hotfixes.
- -- API updatedAt uses JavaScript Date, which truncates PostgreSQL microseconds.
- DO $$
- DECLARE fn regprocedure; definition text; old_predicate text; new_predicate text;
- BEGIN
- FOREACH fn IN ARRAY ARRAY[
- 'xs_schedule_save(text,text,jsonb,jsonb,text,text,text)'::regprocedure,
- 'xs_schedule_cancel(text,text,boolean,text,text,text)'::regprocedure
- ] LOOP
- definition=pg_get_functiondef(fn);
- old_predicate=CASE WHEN fn::text LIKE 'xs_schedule_save(%' THEN 'old_c."updatedAt"<>expected::timestamptz' ELSE 'c."updatedAt"<>expected::timestamptz' END;
- new_predicate=replace(old_predicate,'<>expected',')<>expected');
- new_predicate='date_trunc(''milliseconds'','||new_predicate;
- IF strpos(definition,new_predicate)>0 THEN CONTINUE;END IF;
- IF strpos(definition,old_predicate)=0 THEN RAISE EXCEPTION 'Unknown schedule version predicate: %',fn;END IF;
- EXECUTE replace(definition,old_predicate,new_predicate);
- END LOOP;
- END $$;
|