\! gs_ktool -d all
DELETE ALL

\! gs_ktool -g
GENERATE
1
DROP CLIENT MASTER KEY IF EXISTS drop_cmk CASCADE;
NOTICE:  client master key "drop_cmk" does not exist
CREATE CLIENT MASTER KEY drop_cmk WITH ( KEY_STORE = gs_ktool , KEY_PATH = "gs_ktool/1" , ALGORITHM = AES_256_CBC);
CREATE COLUMN ENCRYPTION KEY drop_cek WITH VALUES (CLIENT_MASTER_KEY = drop_cmk, ALGORITHM = AEAD_AES_256_CBC_HMAC_SHA256);
create table accounts (
    id serial,
    name varchar(100) not null ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = drop_cek, ENCRYPTION_TYPE = DETERMINISTIC),
    balance dec(15,2) not null ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = drop_cek, ENCRYPTION_TYPE = DETERMINISTIC),
    primary key(id)
);
NOTICE:  CREATE TABLE will create implicit sequence "accounts_id_seq" for serial column "accounts.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "accounts_pkey" for table "accounts"
CREATE OR REPLACE FUNCTION f_processed_in_plpgsql(a varchar(100)) 
RETURNS varchar(100) AS $$
declare
c varchar(100);
BEGIN
    SELECT into c name from accounts where name=$1 LIMIT 1;
    RETURN c;
END; $$
LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION f_processed_in_plpgsql(a varchar(100), b dec(15,2)) 
RETURNS varchar(100) AS $$
declare
c varchar(100);
BEGIN
    SELECT into c name from accounts where name=$1 or balance=$2 LIMIT 1;
    RETURN c;
END; $$
LANGUAGE plpgsql;
DROP FUNCTION f_processed_in_plpgsql(a varchar(100), b dec(15,2));
DROP FUNCTION f_processed_in_plpgsql(a varchar(100));
-- will this cleanup succeed?
DROP FUNCTION f_processed_in_plpgsql(); 
ERROR:  function f_processed_in_plpgsql does not exist
DROP FUNCTION f_processed_in_plpgsql();
ERROR:  function f_processed_in_plpgsql does not exist
DROP TABLE accounts;
DROP COLUMN ENCRYPTION KEY drop_cek;
DROP CLIENT MASTER KEY drop_cmk;
\! gs_ktool -d all
DELETE ALL
 1