From ac6f14a37fadea8a6c5bf3132ff397c8c36d585d Mon Sep 17 00:00:00 2001 From: Michael Gaffney Date: Mon, 8 Aug 2022 18:17:57 -0400 Subject: [PATCH] style(sql): make migrations more greppable --- .../oss/postgres/0/01_domain_types.up.sql | 54 +--- .../migrations/oss/postgres/0/02_oplog.up.sql | 50 +--- .../migrations/oss/postgres/0/03_db.up.sql | 72 ++--- .../migrations/oss/postgres/0/06_iam.up.sql | 253 +++++------------- .../migrations/oss/postgres/0/07_auth.up.sql | 32 +-- .../oss/postgres/0/08_servers.up.sql | 23 +- .../oss/postgres/0/11_auth_token.up.sql | 53 +--- .../oss/postgres/0/12_auth_password.up.sql | 102 ++----- .../postgres/0/13_auth_password_argon.up.sql | 50 +--- .../migrations/oss/postgres/0/20_host.up.sql | 24 +- .../oss/postgres/0/22_static_host.up.sql | 9 +- .../migrations/oss/postgres/0/30_keys.up.sql | 11 +- .../migrations/oss/postgres/0/31_keys.up.sql | 123 ++------- .../oss/postgres/0/40_targets.up.sql | 18 +- .../oss/postgres/0/41_targets.up.sql | 54 +--- .../oss/postgres/0/50_session.up.sql | 66 ++--- .../oss/postgres/0/51_connection.up.sql | 49 +--- .../oss/postgres/0/60_wh_domain_types.up.sql | 15 +- .../oss/postgres/0/62_wh_datetime.up.sql | 6 +- .../0/66_wh_session_dimensions.up.sql | 6 +- .../oss/postgres/0/69_wh_session_facts.up.sql | 48 ++-- .../1/01_server_tags_migrations.up.sql | 5 +- .../migrations/oss/postgres/1/03_kms.up.sql | 24 +- .../oss/postgres/10/02_sentinels.up.sql | 6 +- .../oss/postgres/10/03_credential.up.sql | 31 +-- .../postgres/10/04_vault_credential.up.sql | 19 +- .../oss/postgres/10/06_session.up.sql | 4 +- .../oss/postgres/10/07_sentinels.up.sql | 4 +- .../postgres/12/01_timestamp_sub_funcs.up.sql | 6 +- .../14/01_wh_user_dimension_oidc.up.sql | 3 +- .../15/01_wh_rename_key_columns.up.sql | 48 ++-- .../15/02_wh_rename_host_dimension_org.up.sql | 3 +- .../16/03_wh_credential_dimension.up.sql | 24 +- .../16/04_wh_credential_dimension.up.sql | 17 +- .../16/05_wh_credential_dimension.up.sql | 16 +- .../oss/postgres/17/01_servers.up.sql | 10 +- .../oss/postgres/18/01_nonce.up.sql | 15 +- .../migrations/oss/postgres/19/01_db.up.sql | 33 +-- .../oss/postgres/19/02_kms_audit.up.sql | 24 +- .../oss/postgres/2/03_oidc_enm.up.sql | 10 +- .../migrations/oss/postgres/2/04_oidc.up.sql | 89 ++---- .../oss/postgres/2/05_authtoken.up.sql | 6 +- .../migrations/oss/postgres/2/10_auth.up.sql | 31 +-- .../oss/postgres/20/02_plugin.up.sql | 13 +- .../migrations/oss/postgres/20/04_host.up.sql | 6 +- .../oss/postgres/20/05_plugin_host.up.sql | 28 +- .../oss/postgres/21/01_default_time.up.sql | 3 +- .../oss/postgres/22/01_sentinel.up.sql | 3 +- .../oss/postgres/22/02_credential_type.up.sql | 3 +- .../postgres/22/03_vault_library_map.up.sql | 6 +- .../postgres/23/01_session_credential.up.sql | 3 +- .../postgres/24/01_session_valid_state.up.sql | 6 +- .../01_wh_network_address_dimensions.up.sql | 6 +- .../03_wh_network_address_dimensions.up.sql | 8 +- .../27/01_disable_terminate_session.up.sql | 11 +- .../postgres/27/02_wh_session_facts.up.sql | 34 +-- .../28/02_prior_session_trigger.up.sql | 6 +- .../29/01_cancel_session_null_fkey.up.sql | 6 +- .../postgres/30/01_kms_domain_types.up.sql | 37 +-- .../oss/postgres/30/02_kms_version.up.sql | 14 +- .../oss/postgres/30/03_kms_keys.up.sql | 11 +- .../oss/postgres/30/04_kms_keys.up.sql | 40 +-- .../34/02_worker_controller_tables.up.sql | 28 +- .../34/03_worker_authentication.up.sql | 41 +-- .../01_set_unlimited_connections_limit.up.sql | 3 +- .../38/06_kms_collection_version.up.sql | 10 +- .../02_vault_ssh_private_key_override.up.sql | 8 +- .../42/01_ssh_private_key_passphrase.up.sql | 6 +- .../migrations/oss/postgres/5/01_oidc.up.sql | 6 +- .../migrations/oss/postgres/6/01_oidc.up.sql | 14 +- .../oss/postgres/7/01_functions.up.sql | 6 +- .../oss/postgres/7/02_plugin.up.sql | 8 +- .../migrations/oss/postgres/7/03_job.up.sql | 15 +- .../oss/postgres/9/01_managed_groups.up.sql | 18 +- .../postgres/9/02_oidc_managed_group.up.sql | 38 +-- .../9/03_oidc_managed_group_member.up.sql | 14 +- ...4_oidc_managed_group_principal_role.up.sql | 6 +- 77 files changed, 553 insertions(+), 1458 deletions(-) diff --git a/internal/db/schema/migrations/oss/postgres/0/01_domain_types.up.sql b/internal/db/schema/migrations/oss/postgres/0/01_domain_types.up.sql index 098e2d5ba..076514ccb 100644 --- a/internal/db/schema/migrations/oss/postgres/0/01_domain_types.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/01_domain_types.up.sql @@ -7,8 +7,7 @@ check( comment on domain wt_public_id is 'Random ID generated with github.com/hashicorp/go-secure-stdlib/base62'; -create domain wt_private_id as text -not null +create domain wt_private_id as text not null check( length(trim(value)) > 10 ); @@ -22,31 +21,25 @@ check( comment on domain wt_scope_id is '"global" or random ID generated with github.com/hashicorp/go-secure-stdlib/base62'; -create domain wt_user_id as text -not null +create domain wt_user_id as text not null check( length(trim(value)) > 10 or value = 'u_anon' or value = 'u_auth' or value = 'u_recovery' ); comment on domain wt_scope_id is '"u_anon", "u_auth", or random ID generated with github.com/hashicorp/go-secure-stdlib/base62'; -create domain wt_role_id as text -not null +create domain wt_role_id as text not null check( length(trim(value)) > 10 ); comment on domain wt_scope_id is 'Random ID generated with github.com/hashicorp/go-secure-stdlib/base62'; -create domain wt_timestamp as - timestamp with time zone - default current_timestamp; +create domain wt_timestamp as timestamp with time zone default current_timestamp; comment on domain wt_timestamp is 'Standard timestamp for all create_time and update_time columns'; -create or replace function - update_time_column() - returns trigger +create or replace function update_time_column() returns trigger as $$ begin if row(new.*) is distinct from row(old.*) then @@ -57,16 +50,11 @@ begin end if; end; $$ language plpgsql; - -comment on function - update_time_column() -is +comment on function update_time_column() is 'function used in before update triggers to properly set update_time columns'; -- Replaced in 21/01_default_time.up.sql -create or replace function - default_create_time() - returns trigger +create or replace function default_create_time() returns trigger as $$ begin if new.create_time is distinct from now() then @@ -76,16 +64,10 @@ begin return new; end; $$ language plpgsql; - -comment on function - default_create_time() -is +comment on function default_create_time() is 'function used in before insert triggers to set create_time column to now'; - -create domain wt_version as bigint - default 1 - not null +create domain wt_version as bigint default 1 not null check( value > 0 ); @@ -96,9 +78,7 @@ comment on domain wt_version is -- is updated and should only be used in an update after trigger. This function -- will overwrite any explicit updates to the version column. The function -- accepts an optional parameter of 'private_id' for the tables primary key. -create or replace function - update_version_column() - returns trigger +create or replace function update_version_column() returns trigger as $$ begin if pg_trigger_depth() = 1 then @@ -118,18 +98,13 @@ begin return new; end; $$ language plpgsql; - -comment on function - update_version_column() -is +comment on function update_version_column() is 'function used in after update triggers to properly set version columns'; -- immutable_columns() will make the column names immutable which are passed as -- parameters when the trigger is created. It raises error code 23601 which is a -- class 23 integrity constraint violation: immutable column -create or replace function - immutable_columns() - returns trigger +create or replace function immutable_columns() returns trigger as $$ declare col_name text; @@ -150,10 +125,7 @@ begin return new; end; $$ language plpgsql; - -comment on function - immutable_columns() -is +comment on function immutable_columns() is 'function used in before update triggers to make columns immutable'; commit; diff --git a/internal/db/schema/migrations/oss/postgres/0/02_oplog.up.sql b/internal/db/schema/migrations/oss/postgres/0/02_oplog.up.sql index 930bff96b..c4b5f72d7 100644 --- a/internal/db/schema/migrations/oss/postgres/0/02_oplog.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/02_oplog.up.sql @@ -10,23 +10,14 @@ create table if not exists oplog_entry ( "data" bytea not null ); -create trigger - update_time_column -before -update on oplog_entry +create trigger update_time_column before update on oplog_entry for each row execute procedure update_time_column(); -create trigger - default_create_time_column -before -insert on oplog_entry +create trigger default_create_time_column before insert on oplog_entry for each row execute procedure default_create_time(); -- oplog_entry is immutable. -create trigger - immutable_columns -before -update on oplog_entry +create trigger immutable_columns before update on oplog_entry for each row execute procedure immutable_columns('id','update_time','create_time','version','aggregate_name', 'data'); create table if not exists oplog_ticket ( @@ -37,23 +28,14 @@ create table if not exists oplog_ticket ( "version" bigint not null ); -create trigger - update_time_column -before -update on oplog_ticket +create trigger update_time_column before update on oplog_ticket for each row execute procedure update_time_column(); -create trigger - default_create_time_column -before -insert on oplog_ticket +create trigger default_create_time_column before insert on oplog_ticket for each row execute procedure default_create_time(); -- oplog_ticket: only allow updates to: version and update_time -create trigger - immutable_columns -before -update on oplog_ticket +create trigger immutable_columns before update on oplog_ticket for each row execute procedure immutable_columns('id','create_time','name'); -- TODO (jimlambrt 7/2020) remove update_time @@ -61,28 +43,22 @@ create table if not exists oplog_metadata ( id bigint generated always as identity primary key, create_time wt_timestamp, update_time wt_timestamp, - entry_id bigint not null references oplog_entry(id) on delete cascade on update cascade, + entry_id bigint not null + references oplog_entry(id) + on delete cascade + on update cascade, "key" text not null, value text null ); -create trigger - update_time_column -before -update on oplog_metadata +create trigger update_time_column before update on oplog_metadata for each row execute procedure update_time_column(); -create trigger - default_create_time_column -before -insert on oplog_metadata +create trigger default_create_time_column before insert on oplog_metadata for each row execute procedure default_create_time(); -- oplog_metadata is immutable -create trigger - immutable_columns -before -update on oplog_metadata +create trigger immutable_columns before update on oplog_metadata for each row execute procedure immutable_columns('id','create_time','update_time','entry_id','key','value'); create index if not exists idx_oplog_metatadata_key on oplog_metadata(key); diff --git a/internal/db/schema/migrations/oss/postgres/0/03_db.up.sql b/internal/db/schema/migrations/oss/postgres/0/03_db.up.sql index 246887df7..a02ae696c 100644 --- a/internal/db/schema/migrations/oss/postgres/0/03_db.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/03_db.up.sql @@ -15,28 +15,17 @@ create table if not exists db_test_user ( version wt_version ); -create trigger - update_time_column -before -update on db_test_user +create trigger update_time_column before update on db_test_user for each row execute procedure update_time_column(); -- define the immutable fields for db_test_user -create trigger - immutable_columns -before -update on db_test_user +create trigger immutable_columns before update on db_test_user for each row execute procedure immutable_columns('create_time'); -create trigger - default_create_time_column -before -insert on db_test_user +create trigger default_create_time_column before insert on db_test_user for each row execute procedure default_create_time(); -create trigger - update_version_column -after update on db_test_user +create trigger update_version_column after update on db_test_user for each row execute procedure update_version_column(); create table if not exists db_test_car ( @@ -49,23 +38,14 @@ create table if not exists db_test_car ( mpg smallint ); -create trigger - update_time_column -before -update on db_test_car +create trigger update_time_column before update on db_test_car for each row execute procedure update_time_column(); -- define the immutable fields for db_test_car -create trigger - immutable_columns -before -update on db_test_car +create trigger immutable_columns before update on db_test_car for each row execute procedure immutable_columns('create_time'); -create trigger - default_create_time_column -before -insert on db_test_car +create trigger default_create_time_column before insert on db_test_car for each row execute procedure default_create_time(); create table if not exists db_test_rental ( @@ -74,30 +54,22 @@ create table if not exists db_test_rental ( update_time wt_timestamp, public_id text not null unique, name text unique, - user_id bigint not null references db_test_user(id), - car_id bigint not null references db_test_car(id) + user_id bigint not null + references db_test_user(id), + car_id bigint not null + references db_test_car(id) ); -create trigger - update_time_column -before -update on db_test_rental +create trigger update_time_column before update on db_test_rental for each row execute procedure update_time_column(); -- define the immutable fields for db_test_rental -create trigger - immutable_columns -before -update on db_test_rental +create trigger immutable_columns before update on db_test_rental for each row execute procedure immutable_columns('create_time'); -create trigger - default_create_time_column -before -insert on db_test_rental +create trigger default_create_time_column before insert on db_test_rental for each row execute procedure default_create_time(); - create table if not exists db_test_scooter ( id bigint generated always as identity primary key, create_time wt_timestamp, @@ -108,24 +80,14 @@ create table if not exists db_test_scooter ( mpg smallint ); -create trigger - update_time_column -before -update on db_test_scooter +create trigger update_time_column before update on db_test_scooter for each row execute procedure update_time_column(); - -- define the immutable fields for db_test_scooter -create trigger - immutable_columns -before -update on db_test_scooter +create trigger immutable_columns before update on db_test_scooter for each row execute procedure immutable_columns('create_time'); -create trigger - default_create_time_column -before -insert on db_test_scooter +create trigger default_create_time_column before insert on db_test_scooter for each row execute procedure default_create_time(); commit; diff --git a/internal/db/schema/migrations/oss/postgres/0/06_iam.up.sql b/internal/db/schema/migrations/oss/postgres/0/06_iam.up.sql index 3ab5438b5..303b99f43 100644 --- a/internal/db/schema/migrations/oss/postgres/0/06_iam.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/06_iam.up.sql @@ -14,10 +14,7 @@ values ('project'); -- define the immutable fields of iam_scope_type_enm -create trigger - immutable_columns -before -update on iam_scope_type_enm +create trigger immutable_columns before update on iam_scope_type_enm for each row execute procedure immutable_columns('string'); create table iam_scope ( @@ -44,7 +41,10 @@ create table iam_scope ( ) ), description text, - parent_id text references iam_scope(public_id) on delete cascade on update cascade, + parent_id text + references iam_scope(public_id) + on delete cascade + on update cascade, -- version allows optimistic locking of the role when modifying the role -- itself and when modifying dependent items like principal roles. @@ -68,8 +68,7 @@ create table iam_scope_org ( references iam_scope(public_id) on delete cascade on update cascade, - parent_id wt_scope_id - not null + parent_id wt_scope_id not null references iam_scope_global(scope_id) on delete cascade on update cascade, @@ -78,21 +77,21 @@ create table iam_scope_org ( ); create table iam_scope_project ( - scope_id wt_scope_id - not null + scope_id wt_scope_id not null references iam_scope(public_id) on delete cascade on update cascade, - parent_id wt_public_id not null references iam_scope_org(scope_id) on delete cascade on update cascade, + parent_id wt_public_id not null + references iam_scope_org(scope_id) + on delete cascade + on update cascade, name text, unique(parent_id, name), unique(scope_id), primary key(scope_id, parent_id) ); -create or replace function - iam_sub_scopes_func() - returns trigger +create or replace function iam_sub_scopes_func() returns trigger as $$ declare parent_type int; begin @@ -118,15 +117,10 @@ begin end; $$ language plpgsql; -create trigger - iam_scope_insert -after -insert on iam_scope +create trigger iam_scope_insert after insert on iam_scope for each row execute procedure iam_sub_scopes_func(); -create or replace function - disallow_global_scope_deletion() - returns trigger +create or replace function disallow_global_scope_deletion() returns trigger as $$ begin if old.type = 'global' then @@ -136,63 +130,39 @@ begin end; $$ language plpgsql; -create trigger - iam_scope_disallow_global_deletion -before -delete on iam_scope +create trigger iam_scope_disallow_global_deletion before delete on iam_scope for each row execute procedure disallow_global_scope_deletion(); -create trigger - update_time_column -before update on iam_scope +create trigger update_time_column before update on iam_scope for each row execute procedure update_time_column(); -create trigger - default_create_time_column -before -insert on iam_scope +create trigger default_create_time_column before insert on iam_scope for each row execute procedure default_create_time(); -create trigger - update_version_column -after update on iam_scope +create trigger update_version_column after update on iam_scope for each row execute procedure update_version_column(); -- define the immutable fields for iam_scope -create trigger - immutable_columns -before -update on iam_scope +create trigger immutable_columns before update on iam_scope for each row execute procedure immutable_columns('public_id', 'create_time', 'type', 'parent_id'); -- define the immutable fields of iam_scope_global -create trigger - immutable_columns -before -update on iam_scope_global +create trigger immutable_columns before update on iam_scope_global for each row execute procedure immutable_columns('scope_id'); -- define the immutable fields of iam_scope_org -create trigger - immutable_columns -before -update on iam_scope_org +create trigger immutable_columns before update on iam_scope_org for each row execute procedure immutable_columns('scope_id'); -- define the immutable fields of iam_scope_project -create trigger - immutable_columns -before -update on iam_scope_project +create trigger immutable_columns before update on iam_scope_project for each row execute procedure immutable_columns('scope_id'); -- iam_sub_names will allow us to enforce the different name constraints for -- orgs and projects via a before update trigger on the iam_scope -- table. -create or replace function - iam_sub_names() - returns trigger +create or replace function iam_sub_names() returns trigger as $$ begin if new.name != old.name then @@ -214,25 +184,19 @@ begin end; $$ language plpgsql; -create trigger - iam_sub_names -before -update on iam_scope +create trigger iam_sub_names before update on iam_scope for each row execute procedure iam_sub_names(); insert into iam_scope (public_id, name, type, description) values ('global', 'global', 'global', 'Global Scope'); - create table iam_user ( - public_id wt_user_id - primary key, + public_id wt_user_id primary key, create_time wt_timestamp, update_time wt_timestamp, name text, description text, - scope_id wt_scope_id - not null + scope_id wt_scope_id not null references iam_scope(public_id) on delete cascade on update cascade, @@ -245,9 +209,7 @@ create table iam_user ( unique(scope_id, public_id) ); -create or replace function - user_scope_id_valid() - returns trigger +create or replace function user_scope_id_valid() returns trigger as $$ begin perform from iam_scope where public_id = new.scope_id and type in ('global', 'org'); @@ -258,9 +220,7 @@ begin end; $$ language plpgsql; -create or replace function - grant_scope_id_valid() - returns trigger +create or replace function grant_scope_id_valid() returns trigger as $$ declare parent_scope_id text; declare role_scope_type text; @@ -300,9 +260,7 @@ begin end; $$ language plpgsql; -create or replace function - disallow_iam_predefined_user_deletion() - returns trigger +create or replace function disallow_iam_predefined_user_deletion() returns trigger as $$ begin if old.public_id = 'u_anon' then @@ -318,32 +276,19 @@ begin end; $$ language plpgsql; -create trigger - update_version_column -after update on iam_user +create trigger update_version_column after update on iam_user for each row execute procedure update_version_column(); -create trigger - ensure_user_scope_id_valid -before -insert or update on iam_user +create trigger ensure_user_scope_id_valid before insert or update on iam_user for each row execute procedure user_scope_id_valid(); -create trigger - update_time_column -before update on iam_user +create trigger update_time_column before update on iam_user for each row execute procedure update_time_column(); -create trigger - default_create_time_column -before -insert on iam_user +create trigger default_create_time_column before insert on iam_user for each row execute procedure default_create_time(); -create trigger - iam_user_disallow_predefined_user_deletion -before -delete on iam_user +create trigger iam_user_disallow_predefined_user_deletion before delete on iam_user for each row execute procedure disallow_iam_predefined_user_deletion(); -- TODO: Do we want to disallow changing the name or description? @@ -357,10 +302,7 @@ insert into iam_user (public_id, name, description, scope_id) values ('u_recovery', 'recovery', 'The recovery user is used for any request that was performed with the recovery KMS workflow', 'global'); -- define the immutable fields for iam_user -create trigger - immutable_columns -before -update on iam_user +create trigger immutable_columns before update on iam_user for each row execute procedure immutable_columns('public_id', 'create_time', 'scope_id'); create table iam_role ( @@ -369,13 +311,11 @@ create table iam_role ( update_time wt_timestamp, name text, description text, - scope_id wt_scope_id - not null + scope_id wt_scope_id not null references iam_scope(public_id) on delete cascade on update cascade, - grant_scope_id wt_scope_id - not null + grant_scope_id wt_scope_id not null references iam_scope(public_id) on delete cascade on update cascade, @@ -407,59 +347,37 @@ create table iam_role ( ); -- iam_immutable_role_grant() ensures that grants assigned to roles are immutable. -create or replace function - iam_immutable_role_grant() - returns trigger +create or replace function iam_immutable_role_grant() returns trigger as $$ begin raise exception 'role grants are immutable'; end; $$ language plpgsql; -create trigger immutable_role_grant -before -update on iam_role_grant +create trigger immutable_role_grant before update on iam_role_grant for each row execute procedure iam_immutable_role_grant(); -create trigger - default_create_time_column -before -insert on iam_role_grant +create trigger default_create_time_column before insert on iam_role_grant for each row execute procedure default_create_time(); -create trigger - update_version_column -after update on iam_role +create trigger update_version_column after update on iam_role for each row execute procedure update_version_column(); -create trigger - update_time_column -before update on iam_role +create trigger update_time_column before update on iam_role for each row execute procedure update_time_column(); -create trigger - default_create_time_column -before -insert on iam_role +create trigger default_create_time_column before insert on iam_role for each row execute procedure default_create_time(); -create trigger - ensure_grant_scope_id_valid -before -insert or update on iam_role +create trigger ensure_grant_scope_id_valid before insert or update on iam_role for each row execute procedure grant_scope_id_valid(); -- define the immutable fields for iam_role (started trigger name with "a_" so -- it will run first) -create trigger - a_immutable_columns -before -update on iam_role +create trigger a_immutable_columns before update on iam_role for each row execute procedure immutable_columns('public_id', 'create_time', 'scope_id'); -create or replace function - recovery_user_not_allowed() - returns trigger +create or replace function recovery_user_not_allowed() returns trigger as $$ declare new_value text; @@ -473,14 +391,12 @@ end; $$ language plpgsql; create table iam_group ( - public_id wt_public_id - primary key, + public_id wt_public_id primary key, create_time wt_timestamp, update_time wt_timestamp, name text, description text, - scope_id wt_scope_id - not null + scope_id wt_scope_id not null references iam_scope(public_id) on delete cascade on update cascade, @@ -493,27 +409,17 @@ create table iam_group ( unique(scope_id, public_id) ); -create trigger - update_version_column -after update on iam_group +create trigger update_version_column after update on iam_group for each row execute procedure update_version_column(); -create trigger - update_time_column -before update on iam_group +create trigger update_time_column before update on iam_group for each row execute procedure update_time_column(); -create trigger - default_create_time_column -before -insert on iam_group +create trigger default_create_time_column before insert on iam_group for each row execute procedure default_create_time(); -- define the immutable fields for iam_group -create trigger - immutable_columns -before -update on iam_group +create trigger immutable_columns before update on iam_group for each row execute procedure immutable_columns('public_id', 'create_time', 'scope_id'); -- iam_user_role contains roles that have been assigned to users. Users can be @@ -600,77 +506,58 @@ where g.public_id = gr.principal_id; -- iam_immutable_role_principal() ensures that roles assigned to principals are immutable. -create or replace function - iam_immutable_role_principal() - returns trigger +create or replace function iam_immutable_role_principal() returns trigger as $$ begin raise exception 'roles are immutable'; end; $$ language plpgsql; -create trigger immutable_role_principal -before -update on iam_user_role +create trigger immutable_role_principal before update on iam_user_role for each row execute procedure iam_immutable_role_principal(); -create trigger - recovery_user_not_allowed_user_role -before -insert on iam_user_role +create trigger recovery_user_not_allowed_user_role before insert on iam_user_role for each row execute procedure recovery_user_not_allowed('principal_id'); -create trigger - default_create_time_column -before -insert on iam_user_role +create trigger default_create_time_column before insert on iam_user_role for each row execute procedure default_create_time(); -create trigger immutable_role_principal -before -update on iam_group_role +create trigger immutable_role_principal before update on iam_group_role for each row execute procedure iam_immutable_role_principal(); -create trigger - default_create_time_column -before -insert on iam_group_role +create trigger default_create_time_column before insert on iam_group_role for each row execute procedure default_create_time(); -- iam_group_member_user is an association table that represents groups with -- associated users. create table iam_group_member_user ( create_time wt_timestamp, - group_id wt_public_id references iam_group(public_id) on delete cascade on update cascade, - member_id wt_user_id references iam_user(public_id) on delete cascade on update cascade, + group_id wt_public_id + references iam_group(public_id) + on delete cascade + on update cascade, + member_id wt_user_id + references iam_user(public_id) + on delete cascade + on update cascade, primary key (group_id, member_id) ); -- iam_immutable_group_member() ensures that group members are immutable. -create or replace function - iam_immutable_group_member() - returns trigger +create or replace function iam_immutable_group_member() returns trigger as $$ begin raise exception 'group members are immutable'; end; $$ language plpgsql; -create trigger - default_create_time_column -before -insert on iam_group_member_user +create trigger default_create_time_column before insert on iam_group_member_user for each row execute procedure default_create_time(); -create trigger iam_immutable_group_member -before -update on iam_group_member_user +create trigger iam_immutable_group_member before update on iam_group_member_user for each row execute procedure iam_immutable_group_member(); -create trigger - recovery_user_not_allowed_group_member -before -insert on iam_group_member_user +create trigger recovery_user_not_allowed_group_member before insert on iam_group_member_user for each row execute procedure recovery_user_not_allowed('member_id'); -- get_scoped_member_id is used by the iam_group_member view as a convient diff --git a/internal/db/schema/migrations/oss/postgres/0/07_auth.up.sql b/internal/db/schema/migrations/oss/postgres/0/07_auth.up.sql index 876dba1c2..c734be1ce 100644 --- a/internal/db/schema/migrations/oss/postgres/0/07_auth.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/07_auth.up.sql @@ -49,10 +49,8 @@ begin; -- base table for auth methods create table auth_method ( - public_id wt_public_id - primary key, - scope_id wt_scope_id - not null + public_id wt_public_id primary key, + scope_id wt_scope_id not null references iam_scope(public_id) on delete cascade on update cascade, @@ -66,12 +64,9 @@ begin; -- base table for auth accounts create table auth_account ( - public_id wt_public_id - primary key, - auth_method_id wt_public_id - not null, - scope_id wt_scope_id - not null, + public_id wt_public_id primary key, + auth_method_id wt_public_id not null, + scope_id wt_scope_id not null, iam_user_id wt_public_id, -- The auth_account can only be assigned to an iam_user in the same scope as -- the auth_method the auth_account belongs to. A separate column for @@ -99,9 +94,7 @@ begin; unique(scope_id, auth_method_id, public_id) ); - create or replace function - insert_auth_method_subtype() - returns trigger + create or replace function insert_auth_method_subtype() returns trigger as $$ begin insert into auth_method @@ -112,9 +105,7 @@ begin; end; $$ language plpgsql; - create or replace function - insert_auth_account_subtype() - returns trigger + create or replace function insert_auth_account_subtype() returns trigger as $$ begin @@ -139,9 +130,7 @@ begin; -- and sets new.iam_user_scope_id to that value. If the new.iam_user_id column -- is null and the old.iam_user_id column is not null, -- update_iam_user_auth_account sets the iam_user_scope_id to null. - create or replace function - update_iam_user_auth_account() - returns trigger + create or replace function update_iam_user_auth_account() returns trigger as $$ begin if new.iam_user_id is distinct from old.iam_user_id then @@ -157,10 +146,7 @@ begin; end; $$ language plpgsql; - - create trigger update_iam_user_auth_account - before update of iam_user_id on auth_account - for each row + create trigger update_iam_user_auth_account before update of iam_user_id on auth_account for each row execute procedure update_iam_user_auth_account(); commit; diff --git a/internal/db/schema/migrations/oss/postgres/0/08_servers.up.sql b/internal/db/schema/migrations/oss/postgres/0/08_servers.up.sql index 2e37ce69d..735922fab 100644 --- a/internal/db/schema/migrations/oss/postgres/0/08_servers.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/08_servers.up.sql @@ -17,35 +17,22 @@ create table server ( primary key (private_id, type) ); -create trigger - immutable_columns -before -update on server +create trigger immutable_columns before update on server for each row execute procedure immutable_columns('create_time'); -create trigger - default_create_time_column -before -insert on server +create trigger default_create_time_column before insert on server for each row execute procedure default_create_time(); -- UPDATED in 18/01_nonce create table recovery_nonces ( - nonce text - primary key, + nonce text primary key, create_time wt_timestamp ); -create trigger - default_create_time_column -before -insert on recovery_nonces +create trigger default_create_time_column before insert on recovery_nonces for each row execute procedure default_create_time(); -create trigger - immutable_columns -before -update on recovery_nonces +create trigger immutable_columns before update on recovery_nonces for each row execute procedure immutable_columns('nonce', 'create_time'); commit; diff --git a/internal/db/schema/migrations/oss/postgres/0/11_auth_token.up.sql b/internal/db/schema/migrations/oss/postgres/0/11_auth_token.up.sql index 8b9fbfb7f..aed440b34 100644 --- a/internal/db/schema/migrations/oss/postgres/0/11_auth_token.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/11_auth_token.up.sql @@ -45,9 +45,7 @@ begin; inner join auth_account as aa on at.auth_account_id = aa.public_id; - create or replace function - update_last_access_time() - returns trigger + create or replace function update_last_access_time() returns trigger as $$ begin if new.approximate_last_access_time is distinct from old.approximate_last_access_time then @@ -56,15 +54,10 @@ begin; return new; end; $$ language plpgsql; - - comment on function - update_last_access_time() - is + comment on function update_last_access_time() is 'function used in before update triggers to properly set last_access_time columns'; - create or replace function - immutable_auth_token_columns() - returns trigger + create or replace function immutable_auth_token_columns() returns trigger as $$ begin if new.auth_account_id is distinct from old.auth_account_id then @@ -76,17 +69,12 @@ begin; return new; end; $$ language plpgsql; - - comment on function - immutable_auth_token_columns() - is + comment on function immutable_auth_token_columns() is 'function used in before update triggers to make specific columns immutable'; -- This allows the expiration to be calculated on the server side and still hold the constraint that -- the expiration time cant be before the creation time of the auth token. - create or replace function - expire_time_not_older_than_token() - returns trigger + create or replace function expire_time_not_older_than_token() returns trigger as $$ begin if new.expiration_time < new.create_time then @@ -95,42 +83,25 @@ begin; return new; end; $$ language plpgsql; - - comment on function - expire_time_not_older_than_token() - is + comment on function expire_time_not_older_than_token() is 'function used in before insert triggers to ensure expiration time is not older than create time'; - create trigger - default_create_time_column - before insert on auth_token + create trigger default_create_time_column before insert on auth_token for each row execute procedure default_create_time(); - create trigger - expire_time_not_older_than_token - before insert on auth_token + create trigger expire_time_not_older_than_token before insert on auth_token for each row execute procedure expire_time_not_older_than_token(); - create trigger - update_time_column - before update on auth_token + create trigger update_time_column before update on auth_token for each row execute procedure update_time_column(); - create trigger - update_last_access_time - before update on auth_token + create trigger update_last_access_time before update on auth_token for each row execute procedure update_last_access_time(); - - create trigger - immutable_auth_token_columns - before update on auth_token + create trigger immutable_auth_token_columns before update on auth_token for each row execute procedure immutable_auth_token_columns(); - create trigger - immutable_columns - before - update on auth_token + create trigger immutable_columns before update on auth_token for each row execute procedure immutable_columns('public_id', 'auth_account_id', 'create_time'); commit; diff --git a/internal/db/schema/migrations/oss/postgres/0/12_auth_password.up.sql b/internal/db/schema/migrations/oss/postgres/0/12_auth_password.up.sql index 20693fbea..da24e0e6c 100644 --- a/internal/db/schema/migrations/oss/postgres/0/12_auth_password.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/12_auth_password.up.sql @@ -58,21 +58,15 @@ begin; */ create table auth_password_method ( - public_id wt_public_id - primary key, - scope_id wt_scope_id - not null, + public_id wt_public_id primary key, + scope_id wt_scope_id not null, password_conf_id wt_private_id, -- FK to auth_password_conf added below name text, description text, create_time wt_timestamp, update_time wt_timestamp, - min_login_name_length int - not null - default 3, - min_password_length int - not null - default 8, + min_login_name_length int not null default 3, + min_password_length int not null default 8, version wt_version, foreign key (scope_id, public_id) references auth_method (scope_id, public_id) @@ -82,21 +76,15 @@ begin; unique(scope_id, public_id) ); - create trigger - update_version_column - after update on auth_password_method + create trigger update_version_column after update on auth_password_method for each row execute procedure update_version_column(); - create trigger - insert_auth_method_subtype - before insert on auth_password_method + create trigger insert_auth_method_subtype before insert on auth_password_method for each row execute procedure insert_auth_method_subtype(); create table auth_password_account ( - public_id wt_public_id - primary key, - auth_method_id wt_public_id - not null, + public_id wt_public_id primary key, + auth_method_id wt_public_id not null, -- NOTE(mgaffney): The scope_id type is not wt_scope_id because the domain -- check is executed before the insert trigger which retrieves the scope_id -- causing an insert to fail. @@ -107,9 +95,9 @@ begin; update_time wt_timestamp, login_name text not null constraint login_name_must_be_lowercase - check(lower(trim(login_name)) = login_name) + check(lower(trim(login_name)) = login_name) constraint login_name_must_not_be_empty - check(length(trim(login_name)) > 0), + check(length(trim(login_name)) > 0), version wt_version, foreign key (scope_id, auth_method_id) references auth_password_method (scope_id, public_id) @@ -124,21 +112,15 @@ begin; unique(auth_method_id, public_id) ); - create trigger - update_version_column - after update on auth_password_account + create trigger update_version_column after update on auth_password_account for each row execute procedure update_version_column(); - create trigger - insert_auth_account_subtype - before insert on auth_password_account + create trigger insert_auth_account_subtype before insert on auth_password_account for each row execute procedure insert_auth_account_subtype(); create table auth_password_conf ( - private_id wt_private_id - primary key, - password_method_id wt_public_id - not null + private_id wt_private_id primary key, + password_method_id wt_public_id not null references auth_password_method (public_id) on delete cascade on update cascade @@ -156,9 +138,7 @@ begin; -- insert_auth_password_conf_subtype() is a trigger function for subtypes of -- auth_password_conf - create or replace function - insert_auth_password_conf_subtype() - returns trigger + create or replace function insert_auth_password_conf_subtype() returns trigger as $$ begin insert into auth_password_conf @@ -170,14 +150,10 @@ begin; $$ language plpgsql; create table auth_password_credential ( - private_id wt_private_id - primary key, - password_account_id wt_public_id - not null - unique, + private_id wt_private_id primary key, + password_account_id wt_public_id not null unique, password_conf_id wt_private_id, - password_method_id wt_public_id - not null, + password_method_id wt_public_id not null, foreign key (password_method_id, password_conf_id) references auth_password_conf (password_method_id, private_id) on delete cascade @@ -191,9 +167,7 @@ begin; -- insert_auth_password_credential_subtype() is a trigger function for -- subtypes of auth_password_credential - create or replace function - insert_auth_password_credential_subtype() - returns trigger + create or replace function insert_auth_password_credential_subtype() returns trigger as $$ begin @@ -212,9 +186,7 @@ begin; -- update_auth_password_credential_subtype() is an after update trigger -- function for subtypes of auth_password_credential - create or replace function - update_auth_password_credential_subtype() - returns trigger + create or replace function update_auth_password_credential_subtype() returns trigger as $$ begin /* @@ -232,9 +204,7 @@ begin; -- delete_auth_password_credential_subtype() is an after delete trigger -- function for subtypes of auth_password_credential - create or replace function - delete_auth_password_credential_subtype() - returns trigger + create or replace function delete_auth_password_credential_subtype() returns trigger as $$ begin delete @@ -248,40 +218,22 @@ begin; -- triggers for time columns -- - create trigger - update_time_column - before - update on auth_password_method + create trigger update_time_column before update on auth_password_method for each row execute procedure update_time_column(); - create trigger - immutable_columns - before - update on auth_password_method + create trigger immutable_columns before update on auth_password_method for each row execute procedure immutable_columns('create_time'); - create trigger - default_create_time_column - before - insert on auth_password_method + create trigger default_create_time_column before insert on auth_password_method for each row execute procedure default_create_time(); - create trigger - update_time_column - before - update on auth_password_account + create trigger update_time_column before update on auth_password_account for each row execute procedure update_time_column(); - create trigger - immutable_columns - before - update on auth_password_account + create trigger immutable_columns before update on auth_password_account for each row execute procedure immutable_columns('create_time'); - create trigger - default_create_time_column - before - insert on auth_password_account + create trigger default_create_time_column before insert on auth_password_account for each row execute procedure default_create_time(); -- The tickets for oplog are the subtypes not the base types because no updates diff --git a/internal/db/schema/migrations/oss/postgres/0/13_auth_password_argon.up.sql b/internal/db/schema/migrations/oss/postgres/0/13_auth_password_argon.up.sql index 8fd004a0a..951cfc6ef 100644 --- a/internal/db/schema/migrations/oss/postgres/0/13_auth_password_argon.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/13_auth_password_argon.up.sql @@ -35,24 +35,17 @@ begin; deferrable initially deferred ); - create or replace function - read_only_auth_password_argon2_conf() - returns trigger + create or replace function read_only_auth_password_argon2_conf() returns trigger as $$ begin raise exception 'auth_password_argon2_conf is read-only'; end; $$ language plpgsql; - create trigger - read_only_auth_password_argon2_conf - before - update on auth_password_argon2_conf + create trigger read_only_auth_password_argon2_conf before update on auth_password_argon2_conf for each row execute procedure read_only_auth_password_argon2_conf(); - create trigger - insert_auth_password_conf_subtype - before insert on auth_password_argon2_conf + create trigger insert_auth_password_conf_subtype before insert on auth_password_argon2_conf for each row execute procedure insert_auth_password_conf_subtype(); create table auth_password_argon2_cred ( @@ -89,53 +82,32 @@ begin; deferrable initially deferred ); - create trigger - insert_auth_password_credential_subtype - before insert on auth_password_argon2_cred + create trigger insert_auth_password_credential_subtype before insert on auth_password_argon2_cred for each row execute procedure insert_auth_password_credential_subtype(); - create trigger - update_auth_password_credential_subtype - after update on auth_password_argon2_cred + create trigger update_auth_password_credential_subtype after update on auth_password_argon2_cred for each row execute procedure update_auth_password_credential_subtype(); - create trigger - delete_auth_password_credential_subtype - after delete on auth_password_argon2_cred + create trigger delete_auth_password_credential_subtype after delete on auth_password_argon2_cred for each row execute procedure delete_auth_password_credential_subtype(); -- -- triggers for time columns -- - create trigger - immutable_columns - before - update on auth_password_argon2_conf + create trigger immutable_columns before update on auth_password_argon2_conf for each row execute procedure immutable_columns('create_time'); - create trigger - default_create_time_column - before - insert on auth_password_argon2_conf + create trigger default_create_time_column before insert on auth_password_argon2_conf for each row execute procedure default_create_time(); - create trigger - update_time_column - before - update on auth_password_argon2_cred + create trigger update_time_column before update on auth_password_argon2_cred for each row execute procedure update_time_column(); - create trigger - immutable_columns - before - update on auth_password_argon2_cred + create trigger immutable_columns before update on auth_password_argon2_cred for each row execute procedure immutable_columns('create_time'); - create trigger - default_create_time_column - before - insert on auth_password_argon2_cred + create trigger default_create_time_column before insert on auth_password_argon2_cred for each row execute procedure default_create_time(); -- The tickets for oplog are the subtypes not the base types because no updates diff --git a/internal/db/schema/migrations/oss/postgres/0/20_host.up.sql b/internal/db/schema/migrations/oss/postgres/0/20_host.up.sql index 80f1ded11..9668329a3 100644 --- a/internal/db/schema/migrations/oss/postgres/0/20_host.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/20_host.up.sql @@ -38,10 +38,8 @@ begin; -- host_catalog create table host_catalog ( - public_id wt_public_id - primary key, - scope_id wt_scope_id - not null + public_id wt_public_id primary key, + scope_id wt_scope_id not null references iam_scope (public_id) on delete cascade on update cascade, @@ -57,8 +55,7 @@ begin; -- insert_host_catalog_subtype() is a before insert trigger -- function for subtypes of host_catalog - create or replace function insert_host_catalog_subtype() - returns trigger + create or replace function insert_host_catalog_subtype() returns trigger as $$ begin insert into host_catalog @@ -71,8 +68,7 @@ begin; -- delete_host_catalog_subtype() is an after delete trigger -- function for subtypes of host_catalog - create or replace function delete_host_catalog_subtype() - returns trigger + create or replace function delete_host_catalog_subtype() returns trigger as $$ begin delete from host_catalog @@ -96,8 +92,7 @@ begin; -- insert_host_subtype() is a before insert trigger -- function for subtypes of host - create or replace function insert_host_subtype() - returns trigger + create or replace function insert_host_subtype() returns trigger as $$ begin insert into host @@ -110,8 +105,7 @@ begin; -- delete_host_subtype() is an after delete trigger -- function for subtypes of host - create or replace function delete_host_subtype() - returns trigger + create or replace function delete_host_subtype() returns trigger as $$ begin delete from host @@ -135,8 +129,7 @@ begin; -- insert_host_set_subtype() is a before insert trigger -- function for subtypes of host_set - create or replace function insert_host_set_subtype() - returns trigger + create or replace function insert_host_set_subtype() returns trigger as $$ begin insert into host_set @@ -149,8 +142,7 @@ begin; -- delete_host_set_subtype() is an after delete trigger -- function for subtypes of host_set - create or replace function delete_host_set_subtype() - returns trigger + create or replace function delete_host_set_subtype() returns trigger as $$ begin delete from host_set diff --git a/internal/db/schema/migrations/oss/postgres/0/22_static_host.up.sql b/internal/db/schema/migrations/oss/postgres/0/22_static_host.up.sql index 717f30f39..c44bd91cf 100644 --- a/internal/db/schema/migrations/oss/postgres/0/22_static_host.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/22_static_host.up.sql @@ -37,10 +37,8 @@ begin; */ create table static_host_catalog ( - public_id wt_public_id - primary key, - scope_id wt_scope_id - not null + public_id wt_public_id primary key, + scope_id wt_scope_id not null references iam_scope (public_id) on delete cascade on update cascade, @@ -176,8 +174,7 @@ begin; create trigger immutable_columns before update on static_host_set_member for each row execute procedure immutable_columns('host_id', 'set_id', 'catalog_id'); - create or replace function insert_static_host_set_member() - returns trigger + create or replace function insert_static_host_set_member() returns trigger as $$ begin select static_host_set.catalog_id diff --git a/internal/db/schema/migrations/oss/postgres/0/30_keys.up.sql b/internal/db/schema/migrations/oss/postgres/0/30_keys.up.sql index ea4042672..b0ec6ade0 100644 --- a/internal/db/schema/migrations/oss/postgres/0/30_keys.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/30_keys.up.sql @@ -3,9 +3,7 @@ begin; -- kms_version_column() will increment the version column whenever row data -- is inserted and should only be used in an before insert trigger. This -- function will overwrite any explicit values to the version column. -create or replace function - kms_version_column() - returns trigger +create or replace function kms_version_column() returns trigger as $$ declare _key_id text; @@ -20,10 +18,7 @@ begin return new; end; $$ language plpgsql; - -comment on function - kms_version_column() -is +comment on function kms_version_column() is 'function used in before insert triggers to properly set version columns for kms_* tables with a version column'; - commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/0/31_keys.up.sql b/internal/db/schema/migrations/oss/postgres/0/31_keys.up.sql index 7c72be041..9659bad10 100644 --- a/internal/db/schema/migrations/oss/postgres/0/31_keys.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/31_keys.up.sql @@ -48,16 +48,10 @@ create table kms_root_key ( ); -- define the immutable fields for kms_root_key (all of them) -create trigger - immutable_columns -before -update on kms_root_key +create trigger immutable_columns before update on kms_root_key for each row execute procedure immutable_columns('private_id', 'scope_id', 'create_time'); -create trigger - default_create_time_column -before -insert on kms_root_key +create trigger default_create_time_column before insert on kms_root_key for each row execute procedure default_create_time(); create table kms_root_key_version ( @@ -73,22 +67,13 @@ create table kms_root_key_version ( ); -- define the immutable fields for kms_root_key_version (all of them) -create trigger - immutable_columns -before -update on kms_root_key_version +create trigger immutable_columns before update on kms_root_key_version for each row execute procedure immutable_columns('private_id', 'root_key_id', 'version', 'key', 'create_time'); -create trigger - default_create_time_column -before -insert on kms_root_key_version +create trigger default_create_time_column before insert on kms_root_key_version for each row execute procedure default_create_time(); - -create trigger - kms_version_column -before insert on kms_root_key_version +create trigger kms_version_column before insert on kms_root_key_version for each row execute procedure kms_version_column('root_key_id'); create table kms_database_key ( @@ -101,16 +86,10 @@ create table kms_database_key ( ); -- define the immutable fields for kms_database_key (all of them) -create trigger - immutable_columns -before -update on kms_database_key +create trigger immutable_columns before update on kms_database_key for each row execute procedure immutable_columns('private_id', 'root_key_id', 'create_time'); -create trigger - default_create_time_column -before -insert on kms_database_key +create trigger default_create_time_column before insert on kms_database_key for each row execute procedure default_create_time(); create table kms_database_key_version ( @@ -130,21 +109,13 @@ create table kms_database_key_version ( ); -- define the immutable fields for kms_database_key_version (all of them) -create trigger - immutable_columns -before -update on kms_database_key_version +create trigger immutable_columns before update on kms_database_key_version for each row execute procedure immutable_columns('private_id', 'database_key_id', 'root_key_version_id', 'version', 'key', 'create_time'); -create trigger - default_create_time_column -before -insert on kms_database_key_version +create trigger default_create_time_column before insert on kms_database_key_version for each row execute procedure default_create_time(); -create trigger - kms_version_column -before insert on kms_database_key_version +create trigger kms_version_column before insert on kms_database_key_version for each row execute procedure kms_version_column('database_key_id'); create table kms_oplog_key ( @@ -157,16 +128,10 @@ create table kms_oplog_key ( ); -- define the immutable fields for kms_oplog_key (all of them) -create trigger - immutable_columns -before -update on kms_oplog_key +create trigger immutable_columns before update on kms_oplog_key for each row execute procedure immutable_columns('private_id', 'root_key_id', 'create_time'); -create trigger - default_create_time_column -before -insert on kms_oplog_key +create trigger default_create_time_column before insert on kms_oplog_key for each row execute procedure default_create_time(); create table kms_oplog_key_version ( @@ -186,21 +151,13 @@ create table kms_oplog_key_version ( ); -- define the immutable fields for kms_oplog_key_version (all of them) -create trigger - immutable_columns -before -update on kms_oplog_key_version +create trigger immutable_columns before update on kms_oplog_key_version for each row execute procedure immutable_columns('private_id', 'oplog_key_id', 'root_key_version_id', 'version', 'key', 'create_time'); -create trigger - default_create_time_column -before -insert on kms_oplog_key_version +create trigger default_create_time_column before insert on kms_oplog_key_version for each row execute procedure default_create_time(); -create trigger - kms_version_column -before insert on kms_oplog_key_version +create trigger kms_version_column before insert on kms_oplog_key_version for each row execute procedure kms_version_column('oplog_key_id'); create table kms_session_key ( @@ -213,16 +170,10 @@ create table kms_session_key ( ); -- define the immutable fields for kms_oplog_key (all of them) -create trigger - immutable_columns -before -update on kms_session_key +create trigger immutable_columns before update on kms_session_key for each row execute procedure immutable_columns('private_id', 'root_key_id', 'create_time'); -create trigger - default_create_time_column -before -insert on kms_session_key +create trigger default_create_time_column before insert on kms_session_key for each row execute procedure default_create_time(); create table kms_session_key_version ( @@ -243,21 +194,13 @@ create table kms_session_key_version ( -- define the immutable fields for kms_session_key_version (all of them) -create trigger - immutable_columns -before -update on kms_session_key_version +create trigger immutable_columns before update on kms_session_key_version for each row execute procedure immutable_columns('private_id', 'session_key_id', 'root_key_version_id', 'version', 'key', 'create_time'); -create trigger - default_create_time_column -before -insert on kms_session_key_version +create trigger default_create_time_column before insert on kms_session_key_version for each row execute procedure default_create_time(); -create trigger - kms_version_column -before insert on kms_session_key_version +create trigger kms_version_column before insert on kms_session_key_version for each row execute procedure kms_version_column('session_key_id'); create table kms_token_key ( @@ -270,16 +213,10 @@ create table kms_token_key ( ); -- define the immutable fields for kms_token_key (all of them) -create trigger - immutable_columns -before -update on kms_token_key +create trigger immutable_columns before update on kms_token_key for each row execute procedure immutable_columns('private_id', 'root_key_id', 'create_time'); -create trigger - default_create_time_column -before -insert on kms_token_key +create trigger default_create_time_column before insert on kms_token_key for each row execute procedure default_create_time(); create table kms_token_key_version ( @@ -299,21 +236,13 @@ create table kms_token_key_version ( ); -- define the immutable fields for kms_token_key_version (all of them) -create trigger - immutable_columns -before -update on kms_token_key_version +create trigger immutable_columns before update on kms_token_key_version for each row execute procedure immutable_columns('private_id', 'token_key_id', 'root_key_version_id', 'version', 'key', 'create_time'); -create trigger - default_create_time_column -before -insert on kms_token_key_version +create trigger default_create_time_column before insert on kms_token_key_version for each row execute procedure default_create_time(); -create trigger - kms_version_column -before insert on kms_token_key_version +create trigger kms_version_column before insert on kms_token_key_version for each row execute procedure kms_version_column('token_key_id'); insert into oplog_ticket @@ -322,4 +251,4 @@ before insert on kms_token_key_version ('kms_root_key', 1), ('kms_root_key_version', 1); -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/0/40_targets.up.sql b/internal/db/schema/migrations/oss/postgres/0/40_targets.up.sql index 668d8558d..83df26867 100644 --- a/internal/db/schema/migrations/oss/postgres/0/40_targets.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/40_targets.up.sql @@ -1,11 +1,8 @@ begin; - -- insert_target_subtype() is a before insert trigger -- function for subtypes of target -create or replace function - insert_target_subtype() - returns trigger +create or replace function insert_target_subtype() returns trigger as $$ begin insert into target @@ -18,8 +15,7 @@ $$ language plpgsql; -- delete_target_subtype() is an after delete trigger -- function for subtypes of host -create or replace function delete_target_subtype() - returns trigger +create or replace function delete_target_subtype() returns trigger as $$ begin delete from target @@ -30,9 +26,7 @@ end; $$ language plpgsql; -- target_scope_valid() is a before insert trigger function for target -create or replace function - target_scope_valid() - returns trigger +create or replace function target_scope_valid() returns trigger as $$ declare scope_type text; begin @@ -46,9 +40,7 @@ end; $$ language plpgsql; -- target_host_set_scope_valid() is a before insert trigger function for target_host_set -create or replace function - target_host_set_scope_valid() - returns trigger +create or replace function target_host_set_scope_valid() returns trigger as $$ begin perform from @@ -67,4 +59,4 @@ return new; end; $$ language plpgsql; -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/0/41_targets.up.sql b/internal/db/schema/migrations/oss/postgres/0/41_targets.up.sql index 0596bf6bb..f6a23a1d5 100644 --- a/internal/db/schema/migrations/oss/postgres/0/41_targets.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/41_targets.up.sql @@ -44,21 +44,13 @@ create table target ( create_time wt_timestamp ); -create trigger - immutable_columns -before -update on target +create trigger immutable_columns before update on target for each row execute procedure immutable_columns('public_id', 'scope_id', 'create_time'); -create trigger - default_create_time_column -before -insert on target +create trigger default_create_time_column before insert on target for each row execute procedure default_create_time(); -create trigger - target_scope_valid -before insert on target +create trigger target_scope_valid before insert on target for each row execute procedure target_scope_valid(); @@ -75,16 +67,10 @@ create table target_host_set( create_time wt_timestamp ); -create trigger - immutable_columns -before -update on target_host_set +create trigger immutable_columns before update on target_host_set for each row execute procedure immutable_columns('target_id', 'host_set_id', 'create_time'); -create trigger - target_host_set_scope_valid -before -insert on target_host_set +create trigger target_host_set_scope_valid before insert on target_host_set for each row execute procedure target_host_set_scope_valid(); create table target_tcp ( @@ -115,42 +101,26 @@ create table target_tcp ( unique(scope_id, name) -- name must be unique within a scope ); -create trigger - insert_target_subtype -before insert on target_tcp +create trigger insert_target_subtype before insert on target_tcp for each row execute procedure insert_target_subtype(); -create trigger - delete_target_subtype -after delete on target_tcp +create trigger delete_target_subtype after delete on target_tcp for each row execute procedure delete_target_subtype(); -- define the immutable fields for target -create trigger - immutable_columns -before -update on target_tcp +create trigger immutable_columns before update on target_tcp for each row execute procedure immutable_columns('public_id', 'scope_id', 'create_time'); -create trigger - update_version_column -after update on target_tcp +create trigger update_version_column after update on target_tcp for each row execute procedure update_version_column(); -create trigger - update_time_column -before update on target_tcp +create trigger update_time_column before update on target_tcp for each row execute procedure update_time_column(); -create trigger - default_create_time_column -before -insert on target_tcp +create trigger default_create_time_column before insert on target_tcp for each row execute procedure default_create_time(); -create trigger - target_scope_valid -before insert on target_tcp +create trigger target_scope_valid before insert on target_tcp for each row execute procedure target_scope_valid(); diff --git a/internal/db/schema/migrations/oss/postgres/0/50_session.up.sql b/internal/db/schema/migrations/oss/postgres/0/50_session.up.sql index c29715964..da02ba0ee 100644 --- a/internal/db/schema/migrations/oss/postgres/0/50_session.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/50_session.up.sql @@ -162,33 +162,21 @@ begin; ); -- Replaced in 100 to add worker_filter - create trigger - immutable_columns - before - update on session + create trigger immutable_columns before update on session for each row execute procedure immutable_columns('public_id', 'certificate', 'expiration_time', 'connection_limit', 'create_time', 'endpoint'); -- session table has some cascades of FK to null, so we need to be careful -- which columns trigger an update of the version column - create trigger - update_version_column - after update of version, termination_reason, key_id, tofu_token, server_id, server_type on session + create trigger update_version_column after update of version, termination_reason, key_id, tofu_token, server_id, server_type on session for each row execute procedure update_version_column(); - create trigger - update_time_column - before update on session + create trigger update_time_column before update on session for each row execute procedure update_time_column(); - create trigger - default_create_time_column - before - insert on session + create trigger default_create_time_column before insert on session for each row execute procedure default_create_time(); - create or replace function - insert_session() - returns trigger + create or replace function insert_session() returns trigger as $$ begin case @@ -212,14 +200,10 @@ begin; end; $$ language plpgsql; - create trigger - insert_session - before insert on session + create trigger insert_session before insert on session for each row execute procedure insert_session(); - create or replace function - insert_new_session_state() - returns trigger + create or replace function insert_new_session_state() returns trigger as $$ begin insert into session_state (session_id, state) @@ -229,18 +213,14 @@ begin; end; $$ language plpgsql; - create trigger - insert_new_session_state - after insert on session + create trigger insert_new_session_state after insert on session for each row execute procedure insert_new_session_state(); -- update_connection_state_on_closed_reason() is used in an update insert trigger on the -- session_connection table. it will valiadate that all the session's -- connections are closed, and then insert a state of "closed" in -- session_connection_state for the closed session connection. - create or replace function - update_session_state_on_termination_reason() - returns trigger + create or replace function update_session_state_on_termination_reason() returns trigger as $$ begin if new.termination_reason is not null then @@ -283,18 +263,13 @@ begin; end; $$ language plpgsql; - - create trigger - update_session_state_on_termination_reason - after update of termination_reason on session + create trigger update_session_state_on_termination_reason after update of termination_reason on session for each row execute procedure update_session_state_on_termination_reason(); - -- Updated in 29/01_cancel_session_null_fkey -- cancel_session will insert a cancel state for the session, if there's isn't -- a canceled state already. It's used by cancel_session_with_null_fk. - create or replace function - cancel_session(in sessionId text) returns void + create or replace function cancel_session(in sessionId text) returns void as $$ declare rows_affected numeric; @@ -324,9 +299,7 @@ begin; -- cancel_session_with_null_fk is intended to be a before update trigger that -- sets the session's state to cancel if a FK is set to null. - create or replace function - cancel_session_with_null_fk() - returns trigger + create or replace function cancel_session_with_null_fk() returns trigger as $$ begin case @@ -347,9 +320,7 @@ begin; end; $$ language plpgsql; - create trigger - cancel_session_with_null_fk - before update of user_id, host_id, target_id, host_set_id, auth_token_id, scope_id on session + create trigger cancel_session_with_null_fk before update of user_id, host_id, target_id, host_set_id, auth_token_id, scope_id on session for each row execute procedure cancel_session_with_null_fk(); create table session_state_enm ( @@ -420,17 +391,11 @@ begin; references session_state (session_id, end_time) ); - - create trigger - immutable_columns - before - update on session_state + create trigger immutable_columns before update on session_state for each row execute procedure immutable_columns('session_id', 'state', 'start_time', 'previous_end_time'); -- Replaced in 28/02_prior_session_trigger.up.sql - create or replace function - insert_session_state() - returns trigger + create or replace function insert_session_state() returns trigger as $$ begin @@ -454,7 +419,6 @@ begin; end; $$ language plpgsql; - create trigger insert_session_state before insert on session_state for each row execute procedure insert_session_state(); diff --git a/internal/db/schema/migrations/oss/postgres/0/51_connection.up.sql b/internal/db/schema/migrations/oss/postgres/0/51_connection.up.sql index dd6a5e697..aaf53376e 100644 --- a/internal/db/schema/migrations/oss/postgres/0/51_connection.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/51_connection.up.sql @@ -133,34 +133,22 @@ begin; update_time wt_timestamp ); - create trigger - immutable_columns - before - update on session_connection + create trigger immutable_columns before update on session_connection for each row execute procedure immutable_columns('public_id', 'session_id', 'create_time'); - create trigger - update_version_column - after update on session_connection + create trigger update_version_column after update on session_connection for each row execute procedure update_version_column(); - create trigger - update_time_column - before update on session_connection + create trigger update_time_column before update on session_connection for each row execute procedure update_time_column(); - create trigger - default_create_time_column - before - insert on session_connection + create trigger default_create_time_column before insert on session_connection for each row execute procedure default_create_time(); -- insert_new_connection_state() is used in an after insert trigger on the -- session_connection table. it will insert a state of "authorized" in -- session_connection_state for the new session connection. - create or replace function - insert_new_connection_state() - returns trigger + create or replace function insert_new_connection_state() returns trigger as $$ begin insert into session_connection_state (connection_id, state) @@ -170,18 +158,14 @@ begin; end; $$ language plpgsql; - create trigger - insert_new_connection_state - after insert on session_connection + create trigger insert_new_connection_state after insert on session_connection for each row execute procedure insert_new_connection_state(); -- Replaced in 27/01_disable_terminate_session.up.sql -- update_connection_state_on_closed_reason() is used in an update trigger on the -- session_connection table. it will insert a state of "closed" in -- session_connection_state for the closed session connection. - create or replace function - update_connection_state_on_closed_reason() - returns trigger + create or replace function update_connection_state_on_closed_reason() returns trigger as $$ begin if new.closed_reason is not null then @@ -205,9 +189,7 @@ begin; end; $$ language plpgsql; - create trigger - update_connection_state_on_closed_reason - after update of closed_reason on session_connection + create trigger update_connection_state_on_closed_reason after update of closed_reason on session_connection for each row execute procedure update_connection_state_on_closed_reason(); create table session_connection_state_enm ( @@ -224,7 +206,6 @@ begin; ('connected'), ('closed'); - create table session_connection_state ( connection_id wt_public_id not null references session_connection (public_id) @@ -250,15 +231,10 @@ begin; references session_connection_state (connection_id, end_time) ); - create trigger - immutable_columns - before - update on session_connection_state + create trigger immutable_columns before update on session_connection_state for each row execute procedure immutable_columns('connection_id', 'state', 'start_time', 'previous_end_time'); - create or replace function - insert_session_connection_state() - returns trigger + create or replace function insert_session_connection_state() returns trigger as $$ begin @@ -295,9 +271,7 @@ begin; -- -- Note: this function should align closely with the domain function -- TerminateCompletedSessions -create or replace function - terminate_session_if_possible(terminate_session_id text) - returns void +create or replace function terminate_session_if_possible(terminate_session_id text) returns void as $$ begin -- is terminate_session_id in a canceling state @@ -377,5 +351,4 @@ create or replace function end; $$ language plpgsql; - commit; diff --git a/internal/db/schema/migrations/oss/postgres/0/60_wh_domain_types.up.sql b/internal/db/schema/migrations/oss/postgres/0/60_wh_domain_types.up.sql index 4e40d4a78..daa4d3992 100644 --- a/internal/db/schema/migrations/oss/postgres/0/60_wh_domain_types.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/60_wh_domain_types.up.sql @@ -20,8 +20,7 @@ begin; -- wh_dim_id generates and returns a random ID which should be considered as -- universally unique. - create or replace function wh_dim_id() - returns text + create or replace function wh_dim_id() returns text as $$ select encode(digest(gen_random_bytes(16), 'sha256'), 'base64'); $$ language sql; @@ -54,29 +53,25 @@ begin; 'Text fields in dimension tables are always not null and always not empty strings'; -- wh_date_id returns the wh_date_dimension id for ts. - create or replace function wh_date_id(ts wh_timestamp) - returns integer + create or replace function wh_date_id(ts wh_timestamp) returns integer as $$ select to_char(ts, 'YYYYMMDD')::integer; $$ language sql; -- wh_time_id returns the wh_time_of_day_dimension id for ts. - create or replace function wh_time_id(ts wh_timestamp) - returns integer + create or replace function wh_time_id(ts wh_timestamp) returns integer as $$ select to_char(ts, 'SSSS')::integer; $$ language sql; -- wh_date_id returns the wh_date_dimension id for current_timestamp. - create or replace function wh_current_date_id() - returns integer + create or replace function wh_current_date_id() returns integer as $$ select wh_date_id(current_timestamp); $$ language sql; -- wh_time_id returns the wh_time_of_day_dimension id for current_timestamp. - create or replace function wh_current_time_id() - returns integer + create or replace function wh_current_time_id() returns integer as $$ select wh_time_id(current_timestamp); $$ language sql; diff --git a/internal/db/schema/migrations/oss/postgres/0/62_wh_datetime.up.sql b/internal/db/schema/migrations/oss/postgres/0/62_wh_datetime.up.sql index 729c5cc97..9f1d80919 100644 --- a/internal/db/schema/migrations/oss/postgres/0/62_wh_datetime.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/62_wh_datetime.up.sql @@ -29,8 +29,7 @@ begin; 'None' ); - insert - into wh_date_dimension + insert into wh_date_dimension select to_char(t.day, 'YYYYMMDD')::integer as id, t.day::date as date, 'Q' || to_char(t.day, 'Q') as calendar_quarter, @@ -77,8 +76,7 @@ begin; 'None', 'None', 'None' ); - insert - into wh_time_of_day_dimension + insert into wh_time_of_day_dimension select to_char(t.second, 'SSSS')::integer as id, t.second::time as time_no_zone, t.second::time as time_at_utc, diff --git a/internal/db/schema/migrations/oss/postgres/0/66_wh_session_dimensions.up.sql b/internal/db/schema/migrations/oss/postgres/0/66_wh_session_dimensions.up.sql index 3c6f920c7..28fca291c 100644 --- a/internal/db/schema/migrations/oss/postgres/0/66_wh_session_dimensions.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/66_wh_session_dimensions.up.sql @@ -8,8 +8,7 @@ begin; -- wh_host_dimension to match the current values in the operational tables and -- the new id is returned. If the values do not differ, the current id is -- returned. - create or replace function wh_upsert_host(p_host_id wt_public_id, p_host_set_id wt_public_id, p_target_id wt_public_id) - returns wh_dim_id + create or replace function wh_upsert_host(p_host_id wt_public_id, p_host_set_id wt_public_id, p_target_id wt_public_id) returns wh_dim_id as $$ declare src whx_host_dimension_target%rowtype; @@ -78,8 +77,7 @@ begin; -- wh_user_dimension differ, a new row is inserted in the wh_user_dimension to -- match the current values in the operational tables and the new id is -- returned. If the values do not differ, the current id is returned. - create or replace function wh_upsert_user(p_user_id wt_user_id, p_auth_token_id wt_public_id) - returns wh_dim_id + create or replace function wh_upsert_user(p_user_id wt_user_id, p_auth_token_id wt_public_id) returns wh_dim_id as $$ declare src whx_user_dimension_target%rowtype; diff --git a/internal/db/schema/migrations/oss/postgres/0/69_wh_session_facts.up.sql b/internal/db/schema/migrations/oss/postgres/0/69_wh_session_facts.up.sql index a8c5b8db2..36470e959 100644 --- a/internal/db/schema/migrations/oss/postgres/0/69_wh_session_facts.up.sql +++ b/internal/db/schema/migrations/oss/postgres/0/69_wh_session_facts.up.sql @@ -3,8 +3,7 @@ begin; -- wh_rollup_connections calculates the aggregate values from -- wh_session_connection_accumulating_fact for p_session_id and updates -- wh_session_accumulating_fact for p_session_id with those values. - create or replace function wh_rollup_connections(p_session_id wt_public_id) - returns void + create or replace function wh_rollup_connections(p_session_id wt_public_id) returns void as $$ declare session_row wh_session_accumulating_fact%rowtype; @@ -38,8 +37,7 @@ begin; -- wh_insert_session also calls the wh_upsert_host and wh_upsert_user -- functions which can result in new rows in wh_host_dimension and -- wh_user_dimension respectively. - create or replace function wh_insert_session() - returns trigger + create or replace function wh_insert_session() returns trigger as $$ declare new_row wh_session_accumulating_fact%rowtype; @@ -73,10 +71,8 @@ begin; end; $$ language plpgsql; - create trigger wh_insert_session - after insert on session - for each row - execute function wh_insert_session(); + create trigger wh_insert_session after insert on session + for each row execute function wh_insert_session(); -- -- Session Connection triggers @@ -87,8 +83,7 @@ begin; -- wh_session_connection_accumulating_fact for the new session connection. -- wh_insert_session_connection also calls wh_rollup_connections which can -- result in updates to wh_session_accumulating_fact. - create or replace function wh_insert_session_connection() - returns trigger + create or replace function wh_insert_session_connection() returns trigger as $$ declare new_row wh_session_connection_accumulating_fact%rowtype; @@ -141,10 +136,8 @@ begin; end; $$ language plpgsql; - create trigger wh_insert_session_connection - after insert on session_connection - for each row - execute function wh_insert_session_connection(); + create trigger wh_insert_session_connection after insert on session_connection + for each row execute function wh_insert_session_connection(); -- Updated in 27/01_disable_terminate_session.up.sql -- wh_update_session_connection returns an after update trigger for the @@ -152,8 +145,7 @@ begin; -- wh_session_connection_accumulating_fact for the session connection. -- wh_update_session_connection also calls wh_rollup_connections which can -- result in updates to wh_session_accumulating_fact. - create or replace function wh_update_session_connection() - returns trigger + create or replace function wh_update_session_connection() returns trigger as $$ declare updated_row wh_session_connection_accumulating_fact%rowtype; @@ -172,10 +164,8 @@ begin; end; $$ language plpgsql; - create trigger wh_update_session_connection - after update on session_connection - for each row - execute function wh_update_session_connection(); + create trigger wh_update_session_connection after update on session_connection + for each row execute function wh_update_session_connection(); -- -- Session State trigger @@ -183,8 +173,7 @@ begin; -- wh_insert_session_state returns an after insert trigger for the -- session_state table which updates wh_session_accumulating_fact. - create or replace function wh_insert_session_state() - returns trigger + create or replace function wh_insert_session_state() returns trigger as $$ declare date_col text; @@ -218,10 +207,8 @@ begin; end; $$ language plpgsql; - create trigger wh_insert_session_state - after insert on session_state - for each row - execute function wh_insert_session_state(); + create trigger wh_insert_session_state after insert on session_state + for each row execute function wh_insert_session_state(); -- -- Session Connection State trigger @@ -230,8 +217,7 @@ begin; -- wh_insert_session_connection_state returns an after insert trigger for the -- session_connection_state table which updates -- wh_session_connection_accumulating_fact. - create or replace function wh_insert_session_connection_state() - returns trigger + create or replace function wh_insert_session_connection_state() returns trigger as $$ declare date_col text; @@ -266,9 +252,7 @@ begin; end; $$ language plpgsql; - create trigger wh_insert_session_connection_state - after insert on session_connection_state - for each row - execute function wh_insert_session_connection_state(); + create trigger wh_insert_session_connection_state after insert on session_connection_state + for each row execute function wh_insert_session_connection_state(); commit; diff --git a/internal/db/schema/migrations/oss/postgres/1/01_server_tags_migrations.up.sql b/internal/db/schema/migrations/oss/postgres/1/01_server_tags_migrations.up.sql index 29aae104e..4823b7ca7 100644 --- a/internal/db/schema/migrations/oss/postgres/1/01_server_tags_migrations.up.sql +++ b/internal/db/schema/migrations/oss/postgres/1/01_server_tags_migrations.up.sql @@ -44,8 +44,7 @@ alter table session -- Replace the immutable columns trigger from 50 to add worker_filter drop trigger immutable_columns on session; -create trigger immutable_columns - before update on session +create trigger immutable_columns before update on session for each row execute procedure immutable_columns('public_id', 'certificate', 'expiration_time', 'connection_limit', 'create_time', 'endpoint', 'worker_filter'); -- Replaces the view created in 41 to include worker_filter @@ -124,4 +123,4 @@ create table server_tag ( primary key(server_id, key, value) ); -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/1/03_kms.up.sql b/internal/db/schema/migrations/oss/postgres/1/03_kms.up.sql index bcdbbc9d0..31e06ca87 100644 --- a/internal/db/schema/migrations/oss/postgres/1/03_kms.up.sql +++ b/internal/db/schema/migrations/oss/postgres/1/03_kms.up.sql @@ -11,17 +11,11 @@ create table kms_oidc_key ( ); -- define the immutable fields for kms_oidc_key (all of them) -create trigger - immutable_columns -before -update on kms_oidc_key +create trigger immutable_columns before update on kms_oidc_key for each row execute procedure immutable_columns('private_id', 'root_key_id', 'create_time'); -- define the value of kms_oidc_key's create_time -create trigger - default_create_time_column -before -insert on kms_oidc_key +create trigger default_create_time_column before insert on kms_oidc_key for each row execute procedure default_create_time(); -- kms_oidc_key_version entries are version of DEK keys used to encrypt oidc @@ -43,23 +37,15 @@ create table kms_oidc_key_version ( ); -- define the immutable fields for kms_oidc_key_version (all of them) -create trigger - immutable_columns -before -update on kms_oidc_key_version +create trigger immutable_columns before update on kms_oidc_key_version for each row execute procedure immutable_columns('private_id', 'oidc_key_id', 'root_key_version_id', 'version', 'key', 'create_time'); -- define the value of kms_oidc_key_version's create_time -create trigger - default_create_time_column -before -insert on kms_oidc_key_version +create trigger default_create_time_column before insert on kms_oidc_key_version for each row execute procedure default_create_time(); -- define the value of kms_oidc_key_version's version column -create trigger - kms_version_column -before insert on kms_oidc_key_version +create trigger kms_version_column before insert on kms_oidc_key_version for each row execute procedure kms_version_column('oidc_key_id'); commit; diff --git a/internal/db/schema/migrations/oss/postgres/10/02_sentinels.up.sql b/internal/db/schema/migrations/oss/postgres/10/02_sentinels.up.sql index b571ea0ad..e55f4cca0 100644 --- a/internal/db/schema/migrations/oss/postgres/10/02_sentinels.up.sql +++ b/internal/db/schema/migrations/oss/postgres/10/02_sentinels.up.sql @@ -1,7 +1,6 @@ begin; - create function wt_is_sentinel(string text) - returns bool + create function wt_is_sentinel(string text) returns bool as $$ select length(trim(leading u&'\fffe ' from string)) > 0 AND starts_with(string, u&'\fffe'); $$ language sql @@ -20,8 +19,7 @@ begin; comment on domain wt_sentinel is 'A non-empty string with a Unicode prefix of U+FFFE to indicate it is a sentinel value'; - create function wt_to_sentinel(string text) - returns text + create function wt_to_sentinel(string text) returns text as $$ select concat(u&'\fffe', trim(ltrim(string, u&'\fffe '))); $$ language sql diff --git a/internal/db/schema/migrations/oss/postgres/10/03_credential.up.sql b/internal/db/schema/migrations/oss/postgres/10/03_credential.up.sql index eb2d78853..cd6df51d9 100644 --- a/internal/db/schema/migrations/oss/postgres/10/03_credential.up.sql +++ b/internal/db/schema/migrations/oss/postgres/10/03_credential.up.sql @@ -24,8 +24,7 @@ begin; -- insert_credential_store_subtype() is a before insert trigger -- function for subtypes of credential_store - create function insert_credential_store_subtype() - returns trigger + create function insert_credential_store_subtype() returns trigger as $$ begin insert into credential_store @@ -38,8 +37,7 @@ begin; -- delete_credential_store_subtype() is an after delete trigger -- function for subtypes of credential_store - create function delete_credential_store_subtype() - returns trigger + create function delete_credential_store_subtype() returns trigger as $$ begin delete from credential_store @@ -48,7 +46,6 @@ begin; end; $$ language plpgsql; - -- credential_library create table credential_library ( public_id wt_public_id primary key, @@ -69,8 +66,7 @@ begin; -- insert_credential_library_subtype() is a before insert trigger -- function for subtypes of credential_library - create function insert_credential_library_subtype() - returns trigger + create function insert_credential_library_subtype() returns trigger as $$ begin insert into credential_library @@ -83,8 +79,7 @@ begin; -- delete_credential_library_subtype() is an after delete trigger -- function for subtypes of credential_library - create function delete_credential_library_subtype() - returns trigger + create function delete_credential_library_subtype() returns trigger as $$ begin delete from credential_library @@ -105,8 +100,7 @@ begin; -- insert_credential_subtype() is a before insert trigger -- function for subtypes of credential - create function insert_credential_subtype() - returns trigger + create function insert_credential_subtype() returns trigger as $$ begin insert into credential @@ -119,8 +113,7 @@ begin; -- delete_credential_subtype() is an after delete trigger -- function for subtypes of credential - create function delete_credential_subtype() - returns trigger + create function delete_credential_subtype() returns trigger as $$ begin delete from credential @@ -159,8 +152,7 @@ begin; -- insert_credential_static_subtype() is a before insert trigger -- function for subtypes of credential_static - create function insert_credential_static_subtype() - returns trigger + create function insert_credential_static_subtype() returns trigger as $$ begin insert into credential_static @@ -173,8 +165,7 @@ begin; -- delete_credential_static_subtype() is an after delete trigger -- function for subtypes of credential_static - create function delete_credential_static_subtype() - returns trigger + create function delete_credential_static_subtype() returns trigger as $$ begin delete from credential_static @@ -213,8 +204,7 @@ begin; -- insert_credential_dynamic_subtype() is a before insert trigger -- function for subtypes of credential_dynamic - create function insert_credential_dynamic_subtype() - returns trigger + create function insert_credential_dynamic_subtype() returns trigger as $$ begin insert into credential_dynamic @@ -227,8 +217,7 @@ begin; -- delete_credential_dynamic_subtype() is an after delete trigger -- function for subtypes of credential_dynamic - create function delete_credential_dynamic_subtype() - returns trigger + create function delete_credential_dynamic_subtype() returns trigger as $$ begin delete from credential_dynamic diff --git a/internal/db/schema/migrations/oss/postgres/10/04_vault_credential.up.sql b/internal/db/schema/migrations/oss/postgres/10/04_vault_credential.up.sql index 0624e24fb..5c7f35cb6 100644 --- a/internal/db/schema/migrations/oss/postgres/10/04_vault_credential.up.sql +++ b/internal/db/schema/migrations/oss/postgres/10/04_vault_credential.up.sql @@ -64,8 +64,7 @@ begin; -- and an update contains a value for delete_time different from the current -- value, this trigger will raise an error with error code 23602 which is a -- class 23 integrity constraint violation: set_once_violation. - create function before_soft_delete_credential_vault_store() - returns trigger + create function before_soft_delete_credential_vault_store() returns trigger as $$ begin if new.delete_time is distinct from old.delete_time then @@ -92,8 +91,7 @@ begin; -- When a credential store is soft deleted, this trigger: -- * marks any active Vault tokens owned by the credential store for revocation -- * deletes any credential library owned by the credential store - create function after_soft_delete_credential_vault_store() - returns trigger + create function after_soft_delete_credential_vault_store() returns trigger as $$ begin if new.delete_time is distinct from old.delete_time then @@ -198,8 +196,7 @@ begin; -- insert_credential_vault_token() is a before insert trigger -- function for credential_vault_token that changes the status of the current -- token to 'maintaining' - create function insert_credential_vault_token() - returns trigger + create function insert_credential_vault_token() returns trigger as $$ begin update credential_vault_token @@ -327,8 +324,7 @@ begin; -- before_insert_credential_vault_library is a before insert trigger for -- the credential_vault_library table that prevents a library from being -- inserted for a soft deleted credential store. - create function before_insert_credential_vault_library() - returns trigger + create function before_insert_credential_vault_library() returns trigger as $$ declare delete_time_val timestamp with time zone; @@ -427,8 +423,7 @@ begin; -- update_credential_status_column() is a before update trigger function for -- credential_vault_credential that changes the status of the credential to 'revoke' if -- the session_id is updated to null - create function update_credential_status_column() - returns trigger + create function update_credential_status_column() returns trigger as $$ begin if new.session_id is distinct from old.session_id then @@ -446,8 +441,7 @@ begin; -- not_null_columns() will make the column names not null which are passed as -- parameters when the trigger is created. It raises error code 23502 which is a -- class 23 integrity constraint violation: not null column - create function not_null_columns() - returns trigger + create function not_null_columns() returns trigger as $$ declare col_name text; @@ -466,7 +460,6 @@ begin; return new; end; $$ language plpgsql; - comment on function not_null_columns() is 'function used in before insert triggers to make columns not null on insert, but are allowed be updated to null'; diff --git a/internal/db/schema/migrations/oss/postgres/10/06_session.up.sql b/internal/db/schema/migrations/oss/postgres/10/06_session.up.sql index 2592034df..73cbc8f51 100644 --- a/internal/db/schema/migrations/oss/postgres/10/06_session.up.sql +++ b/internal/db/schema/migrations/oss/postgres/10/06_session.up.sql @@ -38,8 +38,7 @@ begin; -- revoke_credentials revokes any active credentials for a session when the -- session enters the canceling or terminated states. - create function revoke_credentials() - returns trigger + create function revoke_credentials() returns trigger as $$ begin if new.state in ('canceling', 'terminated') then @@ -51,6 +50,7 @@ begin; return new; end; $$ language plpgsql; + create trigger revoke_credentials after insert on session_state for each row execute procedure revoke_credentials(); diff --git a/internal/db/schema/migrations/oss/postgres/10/07_sentinels.up.sql b/internal/db/schema/migrations/oss/postgres/10/07_sentinels.up.sql index 10f82eccf..abd5e87b5 100644 --- a/internal/db/schema/migrations/oss/postgres/10/07_sentinels.up.sql +++ b/internal/db/schema/migrations/oss/postgres/10/07_sentinels.up.sql @@ -10,8 +10,7 @@ alter domain wt_sentinel drop function wt_is_sentinel; -create function wt_is_sentinel(string text) - returns bool +create function wt_is_sentinel(string text) returns bool as $$ select starts_with(string, u&'\fffe') and starts_with(reverse(string), u&'\ffff'); $$ language sql @@ -27,7 +26,6 @@ alter domain wt_sentinel or length(trim(trailing u&'\ffff' from trim(leading u&'\fffe ' from value))) > 0 ); - comment on domain wt_sentinel is 'A non-empty string with a Unicode prefix of U+FFFE and suffix of U+FFFF to indicate it is a sentinel value'; diff --git a/internal/db/schema/migrations/oss/postgres/12/01_timestamp_sub_funcs.up.sql b/internal/db/schema/migrations/oss/postgres/12/01_timestamp_sub_funcs.up.sql index 09b246880..9b49c403c 100644 --- a/internal/db/schema/migrations/oss/postgres/12/01_timestamp_sub_funcs.up.sql +++ b/internal/db/schema/migrations/oss/postgres/12/01_timestamp_sub_funcs.up.sql @@ -1,7 +1,6 @@ begin; - create function wt_sub_seconds(sec integer, ts timestamp with time zone) - returns timestamp with time zone + create function wt_sub_seconds(sec integer, ts timestamp with time zone) returns timestamp with time zone as $$ select ts - sec * '1 second'::interval; $$ language sql @@ -10,8 +9,7 @@ begin; comment on function wt_add_seconds is 'wt_sub_seconds returns ts - sec.'; - create function wt_sub_seconds_from_now(sec integer) - returns timestamp with time zone + create function wt_sub_seconds_from_now(sec integer) returns timestamp with time zone as $$ select wt_sub_seconds(sec, current_timestamp); $$ language sql diff --git a/internal/db/schema/migrations/oss/postgres/14/01_wh_user_dimension_oidc.up.sql b/internal/db/schema/migrations/oss/postgres/14/01_wh_user_dimension_oidc.up.sql index 3c9dabf3a..d02094933 100644 --- a/internal/db/schema/migrations/oss/postgres/14/01_wh_user_dimension_oidc.up.sql +++ b/internal/db/schema/migrations/oss/postgres/14/01_wh_user_dimension_oidc.up.sql @@ -135,8 +135,7 @@ begin; ; drop function wh_upsert_user; - create function wh_upsert_user(p_user_id wt_user_id, p_auth_token_id wt_public_id) - returns wh_dim_id + create function wh_upsert_user(p_user_id wt_user_id, p_auth_token_id wt_public_id) returns wh_dim_id as $$ declare src whx_user_dimension_target%rowtype; diff --git a/internal/db/schema/migrations/oss/postgres/15/01_wh_rename_key_columns.up.sql b/internal/db/schema/migrations/oss/postgres/15/01_wh_rename_key_columns.up.sql index 52a330a5f..9b048cfa9 100644 --- a/internal/db/schema/migrations/oss/postgres/15/01_wh_rename_key_columns.up.sql +++ b/internal/db/schema/migrations/oss/postgres/15/01_wh_rename_key_columns.up.sql @@ -95,8 +95,7 @@ begin; -- replaces function from 14/01_wh_user_dimension_oidc.up.sql drop function wh_upsert_user; - create function wh_upsert_user(p_user_id wt_user_id, p_auth_token_id wt_public_id) - returns wh_dim_key + create function wh_upsert_user(p_user_id wt_user_id, p_auth_token_id wt_public_id) returns wh_dim_key as $$ declare src whx_user_dimension_target%rowtype; @@ -193,8 +192,7 @@ begin; -- replaces function from 0/66_wh_session_dimensions.up.sql drop function wh_upsert_host; - create function wh_upsert_host(p_host_id wt_public_id, p_host_set_id wt_public_id, p_target_id wt_public_id) - returns wh_dim_key + create function wh_upsert_host(p_host_id wt_public_id, p_host_set_id wt_public_id, p_target_id wt_public_id) returns wh_dim_key as $$ declare src whx_host_dimension_target%rowtype; @@ -259,8 +257,8 @@ begin; -- replaces function from 0/69_wh_session_facts.up.sql drop trigger wh_insert_session on session; drop function wh_insert_session; - create function wh_insert_session() - returns trigger + + create function wh_insert_session() returns trigger as $$ declare new_row wh_session_accumulating_fact%rowtype; @@ -293,16 +291,15 @@ begin; return null; end; $$ language plpgsql; - create trigger wh_insert_session - after insert on session - for each row - execute function wh_insert_session(); + + create trigger wh_insert_session after insert on session + for each row execute function wh_insert_session(); -- replaces function from 0/69_wh_session_facts.up.sql drop trigger wh_insert_session_connection on session_connection; drop function wh_insert_session_connection; - create function wh_insert_session_connection() - returns trigger + + create function wh_insert_session_connection() returns trigger as $$ declare new_row wh_session_connection_accumulating_fact%rowtype; @@ -355,16 +352,14 @@ begin; end; $$ language plpgsql; - create trigger wh_insert_session_connection - after insert on session_connection - for each row - execute function wh_insert_session_connection(); + create trigger wh_insert_session_connection after insert on session_connection + for each row execute function wh_insert_session_connection(); -- replaces function from 0/69_wh_session_facts.up.sql drop trigger wh_insert_session_state on session_state; drop function wh_insert_session_state; - create function wh_insert_session_state() - returns trigger + + create function wh_insert_session_state() returns trigger as $$ declare date_col text; @@ -398,16 +393,14 @@ begin; end; $$ language plpgsql; - create trigger wh_insert_session_state - after insert on session_state - for each row - execute function wh_insert_session_state(); + create trigger wh_insert_session_state after insert on session_state + for each row execute function wh_insert_session_state(); -- replaces function from 0/69_wh_session_facts.up.sql drop trigger wh_insert_session_connection_state on session_connection_state; drop function wh_insert_session_connection_state; - create function wh_insert_session_connection_state() - returns trigger + + create function wh_insert_session_connection_state() returns trigger as $$ declare date_col text; @@ -442,8 +435,7 @@ begin; end; $$ language plpgsql; - create trigger wh_insert_session_connection_state - after insert on session_connection_state - for each row - execute function wh_insert_session_connection_state(); + create trigger wh_insert_session_connection_state after insert on session_connection_state + for each row execute function wh_insert_session_connection_state(); + commit; diff --git a/internal/db/schema/migrations/oss/postgres/15/02_wh_rename_host_dimension_org.up.sql b/internal/db/schema/migrations/oss/postgres/15/02_wh_rename_host_dimension_org.up.sql index 95dca7868..00ffdf5e2 100644 --- a/internal/db/schema/migrations/oss/postgres/15/02_wh_rename_host_dimension_org.up.sql +++ b/internal/db/schema/migrations/oss/postgres/15/02_wh_rename_host_dimension_org.up.sql @@ -93,8 +93,7 @@ begin; -- replaces function from 15/01_wh_rename_key_columns.up.sql -- replaced in 26/03_wh_network_address_dimensions.up.sql drop function wh_upsert_host; - create function wh_upsert_host(p_host_id wt_public_id, p_host_set_id wt_public_id, p_target_id wt_public_id) - returns wh_dim_key + create function wh_upsert_host(p_host_id wt_public_id, p_host_set_id wt_public_id, p_target_id wt_public_id) returns wh_dim_key as $$ declare src whx_host_dimension_target%rowtype; diff --git a/internal/db/schema/migrations/oss/postgres/16/03_wh_credential_dimension.up.sql b/internal/db/schema/migrations/oss/postgres/16/03_wh_credential_dimension.up.sql index 8f3d12673..e2792b40b 100644 --- a/internal/db/schema/migrations/oss/postgres/16/03_wh_credential_dimension.up.sql +++ b/internal/db/schema/migrations/oss/postgres/16/03_wh_credential_dimension.up.sql @@ -1,10 +1,10 @@ begin; + -- wh_upsert_credential_dimension compares the current vaules in the wh_credential_dimension -- with the current values in the operational tables for the given parameters. IF the values -- between operational tables and the wh_credential_dimension differ, a new row is inserted in -- the wh_credential_dimension to match the current values in the operational tables. - create function wh_upsert_credential_dimension(p_session_id wt_public_id, p_library_id wt_public_id, p_credential_purpose wh_dim_text) - returns wh_dim_key + create function wh_upsert_credential_dimension(p_session_id wt_public_id, p_library_id wt_public_id, p_credential_purpose wh_dim_text) returns wh_dim_key as $$ declare src whx_credential_dimension_target%rowtype; @@ -76,24 +76,21 @@ begin; $$ language plpgsql; -- Run wh_upsert_credential_dimension for session_credential_dynamic row that is inserted. - create function wh_insert_session_credential_dynamic() - returns trigger + create function wh_insert_session_credential_dynamic() returns trigger as $$ begin perform wh_upsert_credential_dimension(new.session_id, new.library_id, new.credential_purpose); return null; end; $$ language plpgsql; - create trigger wh_insert_session_credential_dynamic - after insert on session_credential_dynamic - for each row - execute function wh_insert_session_credential_dynamic(); + + create trigger wh_insert_session_credential_dynamic after insert on session_credential_dynamic + for each row execute function wh_insert_session_credential_dynamic(); -- wh_upsert_credentail_group determines if a new wh_credential_group needs to be -- created due to changes to the coresponding wh_credential_dimensions. It then -- updates the wh_session_accumulating_fact to associate it with the correct wh_credential_group. - create function wh_upsert_credentail_group() - returns trigger + create function wh_upsert_credentail_group() returns trigger as $$ declare cg_key wh_dim_key; @@ -162,9 +159,8 @@ begin; -- the wh_insert_session_credential_dynamic trigger ran for each row and updated -- the wh_credential_dimensions. Then this statement trigger can run to update the -- bridge tables and wh_session_accumulating_fact. - create trigger wh_insert_stmt_session_credential_dynamic - after insert on session_credential_dynamic + create trigger wh_insert_stmt_session_credential_dynamic after insert on session_credential_dynamic referencing new table as new_table - for each statement - execute function wh_upsert_credentail_group(); + for each statement execute function wh_upsert_credentail_group(); + commit; diff --git a/internal/db/schema/migrations/oss/postgres/16/04_wh_credential_dimension.up.sql b/internal/db/schema/migrations/oss/postgres/16/04_wh_credential_dimension.up.sql index bb4aecbfe..3a28f709d 100644 --- a/internal/db/schema/migrations/oss/postgres/16/04_wh_credential_dimension.up.sql +++ b/internal/db/schema/migrations/oss/postgres/16/04_wh_credential_dimension.up.sql @@ -1,18 +1,19 @@ begin; + alter table wh_session_accumulating_fact - add column credential_group_key wh_dim_key not null - default 'Unknown' + add column credential_group_key wh_dim_key not null default 'Unknown' references wh_credential_group (key) on delete restrict on update cascade; + alter table wh_session_accumulating_fact alter column credential_group_key drop default; -- replaces function from 15/01_wh_rename_key_columns.up.sql drop trigger wh_insert_session on session; drop function wh_insert_session; - create function wh_insert_session() - returns trigger + + create function wh_insert_session() returns trigger as $$ declare new_row wh_session_accumulating_fact%rowtype; @@ -47,8 +48,8 @@ begin; return null; end; $$ language plpgsql; - create trigger wh_insert_session - after insert on session - for each row - execute function wh_insert_session(); + + create trigger wh_insert_session after insert on session + for each row execute function wh_insert_session(); + commit; diff --git a/internal/db/schema/migrations/oss/postgres/16/05_wh_credential_dimension.up.sql b/internal/db/schema/migrations/oss/postgres/16/05_wh_credential_dimension.up.sql index eed53efee..19f522ac2 100644 --- a/internal/db/schema/migrations/oss/postgres/16/05_wh_credential_dimension.up.sql +++ b/internal/db/schema/migrations/oss/postgres/16/05_wh_credential_dimension.up.sql @@ -1,10 +1,11 @@ begin; + alter table wh_session_connection_accumulating_fact - add column credential_group_key wh_dim_key not null - default 'Unknown' + add column credential_group_key wh_dim_key not null default 'Unknown' references wh_credential_group (key) on delete restrict on update cascade; + alter table wh_session_connection_accumulating_fact alter column credential_group_key drop default; @@ -12,8 +13,8 @@ begin; -- replaces function from 15/01_wh_rename_key_columns.up.sql drop trigger wh_insert_session_connection on session_connection; drop function wh_insert_session_connection; - create function wh_insert_session_connection() - returns trigger + + create function wh_insert_session_connection() returns trigger as $$ declare new_row wh_session_connection_accumulating_fact%rowtype; @@ -68,9 +69,8 @@ begin; end; $$ language plpgsql; - create trigger wh_insert_session_connection - after insert on session_connection - for each row - execute function wh_insert_session_connection(); + create trigger wh_insert_session_connection after insert on session_connection + for each row execute function wh_insert_session_connection(); + commit; diff --git a/internal/db/schema/migrations/oss/postgres/17/01_servers.up.sql b/internal/db/schema/migrations/oss/postgres/17/01_servers.up.sql index 4b84e5c9c..27ad1952b 100644 --- a/internal/db/schema/migrations/oss/postgres/17/01_servers.up.sql +++ b/internal/db/schema/migrations/oss/postgres/17/01_servers.up.sql @@ -3,14 +3,10 @@ begin; -- server table inserts/updates historically included setting the update_time -- column to now(). Since we're now using the "standard" db package to do this, -- we need to add triggers to set the update_time for every insert/update. -create trigger - update_time_column -before update on server +create trigger update_time_column before update on server for each row execute procedure update_time_column(); -create trigger - insert_time_column -before insert on server +create trigger insert_time_column before insert on server for each row execute procedure update_time_column(); -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/18/01_nonce.up.sql b/internal/db/schema/migrations/oss/postgres/18/01_nonce.up.sql index 9b29a355d..16109ca21 100644 --- a/internal/db/schema/migrations/oss/postgres/18/01_nonce.up.sql +++ b/internal/db/schema/migrations/oss/postgres/18/01_nonce.up.sql @@ -30,8 +30,7 @@ alter table recovery_nonces rename to nonce; -- Add purpose field alter table nonce - add column purpose text not null - default 'recovery' + add column purpose text not null default 'recovery' constraint nonce_type_enm_fkey references nonce_type_enm(name) on update cascade @@ -42,16 +41,10 @@ alter table nonce -- Recreate triggers -create trigger - default_create_time_column -before -insert on nonce +create trigger default_create_time_column before insert on nonce for each row execute procedure default_create_time(); -create trigger - immutable_columns -before -update on nonce +create trigger immutable_columns before update on nonce for each row execute procedure immutable_columns('nonce', 'create_time', 'purpose'); -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/19/01_db.up.sql b/internal/db/schema/migrations/oss/postgres/19/01_db.up.sql index 352e80934..a1616e6ae 100644 --- a/internal/db/schema/migrations/oss/postgres/19/01_db.up.sql +++ b/internal/db/schema/migrations/oss/postgres/19/01_db.up.sql @@ -7,25 +7,15 @@ create table if not exists db_test_accessory ( description text not null ); -create trigger - update_time_column -before -update on db_test_accessory +create trigger update_time_column before update on db_test_accessory for each row execute procedure update_time_column(); -create trigger - immutable_columns -before -update on db_test_accessory +create trigger immutable_columns before update on db_test_accessory for each row execute procedure immutable_columns('create_time'); -create trigger - default_create_time_column -before -insert on db_test_accessory +create trigger default_create_time_column before insert on db_test_accessory for each row execute procedure default_create_time(); - create table if not exists db_test_scooter_accessory ( accessory_id bigint references db_test_accessory(accessory_id), scooter_id bigint references db_test_scooter(id), @@ -35,22 +25,13 @@ create table if not exists db_test_scooter_accessory ( primary key(accessory_id, scooter_id) ); -create trigger - update_time_column -before -update on db_test_scooter_accessory +create trigger update_time_column before update on db_test_scooter_accessory for each row execute procedure update_time_column(); -create trigger - immutable_columns -before -update on db_test_scooter_accessory +create trigger immutable_columns before update on db_test_scooter_accessory for each row execute procedure immutable_columns('create_time'); -create trigger - default_create_time_column -before -insert on db_test_scooter_accessory +create trigger default_create_time_column before insert on db_test_scooter_accessory for each row execute procedure default_create_time(); -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/19/02_kms_audit.up.sql b/internal/db/schema/migrations/oss/postgres/19/02_kms_audit.up.sql index 73270afa5..23cfe7dc0 100644 --- a/internal/db/schema/migrations/oss/postgres/19/02_kms_audit.up.sql +++ b/internal/db/schema/migrations/oss/postgres/19/02_kms_audit.up.sql @@ -11,17 +11,11 @@ create table kms_audit_key ( ); -- define the immutable fields for kms_audit_key (all of them) -create trigger - immutable_columns -before -update on kms_audit_key +create trigger immutable_columns before update on kms_audit_key for each row execute procedure immutable_columns('private_id', 'root_key_id', 'create_time'); -- define the value of kms_audit_key's create_time -create trigger - default_create_time_column -before -insert on kms_audit_key +create trigger default_create_time_column before insert on kms_audit_key for each row execute procedure default_create_time(); -- kms_audit_key_version entries are version of DEK keys used crypto operations on audit entries. @@ -44,23 +38,15 @@ create table kms_audit_key_version ( ); -- define the immutable fields for kms_audit_key_version (all of them) -create trigger - immutable_columns -before -update on kms_audit_key_version +create trigger immutable_columns before update on kms_audit_key_version for each row execute procedure immutable_columns('private_id', 'audit_key_id', 'root_key_version_id', 'version', 'key', 'create_time'); -- define the value of kms_audit_key_version's create_time -create trigger - default_create_time_column -before -insert on kms_audit_key_version +create trigger default_create_time_column before insert on kms_audit_key_version for each row execute procedure default_create_time(); -- define the value of kms_audit_key_version's version column -create trigger - kms_version_column -before insert on kms_audit_key_version +create trigger kms_version_column before insert on kms_audit_key_version for each row execute procedure kms_version_column('audit_key_id'); commit; diff --git a/internal/db/schema/migrations/oss/postgres/2/03_oidc_enm.up.sql b/internal/db/schema/migrations/oss/postgres/2/03_oidc_enm.up.sql index 31443b7fb..4818d36c0 100644 --- a/internal/db/schema/migrations/oss/postgres/2/03_oidc_enm.up.sql +++ b/internal/db/schema/migrations/oss/postgres/2/03_oidc_enm.up.sql @@ -18,10 +18,7 @@ insert into auth_oidc_method_state_enm(name) ('active-public'); -- define the immutable fields for auth_oidc_method_state_enm (all of them) -create trigger - immutable_columns -before -update on auth_oidc_method_state_enm +create trigger immutable_columns before update on auth_oidc_method_state_enm for each row execute procedure immutable_columns('name'); @@ -61,10 +58,7 @@ insert into auth_oidc_signing_alg_enm (name) ; -- define the immutable fields for auth_oidc_signing_alg (all of them) -create trigger - immutable_columns -before -update on auth_oidc_signing_alg_enm +create trigger immutable_columns before update on auth_oidc_signing_alg_enm for each row execute procedure immutable_columns('name'); commit; diff --git a/internal/db/schema/migrations/oss/postgres/2/04_oidc.up.sql b/internal/db/schema/migrations/oss/postgres/2/04_oidc.up.sql index cdc04f835..21ba2d5ca 100644 --- a/internal/db/schema/migrations/oss/postgres/2/04_oidc.up.sql +++ b/internal/db/schema/migrations/oss/postgres/2/04_oidc.up.sql @@ -3,10 +3,8 @@ begin; -- auth_oidc_method entries are the current oidc auth methods configured for -- existing scopes. create table auth_oidc_method ( - public_id wt_public_id - primary key, - scope_id wt_scope_id - not null, + public_id wt_public_id primary key, + scope_id wt_scope_id not null, name wt_name, description wt_description, create_time wt_timestamp, @@ -116,10 +114,8 @@ comment on table auth_oidc_certificate is -- auth_oidc_account entries are subtypes of auth_account and represent an -- oidc account. create table auth_oidc_account ( - public_id wt_public_id - primary key, - auth_method_id wt_public_id - not null, + public_id wt_public_id primary key, + auth_method_id wt_public_id not null, -- NOTE(mgaffney): The scope_id type is not wt_scope_id because the domain -- check is executed before the insert trigger which retrieves the scope_id -- causing an insert to fail. @@ -166,40 +162,25 @@ comment on table auth_oidc_method is 'auth_oidc_account entries are subtypes of auth_account and represent an oidc account.'; -- auth_oidc_method column triggers -create trigger - insert_auth_method_subtype -before insert on auth_oidc_method +create trigger insert_auth_method_subtype before insert on auth_oidc_method for each row execute procedure insert_auth_method_subtype(); -create trigger - update_time_column -before -update on auth_oidc_method +create trigger update_time_column before update on auth_oidc_method for each row execute procedure update_time_column(); -create trigger - immutable_columns -before -update on auth_oidc_method +create trigger immutable_columns before update on auth_oidc_method for each row execute procedure immutable_columns('public_id', 'scope_id', 'create_time'); -create trigger - default_create_time_column -before -insert on auth_oidc_method +create trigger default_create_time_column before insert on auth_oidc_method for each row execute procedure default_create_time(); -create trigger - update_version_column -after update on auth_oidc_method +create trigger update_version_column after update on auth_oidc_method for each row execute procedure update_version_column(); -- active_auth_oidc_method_must_be_complete() defines a function to be used in -- a "before update" trigger for auth_oidc_method entries. Its intent: prevent -- incomplete oidc methods from transitioning out of the "inactive" state. -create or replace function - active_auth_oidc_method_must_be_complete() - returns trigger +create or replace function active_auth_oidc_method_must_be_complete() returns trigger as $$ begin -- validate signing alg @@ -258,10 +239,7 @@ $$ language plpgsql; comment on function active_auth_oidc_method_must_be_complete() is 'active_auth_oidc_method_must_be_complete() will raise an error if the oidc auth method is not complete'; -create trigger - update_active_auth_oidc_method_must_be_complete -before -update on auth_oidc_method +create trigger update_active_auth_oidc_method_must_be_complete before update on auth_oidc_method for each row execute procedure active_auth_oidc_method_must_be_complete(); -- new_auth_oidc_method_must_be_inactive() defines a function to be used in @@ -270,9 +248,7 @@ update on auth_oidc_method -- you can insert an entry that's anything but incomplete, since we have a -- chicken/egg problem: you need the auth method id to create the required -- signing algs value objects. -create or replace function - new_auth_oidc_method_must_be_inactive() - returns trigger +create or replace function new_auth_oidc_method_must_be_inactive() returns trigger as $$ begin if new.state != 'inactive' then @@ -283,34 +259,20 @@ $$ language plpgsql; comment on function new_auth_oidc_method_must_be_inactive() is 'new_auth_oidc_method_must_be_inactive ensures that new incomplete oidc auth methods must remain inactive'; -create trigger - new_auth_oidc_method_must_be_inactive -before -insert on auth_oidc_method +create trigger new_auth_oidc_method_must_be_inactive before insert on auth_oidc_method for each row execute procedure active_auth_oidc_method_must_be_complete(); -- auth_oidc_account column triggers -create trigger - update_time_column -before -update on auth_oidc_account +create trigger update_time_column before update on auth_oidc_account for each row execute procedure update_time_column(); -create trigger - immutable_columns -before -update on auth_oidc_account +create trigger immutable_columns before update on auth_oidc_account for each row execute procedure immutable_columns('public_id', 'auth_method_id', 'scope_id', 'create_time', 'issuer', 'subject'); -create trigger - default_create_time_column -before -insert on auth_oidc_account +create trigger default_create_time_column before insert on auth_oidc_account for each row execute procedure default_create_time(); -create trigger - update_version_column -after update on auth_oidc_account +create trigger update_version_column after update on auth_oidc_account for each row execute procedure update_version_column(); @@ -322,9 +284,7 @@ after update on auth_oidc_account -- raising on an error to insert into the auth_oidc_account table. -- this is all necessary because of we're using predictable public ids -- for oidc accounts. -create or replace function - insert_auth_oidc_account_subtype() - returns trigger +create or replace function insert_auth_oidc_account_subtype() returns trigger as $$ begin select auth_method.scope_id @@ -342,9 +302,7 @@ begin end; $$ language plpgsql; -create trigger - insert_auth_oidc_account_subtype -before insert on auth_oidc_account +create trigger insert_auth_oidc_account_subtype before insert on auth_oidc_account for each row execute procedure insert_auth_oidc_account_subtype(); -- triggers for auth_oidc_method children tables: auth_oidc_aud_claim, @@ -355,9 +313,7 @@ before insert on auth_oidc_account -- to be used in an "after delete" trigger for auth_oidc_signing_alg -- Its intent: prevent deletes that would result in an "active" oidc -- auth method which is incomplete. -create or replace function - on_delete_active_auth_oidc_method_must_be_complete() - returns trigger +create or replace function on_delete_active_auth_oidc_method_must_be_complete() returns trigger as $$ declare am_state text; declare alg_cnt int; @@ -408,10 +364,7 @@ before insert on auth_oidc_signing_alg for each row execute procedure default_create_time(); -create trigger - on_delete_active_auth_oidc_method_must_be_complete -after -delete on auth_oidc_signing_alg +create trigger on_delete_active_auth_oidc_method_must_be_complete after delete on auth_oidc_signing_alg for each row execute procedure on_delete_active_auth_oidc_method_must_be_complete(); insert into oplog_ticket (name, version) diff --git a/internal/db/schema/migrations/oss/postgres/2/05_authtoken.up.sql b/internal/db/schema/migrations/oss/postgres/2/05_authtoken.up.sql index 51c14600a..7d38e8221 100644 --- a/internal/db/schema/migrations/oss/postgres/2/05_authtoken.up.sql +++ b/internal/db/schema/migrations/oss/postgres/2/05_authtoken.up.sql @@ -21,9 +21,7 @@ insert into auth_token_status_enm(name) -- add the state column with a default to the auth_token table. alter table auth_token -add column status text -not null -default 'token issued' -- safest default +add column status text not null default 'token issued' -- safest default references auth_token_status_enm(name) on update cascade on delete restrict; @@ -45,4 +43,4 @@ create or replace view auth_token_account as inner join auth_account as aa on at.auth_account_id = aa.public_id; -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/2/10_auth.up.sql b/internal/db/schema/migrations/oss/postgres/2/10_auth.up.sql index b92a1ae89..647da0779 100644 --- a/internal/db/schema/migrations/oss/postgres/2/10_auth.up.sql +++ b/internal/db/schema/migrations/oss/postgres/2/10_auth.up.sql @@ -24,9 +24,7 @@ where -- migration 07_auth.up.sql This new definition also inserts the sub type's name -- into the base type. The name column must be on the base type, so the database -- can ensure that auth method names are unique across all sub types. -create or replace function - insert_auth_method_subtype() - returns trigger +create or replace function insert_auth_method_subtype() returns trigger as $$ begin insert into auth_method @@ -44,9 +42,7 @@ comment on function insert_auth_method_subtype() is -- that the name column is syncronized between the sub and base auth method -- types. The name column must be on the base type, so the database can ensure -- that auth method names are unique across all sub types. -create or replace function - update_auth_method_subtype() - returns trigger +create or replace function update_auth_method_subtype() returns trigger as $$ begin update auth_method set name = new.name where public_id = new.public_id and new.name != name; @@ -56,23 +52,15 @@ $$ language plpgsql; comment on function update_auth_method_subtype() is 'update_auth_method_subtype() will update base auth method type name column with new values from sub type'; -create trigger - update_auth_method_subtype -before update on auth_oidc_method +create trigger update_auth_method_subtype before update on auth_oidc_method for each row execute procedure update_auth_method_subtype(); - -create trigger - update_auth_method_subtype -before update on auth_password_method +create trigger update_auth_method_subtype before update on auth_password_method for each row execute procedure update_auth_method_subtype(); - -- delete_auth_method_subtype() is an after trigger function for subytypes of -- auth_method -create or replace function - delete_auth_method_subtype() - returns trigger +create or replace function delete_auth_method_subtype() returns trigger as $$ begin delete from auth_method @@ -83,15 +71,10 @@ $$ language plpgsql; comment on function delete_auth_method_subtype is 'delete_auth_method_subtype() is an after trigger function for subytypes of auth_method'; -create trigger - delete_auth_method_subtype -after delete on auth_oidc_method +create trigger delete_auth_method_subtype after delete on auth_oidc_method for each row execute procedure delete_auth_method_subtype(); - -create trigger - delete_auth_method_subtype -after delete on auth_password_method +create trigger delete_auth_method_subtype after delete on auth_password_method for each row execute procedure delete_auth_method_subtype(); commit; diff --git a/internal/db/schema/migrations/oss/postgres/20/02_plugin.up.sql b/internal/db/schema/migrations/oss/postgres/20/02_plugin.up.sql index 9ac669031..d7c3f3148 100644 --- a/internal/db/schema/migrations/oss/postgres/20/02_plugin.up.sql +++ b/internal/db/schema/migrations/oss/postgres/20/02_plugin.up.sql @@ -9,9 +9,7 @@ begin; -- in a specific scope across all plugin subtypes. alter table plugin add column name wt_name, - add column scope_id wt_scope_id - not null - default 'global' + add column scope_id wt_scope_id not null default 'global' constraint iam_scope_global_fkey references iam_scope_global(scope_id) on delete cascade @@ -32,8 +30,7 @@ begin; -- insert, update, and delete plugin_subtypes are created since we are adding -- subtyped plugins and we need to keep the base table plugin in sync with all -- subtype tables. - create function insert_plugin_subtype() - returns trigger + create function insert_plugin_subtype() returns trigger as $$ begin insert into plugin @@ -46,8 +43,7 @@ begin; comment on function insert_plugin_subtype() is 'insert_plugin_subtype() inserts sub type name into the base type plugin table'; - create function update_plugin_subtype() - returns trigger + create function update_plugin_subtype() returns trigger as $$ begin update plugin set name = new.name where public_id = new.public_id and new.name != name; @@ -59,8 +55,7 @@ begin; -- delete_plugin_subtype() is an after delete trigger function -- for subtypes of plugin - create function delete_plugin_subtype() - returns trigger + create function delete_plugin_subtype() returns trigger as $$ begin delete from plugin diff --git a/internal/db/schema/migrations/oss/postgres/20/04_host.up.sql b/internal/db/schema/migrations/oss/postgres/20/04_host.up.sql index 2597f9700..a28ab688a 100644 --- a/internal/db/schema/migrations/oss/postgres/20/04_host.up.sql +++ b/internal/db/schema/migrations/oss/postgres/20/04_host.up.sql @@ -23,8 +23,7 @@ begin; -- to include the name. -- insert_host_catalog_subtype() is a before insert trigger -- function for subtypes of host_catalog - create or replace function insert_host_catalog_subtype() - returns trigger + create or replace function insert_host_catalog_subtype() returns trigger as $$ begin insert into host_catalog @@ -44,8 +43,7 @@ begin; -- base table for host catalog to contain the updated names for each host catalog -- in order to enforce uniqueness across all host catalogs, regardless of subtype, -- in a given scope. - create function update_host_catalog_subtype() - returns trigger + create function update_host_catalog_subtype() returns trigger as $$ begin update host_catalog set name = new.name where public_id = new.public_id and new.name != name; diff --git a/internal/db/schema/migrations/oss/postgres/20/05_plugin_host.up.sql b/internal/db/schema/migrations/oss/postgres/20/05_plugin_host.up.sql index a1f655389..96a67291d 100644 --- a/internal/db/schema/migrations/oss/postgres/20/05_plugin_host.up.sql +++ b/internal/db/schema/migrations/oss/postgres/20/05_plugin_host.up.sql @@ -206,9 +206,7 @@ begin; -- will have conflicting PKs and we just want to "do nothing" on those -- conflicts, deferring the raising on an error to insert into the -- host_plugin_host table. This allows the upsert-style workflow. - create or replace function - insert_host_plugin_host_subtype() - returns trigger + create or replace function insert_host_plugin_host_subtype() returns trigger as $$ begin insert into host @@ -247,17 +245,14 @@ begin; -- host_immutable_ip_address() ensures that ip addresses assigned to hosts are -- immutable. - create function - host_immutable_ip_address() - returns trigger + create function host_immutable_ip_address() returns trigger as $$ begin raise exception 'host ip addresses are immutable'; end; $$ language plpgsql; - create trigger immutable_ip_address - before update on host_ip_address + create trigger immutable_ip_address before update on host_ip_address for each row execute procedure host_immutable_ip_address(); -- host_dns_name contains the DNS names associated with a host, one per row. @@ -279,17 +274,14 @@ begin; -- host_immutable_dns_name() ensures that dns names assigned to hosts are -- immutable. - create function - host_immutable_dns_name() - returns trigger + create function host_immutable_dns_name() returns trigger as $$ begin raise exception 'host dns names are immutable'; end; $$ language plpgsql; - create trigger immutable_dns_name - before update on host_dns_name + create trigger immutable_dns_name before update on host_dns_name for each row execute procedure host_immutable_dns_name(); create table host_plugin_set_member ( @@ -318,8 +310,7 @@ begin; create trigger immutable_columns before update on host_plugin_set_member for each row execute procedure immutable_columns('host_id', 'set_id', 'catalog_id', 'create_time'); - create function insert_host_plugin_set_member() - returns trigger + create function insert_host_plugin_set_member() returns trigger as $$ begin select host_plugin_set.catalog_id @@ -367,17 +358,14 @@ begin; -- host_set_immutable_preferred_endpoint() ensures that endpoint conditions -- assigned to host sets are immutable. - create function - host_set_immutable_preferred_endpoint() - returns trigger + create function host_set_immutable_preferred_endpoint() returns trigger as $$ begin raise exception 'preferred endpoints are immutable'; end; $$ language plpgsql; - create trigger immutable_preferred_endpoint - before update on host_set_preferred_endpoint + create trigger immutable_preferred_endpoint before update on host_set_preferred_endpoint for each row execute procedure host_set_immutable_preferred_endpoint(); insert into oplog_ticket (name, version) diff --git a/internal/db/schema/migrations/oss/postgres/21/01_default_time.up.sql b/internal/db/schema/migrations/oss/postgres/21/01_default_time.up.sql index c10817f27..5b69a879f 100644 --- a/internal/db/schema/migrations/oss/postgres/21/01_default_time.up.sql +++ b/internal/db/schema/migrations/oss/postgres/21/01_default_time.up.sql @@ -1,8 +1,7 @@ begin; -- Replaces function from 0/01_domain_types.up.sql -create or replace function default_create_time() - returns trigger +create or replace function default_create_time() returns trigger as $$ begin if new.create_time is distinct from now() then diff --git a/internal/db/schema/migrations/oss/postgres/22/01_sentinel.up.sql b/internal/db/schema/migrations/oss/postgres/22/01_sentinel.up.sql index c90f520ea..0cc30ea89 100644 --- a/internal/db/schema/migrations/oss/postgres/22/01_sentinel.up.sql +++ b/internal/db/schema/migrations/oss/postgres/22/01_sentinel.up.sql @@ -1,7 +1,6 @@ begin; - create function wt_to_sentinel(string text) - returns text + create function wt_to_sentinel(string text) returns text as $$ select concat( u&'\fffe', diff --git a/internal/db/schema/migrations/oss/postgres/22/02_credential_type.up.sql b/internal/db/schema/migrations/oss/postgres/22/02_credential_type.up.sql index 3eb30caca..d15dcb5b2 100644 --- a/internal/db/schema/migrations/oss/postgres/22/02_credential_type.up.sql +++ b/internal/db/schema/migrations/oss/postgres/22/02_credential_type.up.sql @@ -60,8 +60,7 @@ begin; -- insert_credential_library_subtype() is a before insert trigger -- function for subtypes of credential_library - create function insert_credential_library_subtype() - returns trigger + create function insert_credential_library_subtype() returns trigger as $$ begin insert into credential_library diff --git a/internal/db/schema/migrations/oss/postgres/22/03_vault_library_map.up.sql b/internal/db/schema/migrations/oss/postgres/22/03_vault_library_map.up.sql index 77cfc0570..3e84406b6 100644 --- a/internal/db/schema/migrations/oss/postgres/22/03_vault_library_map.up.sql +++ b/internal/db/schema/migrations/oss/postgres/22/03_vault_library_map.up.sql @@ -13,8 +13,7 @@ begin; -- insert_credential_vault_library_mapping_override_subtype() is a before insert trigger -- function for subtypes of credential_vault_library_mapping_override - create function insert_credential_vault_library_mapping_override_subtype() - returns trigger + create function insert_credential_vault_library_mapping_override_subtype() returns trigger as $$ begin insert into credential_vault_library_mapping_override @@ -27,8 +26,7 @@ begin; -- delete_credential_vault_library_mapping_override_subtype() is an after delete trigger -- function for subtypes of credential_vault_library_mapping_override - create function delete_credential_vault_library_mapping_override_subtype() - returns trigger + create function delete_credential_vault_library_mapping_override_subtype() returns trigger as $$ begin delete from credential_vault_library_mapping_override diff --git a/internal/db/schema/migrations/oss/postgres/23/01_session_credential.up.sql b/internal/db/schema/migrations/oss/postgres/23/01_session_credential.up.sql index 6b4c9db17..89bc01909 100644 --- a/internal/db/schema/migrations/oss/postgres/23/01_session_credential.up.sql +++ b/internal/db/schema/migrations/oss/postgres/23/01_session_credential.up.sql @@ -26,8 +26,7 @@ begin; -- delete_credentials deletes all credentials for a session when the -- session enters the canceling or terminated states. - create function delete_session_credentials() - returns trigger + create function delete_session_credentials() returns trigger as $$ begin if new.state in ('canceling', 'terminated') then diff --git a/internal/db/schema/migrations/oss/postgres/24/01_session_valid_state.up.sql b/internal/db/schema/migrations/oss/postgres/24/01_session_valid_state.up.sql index dfd9e0c84..dfbc6c01c 100644 --- a/internal/db/schema/migrations/oss/postgres/24/01_session_valid_state.up.sql +++ b/internal/db/schema/migrations/oss/postgres/24/01_session_valid_state.up.sql @@ -66,9 +66,7 @@ alter table session_state alter table session_state add unique (session_id, state); -create function - update_prior_session_state() - returns trigger +create function update_prior_session_state() returns trigger as $$ begin -- Prior state is the most recent valid prior state entry for this session_id @@ -89,4 +87,4 @@ $$ language plpgsql; create trigger update_session_state before insert on session_state for each row execute procedure update_prior_session_state(); -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/26/01_wh_network_address_dimensions.up.sql b/internal/db/schema/migrations/oss/postgres/26/01_wh_network_address_dimensions.up.sql index 87ce20c0e..3912bfc21 100644 --- a/internal/db/schema/migrations/oss/postgres/26/01_wh_network_address_dimensions.up.sql +++ b/internal/db/schema/migrations/oss/postgres/26/01_wh_network_address_dimensions.up.sql @@ -53,8 +53,7 @@ begin; -- Allow the host dimension to reference a group of addresses as referenced -- above. alter table wh_host_dimension - add column network_address_group_key wh_dim_key not null - default 'Unknown' + add column network_address_group_key wh_dim_key not null default 'Unknown' constraint wh_network_address_group_fkey references wh_network_address_group(key) on delete restrict @@ -64,8 +63,7 @@ begin; alter column network_address_group_key drop default; -- wh_try_cast_inet returns either the provided text cast into inet or a null. - create function wh_try_cast_inet(text) - returns inet + create function wh_try_cast_inet(text) returns inet as $$ begin return cast($1 as inet); diff --git a/internal/db/schema/migrations/oss/postgres/26/03_wh_network_address_dimensions.up.sql b/internal/db/schema/migrations/oss/postgres/26/03_wh_network_address_dimensions.up.sql index 76d22005e..8f75a781d 100644 --- a/internal/db/schema/migrations/oss/postgres/26/03_wh_network_address_dimensions.up.sql +++ b/internal/db/schema/migrations/oss/postgres/26/03_wh_network_address_dimensions.up.sql @@ -5,8 +5,7 @@ begin; -- a network address group which contains only the addresses for the -- provided host if one doesn't exist and returns the group key which contains -- exactly the set of addresses which the provided host contains. - create function wh_upsert_network_address_dimension(p_host_id wt_public_id) - returns wh_dim_key + create function wh_upsert_network_address_dimension(p_host_id wt_public_id) returns wh_dim_key as $$ declare nag_key wh_dim_key; @@ -73,8 +72,7 @@ begin; -- replaces function from 15/02_wh_rename_key_columns.up.sql -- adds the network address key to the host dimension table. drop function wh_upsert_host; - create function wh_upsert_host(p_host_id wt_public_id, p_host_set_id wt_public_id, p_target_id wt_public_id) - returns wh_dim_key + create function wh_upsert_host(p_host_id wt_public_id, p_host_set_id wt_public_id, p_target_id wt_public_id) returns wh_dim_key as $$ declare src whx_host_dimension_target%rowtype; @@ -142,4 +140,4 @@ begin; $$ language plpgsql; -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/27/01_disable_terminate_session.up.sql b/internal/db/schema/migrations/oss/postgres/27/01_disable_terminate_session.up.sql index c1b8db55c..f4c60386b 100644 --- a/internal/db/schema/migrations/oss/postgres/27/01_disable_terminate_session.up.sql +++ b/internal/db/schema/migrations/oss/postgres/27/01_disable_terminate_session.up.sql @@ -3,9 +3,8 @@ begin; -- Remove call to terminate_session_if_possible drop trigger update_connection_state_on_closed_reason on session_connection; drop function update_connection_state_on_closed_reason(); -create function - update_connection_state_on_closed_reason() - returns trigger + +create function update_connection_state_on_closed_reason() returns trigger as $$ begin if new.closed_reason is not null then @@ -25,12 +24,10 @@ as $$ end; $$ language plpgsql; -create trigger - update_connection_state_on_closed_reason - after update of closed_reason on session_connection +create trigger update_connection_state_on_closed_reason after update of closed_reason on session_connection for each row execute procedure update_connection_state_on_closed_reason(); -- Remove function, defined in 0/51_connection.up.sql drop function terminate_session_if_possible; -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/27/02_wh_session_facts.up.sql b/internal/db/schema/migrations/oss/postgres/27/02_wh_session_facts.up.sql index 8f781c93d..298deb4ce 100644 --- a/internal/db/schema/migrations/oss/postgres/27/02_wh_session_facts.up.sql +++ b/internal/db/schema/migrations/oss/postgres/27/02_wh_session_facts.up.sql @@ -3,11 +3,11 @@ begin; -- Remove call to wh_rollup_connections(new.session_id) from function drop trigger wh_insert_session_connection on session_connection; drop function wh_insert_session_connection(); -create function wh_insert_session_connection() - returns trigger + +create function wh_insert_session_connection() returns trigger as $$ declare -new_row wh_session_connection_accumulating_fact%rowtype; + new_row wh_session_connection_accumulating_fact%rowtype; begin with authorized_timestamp (date_dim_key, time_dim_key, ts) as ( @@ -58,20 +58,18 @@ return null; end; $$ language plpgsql; -create trigger wh_insert_session_connection - after insert on session_connection - for each row - execute function wh_insert_session_connection(); +create trigger wh_insert_session_connection after insert on session_connection + for each row execute function wh_insert_session_connection(); -- Updating definition from 0/69_wh_session_facts.up.sql -- Remove call to wh_rollup_connections(new.session_id) from function drop trigger wh_update_session_connection on session_connection; drop function wh_update_session_connection; -create function wh_update_session_connection() - returns trigger + +create function wh_update_session_connection() returns trigger as $$ declare -updated_row wh_session_connection_accumulating_fact%rowtype; + updated_row wh_session_connection_accumulating_fact%rowtype; begin update wh_session_connection_accumulating_fact set client_tcp_address = new.client_tcp_address, @@ -86,14 +84,10 @@ return null; end; $$ language plpgsql; -create trigger wh_update_session_connection - after update on session_connection - for each row - execute function wh_update_session_connection(); +create trigger wh_update_session_connection after update on session_connection + for each row execute function wh_update_session_connection(); -create function - wh_session_rollup() - returns trigger +create function wh_session_rollup() returns trigger as $$ begin if new.termination_reason is not null then @@ -106,9 +100,7 @@ return null; end; $$ language plpgsql; -create trigger - wh_rollup_connections_on_session_termination - after update of termination_reason on session +create trigger wh_rollup_connections_on_session_termination after update of termination_reason on session for each row execute procedure wh_session_rollup(); -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/28/02_prior_session_trigger.up.sql b/internal/db/schema/migrations/oss/postgres/28/02_prior_session_trigger.up.sql index 00a62f8aa..827535ccb 100644 --- a/internal/db/schema/migrations/oss/postgres/28/02_prior_session_trigger.up.sql +++ b/internal/db/schema/migrations/oss/postgres/28/02_prior_session_trigger.up.sql @@ -78,9 +78,7 @@ end; $$; drop trigger insert_session_state on session_state; drop function insert_session_state(); -create function - insert_session_state() - returns trigger +create function insert_session_state() returns trigger as $$ declare old_col_state text; @@ -111,4 +109,4 @@ $$ language plpgsql; create trigger insert_session_state before insert on session_state for each row execute procedure insert_session_state(); -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/29/01_cancel_session_null_fkey.up.sql b/internal/db/schema/migrations/oss/postgres/29/01_cancel_session_null_fkey.up.sql index 4625a3df0..f6adb6d5d 100644 --- a/internal/db/schema/migrations/oss/postgres/29/01_cancel_session_null_fkey.up.sql +++ b/internal/db/schema/migrations/oss/postgres/29/01_cancel_session_null_fkey.up.sql @@ -1,12 +1,12 @@ begin; drop function cancel_session(in sessionId text); + -- Updates cancel_session() from 0/50_session to check if a session is either terminated or canceling -- Sessions can progress directly to terminated without going through the canceling state -- cancel_session will insert a cancel state for the session, if there's isn't -- a canceled or terminated state already. It's used by cancel_session_with_null_fk. -create function - cancel_session(in sessionId text) returns void +create function cancel_session(in sessionId text) returns void as $$ declare rows_affected numeric; @@ -34,4 +34,4 @@ begin end; $$ language plpgsql; -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/30/01_kms_domain_types.up.sql b/internal/db/schema/migrations/oss/postgres/30/01_kms_domain_types.up.sql index bc55a9169..693019be9 100644 --- a/internal/db/schema/migrations/oss/postgres/30/01_kms_domain_types.up.sql +++ b/internal/db/schema/migrations/oss/postgres/30/01_kms_domain_types.up.sql @@ -5,8 +5,7 @@ begin; -- this migration is from: -- https://github.com/hashicorp/go-kms-wrapping/blob/main/extras/kms/migrations/postgres/01_domain_types.up.sql -create domain kms_private_id as text -not null +create domain kms_private_id as text not null check( length(trim(value)) > 0 ); @@ -20,15 +19,11 @@ check( comment on domain kms_scope_id is 'standard column for scope id'; -create domain kms_timestamp as - timestamp with time zone - default current_timestamp; +create domain kms_timestamp as timestamp with time zone default current_timestamp; comment on domain kms_timestamp is 'Standard timestamp for all create_time and update_time columns'; -create domain kms_version as bigint - default 1 - not null +create domain kms_version as bigint default 1 not null check( value > 0 ); @@ -38,8 +33,7 @@ comment on domain kms_version is -- kms_immutable_columns() will make the column names immutable which are passed as -- parameters when the trigger is created. It raises error code 23601 which is a -- class 23 integrity constraint violation: immutable column -create function kms_immutable_columns() - returns trigger +create function kms_immutable_columns() returns trigger as $$ declare col_name text; @@ -60,15 +54,10 @@ begin return new; end; $$ language plpgsql; - -comment on function - kms_immutable_columns() -is +comment on function kms_immutable_columns() is 'function used in before update triggers to make columns immutable'; - -create function kms_default_create_time() - returns trigger +create function kms_default_create_time() returns trigger as $$ begin if new.create_time is distinct from now() then @@ -77,14 +66,10 @@ begin return new; end; $$ language plpgsql; -comment on function - kms_default_create_time() -is +comment on function kms_default_create_time() is 'function used to properly set create_time columns'; -create function - kms_update_time_column() - returns trigger +create function kms_update_time_column() returns trigger as $$ begin if row(new.*) is distinct from row(old.*) then @@ -95,9 +80,7 @@ begin end if; end; $$ language plpgsql; -comment on function - kms_update_time_column() -is +comment on function kms_update_time_column() is 'function used in before update triggers to properly set update_time columns'; -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/30/02_kms_version.up.sql b/internal/db/schema/migrations/oss/postgres/30/02_kms_version.up.sql index 9eecc2b7f..e59dbcc5c 100644 --- a/internal/db/schema/migrations/oss/postgres/30/02_kms_version.up.sql +++ b/internal/db/schema/migrations/oss/postgres/30/02_kms_version.up.sql @@ -20,21 +20,15 @@ create unique index kms_schema_version_one_row ON kms_schema_version((version is not null)); -- define the immutable fields for kms_root_key (all of them) -create trigger kms_immutable_columns -before -update on kms_schema_version +create trigger kms_immutable_columns before update on kms_schema_version for each row execute procedure kms_immutable_columns('create_time'); -create trigger kms_default_create_time_column -before -insert on kms_schema_version +create trigger kms_default_create_time_column before insert on kms_schema_version for each row execute procedure kms_default_create_time(); -create trigger kms_update_time_column -before -update on kms_schema_version +create trigger kms_update_time_column before update on kms_schema_version for each row execute procedure kms_update_time_column(); insert into kms_schema_version(version) values('v0.0.1'); -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/30/03_kms_keys.up.sql b/internal/db/schema/migrations/oss/postgres/30/03_kms_keys.up.sql index 9ff06933c..5dbb805ab 100644 --- a/internal/db/schema/migrations/oss/postgres/30/03_kms_keys.up.sql +++ b/internal/db/schema/migrations/oss/postgres/30/03_kms_keys.up.sql @@ -11,8 +11,7 @@ begin; -- kms_version_column() will increment the version column whenever row data -- is inserted and should only be used in an before insert trigger. This -- function will overwrite any explicit values to the version column. -create or replace function kms_version_column() - returns trigger +create or replace function kms_version_column() returns trigger as $$ declare _key_id text; @@ -27,11 +26,7 @@ begin return new; end; $$ language plpgsql; - -comment on function - kms_version_column() -is +comment on function kms_version_column() is 'function used in before insert triggers to properly set version columns for kms_* tables with a version column'; - -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/30/04_kms_keys.up.sql b/internal/db/schema/migrations/oss/postgres/30/04_kms_keys.up.sql index c5643d401..6d0cfdcb0 100644 --- a/internal/db/schema/migrations/oss/postgres/30/04_kms_keys.up.sql +++ b/internal/db/schema/migrations/oss/postgres/30/04_kms_keys.up.sql @@ -21,9 +21,7 @@ comment on table kms_root_key is 'kms_root_key defines a root key for a scope'; -- define the immutable fields for kms_root_key (all of them) -create trigger kms_immutable_columns -before -update on kms_root_key +create trigger kms_immutable_columns before update on kms_root_key for each row execute procedure kms_immutable_columns('private_id', 'scope_id', 'create_time'); -- not adding the kms_default_create_time_column trigger until after we've @@ -50,9 +48,7 @@ comment on table kms_root_key_version is 'kms_root_key_version contains versions of a kms_root_key'; -- define the immutable fields for kms_root_key_version (all of them) -create trigger kms_immutable_columns -before -update on kms_root_key_version +create trigger kms_immutable_columns before update on kms_root_key_version for each row execute procedure kms_immutable_columns('private_id', 'root_key_id', 'version', 'key', 'create_time'); -- not adding the kms_default_create_time_column or kms_version_column triggers @@ -77,9 +73,7 @@ comment on table kms_data_key is 'kms_data_key contains deks (data keys) for specific purposes'; -- define the immutable fields for kms_data_key (all of them) -create trigger kms_immutable_columns -before -update on kms_data_key +create trigger kms_immutable_columns before update on kms_data_key for each row execute procedure kms_immutable_columns('private_id', 'root_key_id', 'purpose', 'create_time'); -- not adding the kms_default_create_time_column trigger until after we've @@ -111,9 +105,7 @@ comment on table kms_data_key is 'kms_data_key_version contains versions of a kms_data_key (dek aka data keys)'; -- define the immutable fields for kms_data_key_version (all of them) -create trigger kms_immutable_columns -before -update on kms_data_key_version +create trigger kms_immutable_columns before update on kms_data_key_version for each row execute procedure immutable_columns('private_id', 'data_key_id', 'root_key_version_id', 'version', 'key', 'create_time'); -- not adding the kms_default_create_time_column or kms_version_column triggers @@ -190,32 +182,22 @@ from kms_session_key_version; -- ############################################################################ -- post conversion, we add the required triggers -create trigger kms_default_create_time_column -before -insert on kms_root_key +create trigger kms_default_create_time_column before insert on kms_root_key for each row execute procedure kms_default_create_time(); -create trigger kms_default_create_time_column -before -insert on kms_root_key_version +create trigger kms_default_create_time_column before insert on kms_root_key_version for each row execute procedure kms_default_create_time(); -create trigger kms_version_column -before insert on kms_root_key_version +create trigger kms_version_column before insert on kms_root_key_version for each row execute procedure kms_version_column('root_key_id'); -create trigger default_create_time_column -before -insert on kms_data_key +create trigger default_create_time_column before insert on kms_data_key for each row execute procedure kms_default_create_time(); -create trigger default_create_time -before -insert on kms_data_key_version +create trigger default_create_time before insert on kms_data_key_version for each row execute procedure kms_default_create_time(); -create trigger kms_version_column -before insert on kms_data_key_version +create trigger kms_version_column before insert on kms_data_key_version for each row execute procedure kms_version_column('data_key_id'); -- Next: we will convert all the existing DEKs FKs to the new model @@ -278,4 +260,4 @@ alter table kms_session_key rename to kms_deprecated_session_key; alter table kms_token_key_version rename to kms_deprecated_token_key_version; alter table kms_token_key rename to kms_deprecated_token_key; -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/34/02_worker_controller_tables.up.sql b/internal/db/schema/migrations/oss/postgres/34/02_worker_controller_tables.up.sql index 2e304f742..a1816ad1b 100644 --- a/internal/db/schema/migrations/oss/postgres/34/02_worker_controller_tables.up.sql +++ b/internal/db/schema/migrations/oss/postgres/34/02_worker_controller_tables.up.sql @@ -10,7 +10,7 @@ create table server_controller ( create_time wt_timestamp, update_time wt_timestamp ); -comment on table server_controller is +comment on table server_controller is 'server_controller is a table where each row represents a Boundary controller.'; create trigger immutable_columns before update on server_controller @@ -90,7 +90,7 @@ create table server_worker ( constraint server_worker_scope_id_name_uq unique(scope_id, name) ); -comment on table server_worker is +comment on table server_worker is 'server_worker is a table where each row represents a Boundary worker.'; create trigger immutable_columns before update on server_worker @@ -110,8 +110,7 @@ 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 +create function immutable_kms_name() returns trigger as $$ begin if old.type = 'kms' and new.name is distinct from old.name then @@ -130,8 +129,7 @@ comment on function immutable_kms_name is 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 +create function update_kms_server_worker_update_last_status_time_column() returns trigger as $$ begin if new.type = 'kms' then @@ -146,8 +144,7 @@ comment on function update_kms_server_worker_update_last_status_time_column is create trigger update_kms_server_worker_last_status_time_column before update of address, name, description on server_worker for each row execute procedure update_kms_server_worker_update_last_status_time_column(); -create function update_pki_server_worker_update_last_status_time_column() - returns trigger +create function update_pki_server_worker_update_last_status_time_column() returns trigger as $$ begin if new.type = 'pki' then @@ -162,8 +159,7 @@ comment on function update_pki_server_worker_update_last_status_time_column is create trigger update_pki_server_worker_last_status_time_column before update of address on server_worker for each row execute procedure update_pki_server_worker_update_last_status_time_column(); -create function insert_kms_server_worker_update_last_status_time_column() - returns trigger +create function insert_kms_server_worker_update_last_status_time_column() returns trigger as $$ begin if new.type = 'kms' then @@ -217,15 +213,14 @@ drop view session_list; -- Update session table to use worker_id instead of server_id -- Updating the session table modified in 01/01_server_tags_migrations.up.sql -drop trigger update_version_column - on session; +drop trigger update_version_column on session; + alter table session drop constraint session_server_id_fkey, drop column server_type, drop column server_id; -create trigger - update_version_column - after update of version, termination_reason, key_id, tofu_token on session + +create trigger update_version_column after update of version, termination_reason, key_id, tofu_token on session for each row execute procedure update_version_column(); -- Update session_connection table to use worker_id instead of server_id @@ -252,6 +247,7 @@ alter table job_run -- Column updated in 35/01_job_migrations.up.sql add column controller_id text, drop column server_id; + alter table job_run add constraint controller_id_must_be_at_least_10_characters check( @@ -277,4 +273,4 @@ where drop table server; drop table server_type_enm; -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/34/03_worker_authentication.up.sql b/internal/db/schema/migrations/oss/postgres/34/03_worker_authentication.up.sql index b6e39a48e..21d358a97 100644 --- a/internal/db/schema/migrations/oss/postgres/34/03_worker_authentication.up.sql +++ b/internal/db/schema/migrations/oss/postgres/34/03_worker_authentication.up.sql @@ -7,7 +7,6 @@ create table worker_auth_operational_indicator_enm( state in ('next','current') ) ); - comment on table worker_auth_operational_indicator_enm is 'worker_auth_operational_indicator_enm is an enumeration table representing the state of certificates used for worker authentication.'; @@ -25,20 +24,13 @@ create table worker_auth_ca( update_time wt_timestamp ); -create trigger - immutable_columns - before - update on worker_auth_ca +create trigger immutable_columns before update on worker_auth_ca for each row execute procedure immutable_columns('private_id','create_time'); -create trigger worker_auth_ca_default_create_time_column - before - insert on worker_auth_ca +create trigger worker_auth_ca_default_create_time_column before insert on worker_auth_ca for each row execute procedure default_create_time(); -create trigger worker_auth_ca_update_time_column - before - update on worker_auth_ca +create trigger worker_auth_ca_update_time_column before update on worker_auth_ca for each row execute procedure update_time_column(); insert into worker_auth_ca(private_id) values('roots'); @@ -79,12 +71,8 @@ create table worker_auth_ca_certificate( references worker_auth_ca(private_id) ); -create trigger - immutable_columns - before - update on worker_auth_ca_certificate - for each row execute procedure immutable_columns('serial_number', 'certificate', 'not_valid_before', 'not_valid_after', - 'public_key', 'private_key', 'key_id', 'state', 'issuing_ca'); +create trigger immutable_columns before update on worker_auth_ca_certificate + for each row execute procedure immutable_columns('serial_number', 'certificate', 'not_valid_before', 'not_valid_after', 'public_key', 'private_key', 'key_id', 'state', 'issuing_ca'); comment on table worker_auth_ca_certificate is 'worker_auth_ca_certificate is a table where each row represents a root certificate for used for worker authentication.'; @@ -115,15 +103,10 @@ create table worker_auth_authorized( comment on table worker_auth_authorized is 'worker_auth_authorized is a table where each row represents key and cert data associated with an authorized worker.'; -create trigger - immutable_columns - before - update on worker_auth_authorized - for each row execute procedure immutable_columns('worker_key_identifier', 'worker_id', 'worker_signing_pub_key', - 'worker_encryption_pub_key', 'controller_encryption_priv_key', 'key_id', 'nonce'); +create trigger immutable_columns before update on worker_auth_authorized + for each row execute procedure immutable_columns('worker_key_identifier', 'worker_id', 'worker_signing_pub_key', 'worker_encryption_pub_key', 'controller_encryption_priv_key', 'key_id', 'nonce'); -create function insert_worker_auth_authorized_type_check() - returns trigger +create function insert_worker_auth_authorized_type_check() returns trigger as $$ begin perform from server_worker where type = 'pki' and public_id = new.worker_id; @@ -155,14 +138,10 @@ create table worker_auth_certificate_bundle( check(length(cert_bundle) > 0), primary key(root_certificate_public_key, worker_key_identifier) ); - comment on table worker_auth_certificate_bundle is 'worker_auth_certificate_bundle is a table where each row represents a cert bundle issued by a ca certificate for a worker.'; -create trigger - immutable_columns - before - update on worker_auth_certificate_bundle +create trigger immutable_columns before update on worker_auth_certificate_bundle for each row execute procedure immutable_columns('root_certificate_public_key', 'worker_key_identifier', 'cert_bundle'); -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/37/01_set_unlimited_connections_limit.up.sql b/internal/db/schema/migrations/oss/postgres/37/01_set_unlimited_connections_limit.up.sql index 22f8a9445..333b72eaa 100644 --- a/internal/db/schema/migrations/oss/postgres/37/01_set_unlimited_connections_limit.up.sql +++ b/internal/db/schema/migrations/oss/postgres/37/01_set_unlimited_connections_limit.up.sql @@ -2,7 +2,6 @@ begin; -- Changes the default that was set in 0/41_targets.up.sql alter table target_tcp - alter column session_connection_limit - set default -1; + alter column session_connection_limit set default -1; commit; diff --git a/internal/db/schema/migrations/oss/postgres/38/06_kms_collection_version.up.sql b/internal/db/schema/migrations/oss/postgres/38/06_kms_collection_version.up.sql index 83cf81e02..92d331baa 100644 --- a/internal/db/schema/migrations/oss/postgres/38/06_kms_collection_version.up.sql +++ b/internal/db/schema/migrations/oss/postgres/38/06_kms_collection_version.up.sql @@ -16,14 +16,10 @@ create table kms_collection_version ( create unique index kms_collection_version_one_row ON kms_collection_version((version is not null)); -create trigger kms_immutable_columns -before -update on kms_collection_version +create trigger kms_immutable_columns before update on kms_collection_version for each row execute procedure kms_immutable_columns('create_time'); -create trigger kms_update_time_column -before -update on kms_collection_version +create trigger kms_update_time_column before update on kms_collection_version for each row execute procedure kms_update_time_column(); @@ -31,4 +27,4 @@ insert into kms_collection_version(version) values(1); update kms_schema_version set version = 'v0.0.2'; -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/39/02_vault_ssh_private_key_override.up.sql b/internal/db/schema/migrations/oss/postgres/39/02_vault_ssh_private_key_override.up.sql index 630aeee9d..970ba14eb 100644 --- a/internal/db/schema/migrations/oss/postgres/39/02_vault_ssh_private_key_override.up.sql +++ b/internal/db/schema/migrations/oss/postgres/39/02_vault_ssh_private_key_override.up.sql @@ -14,12 +14,8 @@ begin; references credential_vault_library_mapping_override (library_id) on delete cascade on update cascade, - username_attribute wt_sentinel - default wt_to_sentinel('no override') - not null, - private_key_attribute wt_sentinel - default wt_to_sentinel('no override') - not null + username_attribute wt_sentinel default wt_to_sentinel('no override') not null, + private_key_attribute wt_sentinel default wt_to_sentinel('no override') not null ); comment on table credential_vault_library_ssh_private_key_mapping_override is 'credential_vault_library_ssh_private_key_mapping_override is a table ' diff --git a/internal/db/schema/migrations/oss/postgres/42/01_ssh_private_key_passphrase.up.sql b/internal/db/schema/migrations/oss/postgres/42/01_ssh_private_key_passphrase.up.sql index 5cd0ce6f6..c2d4be884 100644 --- a/internal/db/schema/migrations/oss/postgres/42/01_ssh_private_key_passphrase.up.sql +++ b/internal/db/schema/migrations/oss/postgres/42/01_ssh_private_key_passphrase.up.sql @@ -12,9 +12,7 @@ alter table credential_static_ssh_private_key_credential ; alter table credential_vault_library_ssh_private_key_mapping_override - add column private_key_passphrase_attribute wt_sentinel - default wt_to_sentinel('no override') - not null; + add column private_key_passphrase_attribute wt_sentinel default wt_to_sentinel('no override') not null; -- Replaces view from 41/01_worker_filter_vault_cred_store.up.sql drop view credential_vault_library_public; @@ -103,4 +101,4 @@ comment on view credential_vault_library_public is 'credential_vault_library_public is a view where each row contains a credential library and any of library''s credential mapping overrides. ' 'No encrypted data is returned. This view can be used to retrieve data which will be returned external to boundary.'; -commit; \ No newline at end of file +commit; diff --git a/internal/db/schema/migrations/oss/postgres/5/01_oidc.up.sql b/internal/db/schema/migrations/oss/postgres/5/01_oidc.up.sql index 7b372490a..38c40ac5a 100644 --- a/internal/db/schema/migrations/oss/postgres/5/01_oidc.up.sql +++ b/internal/db/schema/migrations/oss/postgres/5/01_oidc.up.sql @@ -24,11 +24,7 @@ create table auth_oidc_scope ( comment on table auth_oidc_scope is 'auth_oidc_scope entries are the optional scopes for a specific oidc auth method. There can be 0 or more for each parent oidc auth method. If an auth method has any scopes, they will be added to provider requests along with the openid default.'; - -create trigger - default_create_time_column -before -insert on auth_oidc_scope +create trigger default_create_time_column before insert on auth_oidc_scope for each row execute procedure default_create_time(); diff --git a/internal/db/schema/migrations/oss/postgres/6/01_oidc.up.sql b/internal/db/schema/migrations/oss/postgres/6/01_oidc.up.sql index aff56dddc..6aacc2dd1 100644 --- a/internal/db/schema/migrations/oss/postgres/6/01_oidc.up.sql +++ b/internal/db/schema/migrations/oss/postgres/6/01_oidc.up.sql @@ -23,18 +23,10 @@ create table auth_oidc_account_claim_map ( comment on table auth_oidc_account_claim_map is 'auth_oidc_account_claim_map entries are the optional claim maps from custom claims to the standard claims of sub, name and email. There can be 0 or more for each parent oidc auth method.'; - -create trigger - default_create_time_column -before -insert on auth_oidc_account_claim_map +create trigger default_create_time_column before insert on auth_oidc_account_claim_map for each row execute procedure default_create_time(); - -create trigger - immutable_columns -before -update on auth_oidc_account_claim_map +create trigger immutable_columns before update on auth_oidc_account_claim_map for each row execute procedure immutable_columns('oidc_method_id', 'from_claim', 'to_claim', 'create_time'); @@ -91,4 +83,4 @@ comment on view oidc_auth_method_with_value_obj is 'oidc auth method with its associated value objects (algs, auds, certs, scopes) as columns with | delimited values'; - commit; +commit; diff --git a/internal/db/schema/migrations/oss/postgres/7/01_functions.up.sql b/internal/db/schema/migrations/oss/postgres/7/01_functions.up.sql index e498f300e..028e21183 100644 --- a/internal/db/schema/migrations/oss/postgres/7/01_functions.up.sql +++ b/internal/db/schema/migrations/oss/postgres/7/01_functions.up.sql @@ -1,7 +1,6 @@ begin; - create function wt_add_seconds(sec integer, ts timestamp with time zone) - returns timestamp with time zone + create function wt_add_seconds(sec integer, ts timestamp with time zone) returns timestamp with time zone as $$ select ts + sec * '1 second'::interval; $$ language sql @@ -10,8 +9,7 @@ begin; comment on function wt_add_seconds is 'wt_add_seconds returns ts + sec.'; - create function wt_add_seconds_to_now(sec integer) - returns timestamp with time zone + create function wt_add_seconds_to_now(sec integer) returns timestamp with time zone as $$ select wt_add_seconds(sec, current_timestamp); $$ language sql diff --git a/internal/db/schema/migrations/oss/postgres/7/02_plugin.up.sql b/internal/db/schema/migrations/oss/postgres/7/02_plugin.up.sql index e9fec581b..917087aee 100644 --- a/internal/db/schema/migrations/oss/postgres/7/02_plugin.up.sql +++ b/internal/db/schema/migrations/oss/postgres/7/02_plugin.up.sql @@ -1,7 +1,6 @@ begin; - create domain wt_plugin_id as text - not null + create domain wt_plugin_id as text not null check( length(trim(value)) > 10 or value = 'pi_system' ); @@ -11,7 +10,6 @@ begin; create table plugin ( public_id wt_plugin_id primary key ); - comment on table plugin is 'plugin is a table where each row represents a unique plugin registered with Boundary.'; @@ -22,9 +20,7 @@ begin; create trigger immutable_columns before update on plugin for each row execute procedure immutable_columns('public_id'); - create or replace function - disallow_system_plugin_deletion() - returns trigger + create or replace function disallow_system_plugin_deletion() returns trigger as $$ begin if old.public_id = 'pi_system' then diff --git a/internal/db/schema/migrations/oss/postgres/7/03_job.up.sql b/internal/db/schema/migrations/oss/postgres/7/03_job.up.sql index a08a7a420..172005438 100644 --- a/internal/db/schema/migrations/oss/postgres/7/03_job.up.sql +++ b/internal/db/schema/migrations/oss/postgres/7/03_job.up.sql @@ -11,7 +11,6 @@ begin; next_scheduled_run timestamp with time zone not null, primary key (plugin_id, name) ); - comment on table job is 'job is a table where each row represents a unique job that can only have one running instance at any specific time.'; @@ -23,7 +22,6 @@ begin; constraint only_predefined_job_status_allowed check(name in ('running', 'completed', 'failed', 'interrupted')) ); - comment on table job_run_status_enm is 'job_run_status_enm is an enumeration table where each row contains a valid job run state.'; @@ -35,8 +33,7 @@ begin; ('interrupted'); create table job_run ( - private_id wh_dim_id primary key - default wh_dim_id(), + private_id wh_dim_id primary key default wh_dim_id(), job_plugin_id wt_plugin_id not null, job_name wt_name not null, server_id wt_private_id @@ -47,16 +44,13 @@ begin; create_time wt_timestamp, update_time wt_timestamp, end_time timestamp with time zone, - completed_count int not null - default 0 + completed_count int not null default 0 constraint completed_count_can_not_be_negative check(completed_count >= 0), - total_count int not null - default 0 + total_count int not null default 0 constraint total_count_can_not_be_negative check(total_count >= 0), - status text not null - default 'running' + status text not null default 'running' constraint job_run_status_enm_fkey references job_run_status_enm (name) on delete restrict @@ -71,7 +65,6 @@ begin; on delete cascade on update cascade ); - comment on table job_run is 'job_run is a table where each row represents an instance of a job run that is either actively running or has already completed.'; diff --git a/internal/db/schema/migrations/oss/postgres/9/01_managed_groups.up.sql b/internal/db/schema/migrations/oss/postgres/9/01_managed_groups.up.sql index de1eb1319..2719ded8e 100644 --- a/internal/db/schema/migrations/oss/postgres/9/01_managed_groups.up.sql +++ b/internal/db/schema/migrations/oss/postgres/9/01_managed_groups.up.sql @@ -2,10 +2,8 @@ begin; -- The base abstract table create table auth_managed_group ( - public_id wt_public_id - primary key, - auth_method_id wt_public_id - not null, + public_id wt_public_id primary key, + auth_method_id wt_public_id not null, -- Ensure that if the auth method is deleted (which will also happen if the -- scope is deleted) this is deleted too constraint auth_method_fkey @@ -20,18 +18,13 @@ comment on table auth_managed_group is 'auth_managed_group is the abstract base table for managed groups.'; -- Define the immutable fields of auth_managed_group -create trigger - immutable_columns -before -update on auth_managed_group +create trigger immutable_columns before update on auth_managed_group for each row execute procedure immutable_columns('public_id', 'auth_method_id'); -- Function to insert into the base table when values are inserted into a -- concrete type table. This happens before inserts so the foreign keys in the -- concrete type will be valid. -create or replace function - insert_managed_group_subtype() - returns trigger +create or replace function insert_managed_group_subtype() returns trigger as $$ begin @@ -47,8 +40,7 @@ $$ language plpgsql; -- delete_managed_group_subtype() is an after delete trigger -- function for subtypes of managed_group -create or replace function delete_managed_group_subtype() - returns trigger +create or replace function delete_managed_group_subtype() returns trigger as $$ begin delete from auth_managed_group diff --git a/internal/db/schema/migrations/oss/postgres/9/02_oidc_managed_group.up.sql b/internal/db/schema/migrations/oss/postgres/9/02_oidc_managed_group.up.sql index 49b579d79..440b2de82 100644 --- a/internal/db/schema/migrations/oss/postgres/9/02_oidc_managed_group.up.sql +++ b/internal/db/schema/migrations/oss/postgres/9/02_oidc_managed_group.up.sql @@ -1,17 +1,14 @@ begin; create table auth_oidc_managed_group ( - public_id wt_public_id - primary key, - auth_method_id wt_public_id - not null, + public_id wt_public_id primary key, + auth_method_id wt_public_id not null, name wt_name, description wt_description, create_time wt_timestamp, update_time wt_timestamp, version wt_version, - filter wt_bexprfilter - not null, + filter wt_bexprfilter not null, -- Ensure that this managed group relates to an oidc auth method, as opposed -- to other types constraint auth_oidc_method_fkey @@ -32,45 +29,28 @@ comment on table auth_oidc_managed_group is 'auth_oidc_managed_group entries are subtypes of auth_managed_group and represent an oidc managed group.'; -- Define the immutable fields of auth_oidc_managed_group -create trigger - immutable_columns -before -update on auth_oidc_managed_group +create trigger immutable_columns before update on auth_oidc_managed_group for each row execute procedure immutable_columns('public_id', 'auth_method_id', 'create_time'); -- Populate create time on insert -create trigger - default_create_time_column -before -insert on auth_oidc_managed_group +create trigger default_create_time_column before insert on auth_oidc_managed_group for each row execute procedure default_create_time(); -- Generate update time on update -create trigger - update_time_column -before -update on auth_oidc_managed_group +create trigger update_time_column before update on auth_oidc_managed_group for each row execute procedure update_time_column(); -- Update version when something changes -create trigger - update_version_column -after -update on auth_oidc_managed_group +create trigger update_version_column after update on auth_oidc_managed_group for each row execute procedure update_version_column(); -- Add into the base table when inserting into the concrete table -create trigger - insert_managed_group_subtype -before insert on auth_oidc_managed_group +create trigger insert_managed_group_subtype before insert on auth_oidc_managed_group for each row execute procedure insert_managed_group_subtype(); -- Ensure that deletions in the oidc subtype result in deletions to the base -- table. -create trigger - delete_managed_group_subtype -after -delete on auth_oidc_managed_group +create trigger delete_managed_group_subtype after delete on auth_oidc_managed_group for each row execute procedure delete_managed_group_subtype(); -- The tickets for oplog are the subtypes not the base types because no updates diff --git a/internal/db/schema/migrations/oss/postgres/9/03_oidc_managed_group_member.up.sql b/internal/db/schema/migrations/oss/postgres/9/03_oidc_managed_group_member.up.sql index a173dc14a..4dd4ca3b9 100644 --- a/internal/db/schema/migrations/oss/postgres/9/03_oidc_managed_group_member.up.sql +++ b/internal/db/schema/migrations/oss/postgres/9/03_oidc_managed_group_member.up.sql @@ -18,25 +18,17 @@ comment on table auth_oidc_managed_group_member_account is 'auth_oidc_managed_group_member_account is the join table for managed oidc groups and accounts.'; -- auth_immutable_managed_oidc_group_member_account() ensures that group members are immutable. -create or replace function - auth_immutable_managed_oidc_group_member_account() - returns trigger +create or replace function auth_immutable_managed_oidc_group_member_account() returns trigger as $$ begin raise exception 'managed oidc group members are immutable'; end; $$ language plpgsql; -create trigger - default_create_time_column -before -insert on auth_oidc_managed_group_member_account +create trigger default_create_time_column before insert on auth_oidc_managed_group_member_account for each row execute procedure default_create_time(); -create trigger - auth_immutable_managed_oidc_group_member_account -before -update on auth_oidc_managed_group_member_account +create trigger auth_immutable_managed_oidc_group_member_account before update on auth_oidc_managed_group_member_account for each row execute procedure auth_immutable_managed_oidc_group_member_account(); -- Initially create the view with just oidc; eventually we can replace this view diff --git a/internal/db/schema/migrations/oss/postgres/9/04_oidc_managed_group_principal_role.up.sql b/internal/db/schema/migrations/oss/postgres/9/04_oidc_managed_group_principal_role.up.sql index 810cc955c..1715566ae 100644 --- a/internal/db/schema/migrations/oss/postgres/9/04_oidc_managed_group_principal_role.up.sql +++ b/internal/db/schema/migrations/oss/postgres/9/04_oidc_managed_group_principal_role.up.sql @@ -17,12 +17,10 @@ create table iam_managed_group_role ( primary key (role_id, principal_id) ); -create trigger immutable_role_principal -before update on iam_managed_group_role +create trigger immutable_role_principal before update on iam_managed_group_role for each row execute procedure iam_immutable_role_principal(); -create trigger default_create_time_column -before insert on iam_managed_group_role +create trigger default_create_time_column before insert on iam_managed_group_role for each row execute procedure default_create_time(); -- iam_principal_role provides a consolidated view all principal roles assigned