\! gs_ktool -d all
DELETE ALL
\! gs_ktool -g
GENERATE
1
DROP CLIENT MASTER KEY IF EXISTS out_cmk CASCADE;
NOTICE: client master key "out_cmk" does not exist
CREATE CLIENT MASTER KEY out_cmk WITH ( KEY_STORE = gs_ktool , KEY_PATH = "gs_ktool/1" , ALGORITHM = AES_256_CBC);
CREATE COLUMN ENCRYPTION KEY out_cek WITH VALUES (CLIENT_MASTER_KEY = out_cmk, ALGORITHM = AEAD_AES_256_CBC_HMAC_SHA256);
CREATE TABLE t_processed (name text, val INT ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = out_cek, ENCRYPTION_TYPE = DETERMINISTIC), val2 INT);
INSERT INTO t_processed VALUES('name', 1, 2);
CREATE TABLE t_processed_b (name text, val bytea ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = out_cek, ENCRYPTION_TYPE = DETERMINISTIC), val2 INT);
INSERT INTO t_processed_b VALUES('name', 'test', 2);
CREATE OR REPLACE FUNCTION f_processed_out_1param(out1 OUT int) AS 'SELECT val from t_processed LIMIT 1' LANGUAGE SQL;
CREATE OR REPLACE FUNCTION f_processed_out(out1 OUT int, out2 OUT int) AS 'SELECT val, val2 from t_processed LIMIT 1' LANGUAGE SQL;
CREATE OR REPLACE FUNCTION f_processed_out_b(out1 OUT bytea, out2 OUT int) AS 'SELECT val, val2 from t_processed_b LIMIT 1' LANGUAGE SQL;
CREATE OR REPLACE FUNCTION f_processed_out_plpgsql(out out1 int, out out2 int)
as $$
begin
select val, val2 INTO out1, out2 from t_processed;
end;$$
LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION f_processed_out_plpgsql2(out out1 t_processed.val%TYPE, out out2 t_processed.val%TYPE)
as $$
begin
select val, val2 INTO out1, out2 from t_processed;
end;$$
LANGUAGE plpgsql;
NOTICE: type reference t_processed.val%TYPE converted to integer
NOTICE: type reference t_processed.val%TYPE converted to integer
CREATE OR REPLACE FUNCTION f_processed_aliases_plpgsql(out out1 int, out out2 int) as
$BODY$
DECLARE
val1 ALIAS FOR out1;
begin
select val, val2 INTO val1, out2 from t_processed;
end;
$BODY$
LANGUAGE plpgsql;
select proname, prorettype, proallargtypes, prorettype_orig, proallargtypes_orig FROM pg_proc LEFT JOIN gs_encrypted_proc ON pg_proc.
Oid = gs_encrypted_proc.func_id WHERE proname IN ('f_processed_out', 'f_processed_out_plpgsql', 'f_processed_out_plpgsql2', 'f_processed_aliases_plpgsql', 'f_processed_out_1param') ORDER BY proname;
proname | prorettype | proallargtypes | prorettype_orig | proallargtypes_orig
-----------------------------+------------+----------------+-----------------+---------------------
f_processed_aliases_plpgsql | 2249 | {4402,23} | 0 | {23,-1}
f_processed_out | 2249 | {4402,23} | 0 | {23,-1}
f_processed_out_1param | 4402 | {4402} | 23 | {23}
f_processed_out_plpgsql | 2249 | {4402,23} | 0 | {23,-1}
f_processed_out_plpgsql2 | 2249 | {4402,23} | 0 | {23,-1}
(5 rows)
SELECT f_processed_out_1param();
f_processed_out_1param
------------------------
1
(1 row)
SELECT f_processed_out();
f_processed_out
-----------------
(1,2)
(1 row)
SELECT f_processed_out_b();
f_processed_out_b
-------------------
("\\x74657374",2)
(1 row)
SELECT f_processed_out_plpgsql();
f_processed_out_plpgsql
-------------------------
(1,2)
(1 row)
SELECT f_processed_out_plpgsql2();
f_processed_out_plpgsql2
--------------------------
(1,2)
(1 row)
SELECT f_processed_aliases_plpgsql();
f_processed_aliases_plpgsql
-----------------------------
(1,2)
(1 row)
DROP FUNCTION f_processed_out_b;
DROP TABLE t_processed CASCADE;
DROP TABLE t_processed_b CASCADE;
DROP FUNCTION f_processed_out_1param;
DROP FUNCTION f_processed_out;
DROP FUNCTION f_processed_out_plpgsql;
DROP FUNCTION f_processed_out_plpgsql2;
DROP FUNCTION f_processed_aliases_plpgsql;
DROP COLUMN ENCRYPTION KEY out_cek;
DROP CLIENT MASTER KEY out_cmk;
\! gs_ktool -d all
DELETE ALL
1