57 lines
1.7 KiB
PL/PgSQL
57 lines
1.7 KiB
PL/PgSQL
-- 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;
|