From 577d8418cda7dd179b7445c660c24395ff1a4f61 Mon Sep 17 00:00:00 2001 From: Todd Date: Tue, 14 Jun 2022 15:52:35 -0700 Subject: [PATCH] Make name column immutable for kms workers. (#2190) errcode 23601 is the error code used by the immutable_column() function. --- .../99/02_worker_controller_tables.up.sql | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/internal/db/schema/migrations/oss/postgres/99/02_worker_controller_tables.up.sql b/internal/db/schema/migrations/oss/postgres/99/02_worker_controller_tables.up.sql index eeb1cfed7e..1576402501 100644 --- a/internal/db/schema/migrations/oss/postgres/99/02_worker_controller_tables.up.sql +++ b/internal/db/schema/migrations/oss/postgres/99/02_worker_controller_tables.up.sql @@ -107,6 +107,25 @@ create trigger worker_update_time_column before update on server_worker create trigger update_version_column after update of version, description, name on server_worker for each row execute procedure update_version_column(); +create function immutable_kms_name() + returns trigger +as $$ +begin + if old.type = 'kms' and new.name is distinct from old.name then + raise exception 'immutable column for kms worker: server_worker.name' using + errcode = '23601', + schema = tg_table_schema, + table = tg_table_name, + column = 'name'; + end if; +end; +$$ language plpgsql; +comment on function immutable_kms_name is + 'function used in before update triggers to make name column immutable for kms workers'; + +create trigger immutable_kms_name before update on server_worker + for each row execute procedure immutable_kms_name(); + create function update_kms_server_worker_update_last_status_time_column() returns trigger as $$