Add STABLE RPCs in test fixtures to increase coverage

This commit is contained in:
Wolfgang Walther
2021-01-03 17:54:28 +01:00
committed by Wolfgang Walther
parent 6efa304142
commit 1edbef0538
+21 -7
View File
@@ -119,35 +119,36 @@ CREATE TABLE items3 (
CREATE FUNCTION search(id BIGINT) RETURNS SETOF items CREATE FUNCTION search(id BIGINT) RETURNS SETOF items
LANGUAGE plpgsql LANGUAGE plpgsql
STABLE
AS $$BEGIN AS $$BEGIN
RETURN QUERY SELECT items.id FROM items WHERE items.id=search.id; RETURN QUERY SELECT items.id FROM items WHERE items.id=search.id;
END$$; END$$;
CREATE FUNCTION always_true(test.items) RETURNS boolean CREATE FUNCTION always_true(test.items) RETURNS boolean
LANGUAGE sql STABLE LANGUAGE sql IMMUTABLE
AS $$ SELECT true $$; AS $$ SELECT true $$;
CREATE FUNCTION computed_overload(test.items) RETURNS boolean CREATE FUNCTION computed_overload(test.items) RETURNS boolean
LANGUAGE sql STABLE LANGUAGE sql IMMUTABLE
AS $$ SELECT true $$; AS $$ SELECT true $$;
CREATE FUNCTION computed_overload(test.items2) RETURNS boolean CREATE FUNCTION computed_overload(test.items2) RETURNS boolean
LANGUAGE sql STABLE LANGUAGE sql IMMUTABLE
AS $$ SELECT true $$; AS $$ SELECT true $$;
CREATE FUNCTION is_first(test.items) RETURNS boolean CREATE FUNCTION is_first(test.items) RETURNS boolean
LANGUAGE sql STABLE LANGUAGE sql IMMUTABLE
AS $$ SELECT $1.id = 1 $$; AS $$ SELECT $1.id = 1 $$;
CREATE FUNCTION anti_id(test.items) RETURNS bigint CREATE FUNCTION anti_id(test.items) RETURNS bigint
LANGUAGE sql STABLE LANGUAGE sql IMMUTABLE
AS $_$ SELECT $1.id * -1 $_$; AS $_$ SELECT $1.id * -1 $_$;
SET search_path = public, pg_catalog; SET search_path = public, pg_catalog;
CREATE FUNCTION always_false(test.items) RETURNS boolean CREATE FUNCTION always_false(test.items) RETURNS boolean
LANGUAGE sql STABLE LANGUAGE sql IMMUTABLE
AS $$ SELECT false $$; AS $$ SELECT false $$;
create table public_consumers ( create table public_consumers (
@@ -194,6 +195,7 @@ create view consumers_extra_view as
CREATE FUNCTION getitemrange(min bigint, max bigint) RETURNS SETOF items CREATE FUNCTION getitemrange(min bigint, max bigint) RETURNS SETOF items
LANGUAGE sql LANGUAGE sql
STABLE
AS $_$ AS $_$
SELECT * FROM test.items WHERE id > $1 AND id <= $2; SELECT * FROM test.items WHERE id > $1 AND id <= $2;
$_$; $_$;
@@ -204,6 +206,7 @@ $_$;
CREATE FUNCTION noparamsproc() RETURNS text CREATE FUNCTION noparamsproc() RETURNS text
LANGUAGE sql LANGUAGE sql
IMMUTABLE
AS $$ AS $$
SELECT a FROM (VALUES ('Return value of no parameters procedure.')) s(a); SELECT a FROM (VALUES ('Return value of no parameters procedure.')) s(a);
$$; $$;
@@ -214,6 +217,7 @@ CREATE FUNCTION noparamsproc() RETURNS text
CREATE FUNCTION login(id text, pass text) RETURNS public.jwt_token CREATE FUNCTION login(id text, pass text) RETURNS public.jwt_token
LANGUAGE sql SECURITY DEFINER LANGUAGE sql SECURITY DEFINER
STABLE
AS $$ AS $$
SELECT jwt.sign( SELECT jwt.sign(
row_to_json(r), 'reallyreallyreallyreallyverysafe' row_to_json(r), 'reallyreallyreallyreallyverysafe'
@@ -239,6 +243,7 @@ CREATE FUNCTION varied_arguments(
jsonb jsonb default '{}' jsonb jsonb default '{}'
) RETURNS json ) RETURNS json
LANGUAGE sql LANGUAGE sql
IMMUTABLE
AS $_$ AS $_$
SELECT json_build_object( SELECT json_build_object(
'double', double, 'double', double,
@@ -262,6 +267,7 @@ Just a test for RPC function arguments$_$;
CREATE FUNCTION json_argument(arg json) RETURNS text CREATE FUNCTION json_argument(arg json) RETURNS text
LANGUAGE sql LANGUAGE sql
IMMUTABLE
AS $_$ AS $_$
SELECT json_typeof(arg); SELECT json_typeof(arg);
$_$; $_$;
@@ -272,6 +278,7 @@ $_$;
CREATE FUNCTION jwt_test() RETURNS public.jwt_token CREATE FUNCTION jwt_test() RETURNS public.jwt_token
LANGUAGE sql SECURITY DEFINER LANGUAGE sql SECURITY DEFINER
IMMUTABLE
AS $$ AS $$
SELECT jwt.sign( SELECT jwt.sign(
row_to_json(r), 'reallyreallyreallyreallyverysafe' row_to_json(r), 'reallyreallyreallyreallyverysafe'
@@ -306,6 +313,7 @@ $$;
CREATE FUNCTION get_current_user() RETURNS text CREATE FUNCTION get_current_user() RETURNS text
LANGUAGE sql LANGUAGE sql
STABLE
AS $$ AS $$
SELECT current_user::text; SELECT current_user::text;
$$; $$;
@@ -319,6 +327,7 @@ CREATE FUNCTION reveal_big_jwt() RETURNS TABLE (
nbf bigint, iat bigint, jti text, "http://postgrest.com/foo" boolean nbf bigint, iat bigint, jti text, "http://postgrest.com/foo" boolean
) )
LANGUAGE sql SECURITY DEFINER LANGUAGE sql SECURITY DEFINER
STABLE
AS $$ AS $$
SELECT current_setting('request.jwt.claim.iss') as iss, SELECT current_setting('request.jwt.claim.iss') as iss,
current_setting('request.jwt.claim.sub') as sub, current_setting('request.jwt.claim.sub') as sub,
@@ -385,6 +394,7 @@ $_$;
CREATE FUNCTION singlejsonparam(single_param json) RETURNS json CREATE FUNCTION singlejsonparam(single_param json) RETURNS json
LANGUAGE sql LANGUAGE sql
IMMUTABLE
AS $_$ AS $_$
SELECT single_param; SELECT single_param;
$_$; $_$;
@@ -395,6 +405,7 @@ $_$;
CREATE FUNCTION test_empty_rowset() RETURNS SETOF integer CREATE FUNCTION test_empty_rowset() RETURNS SETOF integer
LANGUAGE sql LANGUAGE sql
IMMUTABLE
AS $$ AS $$
SELECT null::int FROM (SELECT 1) a WHERE false; SELECT null::int FROM (SELECT 1) a WHERE false;
$$; $$;
@@ -952,6 +963,7 @@ DO $do$BEGIN
CREATE FUNCTION getproject_domain(id int) RETURNS SETOF projects_domain CREATE FUNCTION getproject_domain(id int) RETURNS SETOF projects_domain
LANGUAGE sql LANGUAGE sql
STABLE
AS $_$ AS $_$
SELECT projects::projects_domain FROM test.projects WHERE id = $1; SELECT projects::projects_domain FROM test.projects WHERE id = $1;
$_$; $_$;
@@ -1163,11 +1175,13 @@ create function test.many_inout_params(INOUT num int, INOUT str text, INOUT b bo
$$ language sql; $$ language sql;
CREATE FUNCTION test.variadic_param(VARIADIC v TEXT[] DEFAULT '{}') RETURNS text[] CREATE FUNCTION test.variadic_param(VARIADIC v TEXT[] DEFAULT '{}') RETURNS text[]
IMMUTABLE
LANGUAGE SQL AS $$ LANGUAGE SQL AS $$
SELECT v SELECT v
$$; $$;
CREATE FUNCTION test.sayhello_variadic(name TEXT, VARIADIC v TEXT[]) RETURNS text CREATE FUNCTION test.sayhello_variadic(name TEXT, VARIADIC v TEXT[]) RETURNS text
IMMUTABLE
LANGUAGE SQL AS $$ LANGUAGE SQL AS $$
SELECT 'Hello, ' || name SELECT 'Hello, ' || name
$$; $$;
@@ -1680,7 +1694,7 @@ CREATE TABLE web_content (
CREATE FUNCTION getallusers() RETURNS SETOF users AS $$ CREATE FUNCTION getallusers() RETURNS SETOF users AS $$
SELECT * FROM test.users; SELECT * FROM test.users;
$$ LANGUAGE sql; $$ LANGUAGE sql STABLE;
create table app_users ( create table app_users (
id integer primary key, id integer primary key,