You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
boundary/internal/db/sqltest/tests/history/hst_columns.sql

58 lines
1.7 KiB

-- Copyright (c) HashiCorp, Inc.
-- SPDX-License-Identifier: BUSL-1.1
begin;
select plan(6);
-- Verify the function exists and is declared properly
select has_function('hst_columns', array['name', 'name']);
select volatility_is('hst_columns', 'stable');
select is_strict('hst_columns');
select is(count(*), 0::bigint, 'null input should return 0 rows') from hst_columns(null, null);
-- close to the iam_user table
create table test_r1 (
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
references iam_scope(public_id)
on delete cascade
on update cascade,
unique(name, scope_id),
version wt_version
);
create table test_r1_hst (
public_id wt_user_id not null,
name text,
description text,
scope_id text not null,
history_id wt_url_safe_id default wt_url_safe_id() primary key,
valid_range tstzrange not null default tstzrange(current_timestamp, null)
);
select is(count(*), 4::bigint) from hst_columns('public'::name, 'test_r1'::name);
create table test_r2 (
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
references iam_scope(public_id)
on delete cascade
on update cascade,
version wt_version
);
prepare select_no_history_table as select hst_columns('public'::name, 'test_r2'::name);
select throws_like('select_no_history_table', '%relation "public.test_r2_hst" does not exist', 'an operational table without a history table should raise an error');
select * from finish();
rollback;