82 lines
2.7 KiB
PL/PgSQL
82 lines
2.7 KiB
PL/PgSQL
\ir db_config.sql
|
|
|
|
CREATE ROLE postgrest_test_anonymous;
|
|
CREATE ROLE postgrest_test_author;
|
|
|
|
GRANT postgrest_test_anonymous, postgrest_test_author TO :USER;
|
|
|
|
CREATE SCHEMA v1;
|
|
GRANT USAGE ON SCHEMA v1 TO postgrest_test_anonymous;
|
|
|
|
CREATE TABLE authors_only ();
|
|
GRANT SELECT ON authors_only TO postgrest_test_author;
|
|
|
|
CREATE TABLE projects AS SELECT FROM generate_series(1,5);
|
|
GRANT SELECT ON projects TO postgrest_test_anonymous;
|
|
|
|
create function get_guc_value(name text) returns text as $$
|
|
select nullif(current_setting(name), '')::text;
|
|
$$ language sql;
|
|
|
|
create function v1.get_guc_value(name text) returns text as $$
|
|
select nullif(current_setting(name), '')::text;
|
|
$$ language sql;
|
|
|
|
create function uses_prepared_statements() returns bool as $$
|
|
select count(name) > 0 from pg_catalog.pg_prepared_statements
|
|
$$ language sql;
|
|
|
|
create function change_max_rows_config(val int, notify bool default false) returns void as $_$
|
|
begin
|
|
execute format($$
|
|
alter role postgrest_test_authenticator set pgrst.db_max_rows = %L;
|
|
$$, val);
|
|
if notify then
|
|
perform pg_notify('pgrst', 'reload config');
|
|
end if;
|
|
end $_$ volatile security definer language plpgsql ;
|
|
|
|
create function reset_max_rows_config() returns void as $_$
|
|
begin
|
|
alter role postgrest_test_authenticator reset pgrst.db_max_rows;
|
|
end $_$ volatile security definer language plpgsql ;
|
|
|
|
create function change_db_schema_and_full_reload(schemas text) returns void as $_$
|
|
begin
|
|
execute format($$
|
|
alter role postgrest_test_authenticator set pgrst.db_schemas = %L;
|
|
$$, schemas);
|
|
perform pg_notify('pgrst', 'reload config');
|
|
perform pg_notify('pgrst', 'reload schema');
|
|
end $_$ volatile security definer language plpgsql ;
|
|
|
|
create function v1.reset_db_schema_config() returns void as $_$
|
|
begin
|
|
alter role postgrest_test_authenticator reset pgrst.db_schemas;
|
|
perform pg_notify('pgrst', 'reload config');
|
|
perform pg_notify('pgrst', 'reload schema');
|
|
end $_$ volatile security definer language plpgsql ;
|
|
|
|
create function invalid_role_claim_key_reload() returns void as $_$
|
|
begin
|
|
alter role postgrest_test_authenticator set pgrst.jwt_role_claim_key = 'test';
|
|
perform pg_notify('pgrst', 'reload config');
|
|
end $_$ volatile security definer language plpgsql ;
|
|
|
|
create function reset_invalid_role_claim_key() returns void as $_$
|
|
begin
|
|
alter role postgrest_test_authenticator reset pgrst.jwt_role_claim_key;
|
|
perform pg_notify('pgrst', 'reload config');
|
|
end $_$ volatile security definer language plpgsql ;
|
|
|
|
create function reload_pgrst_config() returns void as $_$
|
|
begin
|
|
perform pg_notify('pgrst', 'reload config');
|
|
end $_$ language plpgsql ;
|
|
|
|
create or replace function raise_bad_pt() returns void as $$
|
|
begin
|
|
raise sqlstate 'PT40A' using message = 'Wrong';
|
|
end;
|
|
$$ language plpgsql;
|