style(sql): make migrations more greppable
This commit is contained in:
77 files changed
+553
-1458
No files matched your search
@@ -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;
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
commit;
|
||||
@@ -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;
|
||||
commit;
|
||||
@@ -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;
|
||||
commit;
|
||||
@@ -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();
|
||||
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
commit;
|
||||
@@ -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;
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
+1
-2
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
commit;
|
||||
@@ -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;
|
||||
commit;
|
||||
@@ -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;
|
||||
commit;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
commit;
|
||||
@@ -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;
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
commit;
|
||||
+2
-4
@@ -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);
|
||||
|
||||
+3
-5
@@ -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;
|
||||
commit;
|
||||
@@ -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;
|
||||
commit;
|
||||
@@ -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;
|
||||
commit;
|
||||
@@ -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;
|
||||
commit;
|
||||
@@ -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;
|
||||
commit;
|
||||
@@ -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;
|
||||
commit;
|
||||
@@ -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;
|
||||
commit;
|
||||
@@ -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;
|
||||
commit;
|
||||
@@ -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;
|
||||
commit;
|
||||
@@ -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;
|
||||
commit;
|
||||
@@ -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;
|
||||
commit;
|
||||
+1
-2
@@ -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;
|
||||
@@ -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;
|
||||
commit;
|
||||
+2
-6
@@ -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 '
|
||||
|
||||
@@ -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;
|
||||
commit;
|
||||
@@ -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();
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.';
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+2
-4
@@ -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
|
||||
|
||||
Reference in new issue
Block a user