From 294d9920aa61428fb6472bbfffdcbcc6e5cbcdbd Mon Sep 17 00:00:00 2001 From: Theresa Kamerman Date: Tue, 28 Jan 2025 14:34:59 -0800 Subject: [PATCH] Fix "before delete on" trigger on Scheduling Specification Conditions If a "before" trigger returns `NULL`, the operation is cancelled, as per the Postgres Documentation (https://www.postgresql.org/docs/16/trigger-definition.html). --- .../Aerie/13_before_delete_trigger_fix/down.sql | 12 ++++++++++++ .../Aerie/13_before_delete_trigger_fix/up.sql | 12 ++++++++++++ .../postgres-init-db/sql/applied_migrations.sql | 1 + .../scheduling_specification_conditions.sql | 2 +- 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 deployment/hasura/migrations/Aerie/13_before_delete_trigger_fix/down.sql create mode 100644 deployment/hasura/migrations/Aerie/13_before_delete_trigger_fix/up.sql diff --git a/deployment/hasura/migrations/Aerie/13_before_delete_trigger_fix/down.sql b/deployment/hasura/migrations/Aerie/13_before_delete_trigger_fix/down.sql new file mode 100644 index 0000000000..6ed7278dad --- /dev/null +++ b/deployment/hasura/migrations/Aerie/13_before_delete_trigger_fix/down.sql @@ -0,0 +1,12 @@ +create or replace function scheduler.increment_spec_revision_on_conditions_spec_delete() + returns trigger + security definer +language plpgsql as $$ +begin + update scheduler.scheduling_specification + set revision = revision + 1 + where id = new.specification_id; + return new; +end; +$$; +call migrations.mark_migration_rolled_back('13'); diff --git a/deployment/hasura/migrations/Aerie/13_before_delete_trigger_fix/up.sql b/deployment/hasura/migrations/Aerie/13_before_delete_trigger_fix/up.sql new file mode 100644 index 0000000000..eea8e4bbe8 --- /dev/null +++ b/deployment/hasura/migrations/Aerie/13_before_delete_trigger_fix/up.sql @@ -0,0 +1,12 @@ +create or replace function scheduler.increment_spec_revision_on_conditions_spec_delete() + returns trigger + security definer +language plpgsql as $$ +begin + update scheduler.scheduling_specification + set revision = revision + 1 + where id = new.specification_id; + return old; +end; +$$; +call migrations.mark_migration_applied('13'); diff --git a/deployment/postgres-init-db/sql/applied_migrations.sql b/deployment/postgres-init-db/sql/applied_migrations.sql index 347ff9e5ab..e09c03fe65 100644 --- a/deployment/postgres-init-db/sql/applied_migrations.sql +++ b/deployment/postgres-init-db/sql/applied_migrations.sql @@ -15,3 +15,4 @@ call migrations.mark_migration_applied('9'); call migrations.mark_migration_applied('10'); call migrations.mark_migration_applied('11'); call migrations.mark_migration_applied('12'); +call migrations.mark_migration_applied('13'); diff --git a/deployment/postgres-init-db/sql/tables/scheduler/scheduling_specification/scheduling_specification_conditions.sql b/deployment/postgres-init-db/sql/tables/scheduler/scheduling_specification/scheduling_specification_conditions.sql index a6ae969464..0d7980da2f 100644 --- a/deployment/postgres-init-db/sql/tables/scheduler/scheduling_specification/scheduling_specification_conditions.sql +++ b/deployment/postgres-init-db/sql/tables/scheduler/scheduling_specification/scheduling_specification_conditions.sql @@ -59,7 +59,7 @@ begin update scheduler.scheduling_specification set revision = revision + 1 where id = new.specification_id; - return new; + return old; end; $$;