forked from postgres/postgres
-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathdefault_principal_key.out
100 lines (90 loc) · 3.51 KB
/
default_principal_key.out
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
CREATE EXTENSION IF NOT EXISTS pg_tde;
SELECT pg_tde_add_global_key_provider_file('file-provider','/tmp/pg_tde_regression_default_principal_key.per');
pg_tde_add_global_key_provider_file
-------------------------------------
-3
(1 row)
SELECT pg_tde_set_default_principal_key('default-principal-key', 'file-provider', false);
pg_tde_set_default_principal_key
----------------------------------
t
(1 row)
-- fails
SELECT pg_tde_delete_global_key_provider('file-provider');
ERROR: Can't delete a provider which is currently in use
SELECT id, provider_name FROM pg_tde_list_all_global_key_providers();
id | provider_name
----+---------------
-2 | file-keyring2
-3 | file-provider
(2 rows)
-- Should fail: no principal key for the database yet
SELECT key_provider_id, key_provider_name, principal_key_name
FROM pg_tde_principal_key_info();
ERROR: Principal key does not exists for the database
HINT: Use set_principal_key interface to set the principal key
-- Should succeed: "localizes" the default principal key for the database
CREATE TABLE test_enc(
id SERIAL,
k INTEGER DEFAULT '0' NOT NULL,
PRIMARY KEY (id)
) USING tde_heap;
INSERT INTO test_enc (k) VALUES (1), (2), (3);
-- Should succeed: create table localized the principal key
SELECT key_provider_id, key_provider_name, principal_key_name
FROM pg_tde_principal_key_info();
key_provider_id | key_provider_name | principal_key_name
-----------------+-------------------+-----------------------
-3 | file-provider | default-principal-key
(1 row)
SELECT current_database() AS regress_database
\gset
CREATE DATABASE regress_pg_tde_other;
\c regress_pg_tde_other
CREATE EXTENSION pg_tde;
-- TODO
SELECT key_provider_id, key_provider_name, principal_key_name
FROM pg_tde_principal_key_info();
key_provider_id | key_provider_name | principal_key_name
-----------------+-------------------+-----------------------
-3 | file-provider | default-principal-key
(1 row)
-- Should succeed: "localizes" the default principal key for the database
CREATE TABLE test_enc(
id SERIAL,
k INTEGER DEFAULT '0' NOT NULL,
PRIMARY KEY (id)
) USING tde_heap;
INSERT INTO test_enc (k) VALUES (1), (2), (3);
-- Should succeed: create table localized the principal key
SELECT key_provider_id, key_provider_name, principal_key_name
FROM pg_tde_principal_key_info();
key_provider_id | key_provider_name | principal_key_name
-----------------+-------------------+-----------------------
-3 | file-provider | default-principal-key
(1 row)
\c :regress_database
SELECT pg_tde_set_default_principal_key('new-default-principal-key', 'file-provider', false);
pg_tde_set_default_principal_key
----------------------------------
t
(1 row)
SELECT key_provider_id, key_provider_name, principal_key_name
FROM pg_tde_principal_key_info();
key_provider_id | key_provider_name | principal_key_name
-----------------+-------------------+---------------------------
-3 | file-provider | new-default-principal-key
(1 row)
\c regress_pg_tde_other
SELECT key_provider_id, key_provider_name, principal_key_name
FROM pg_tde_principal_key_info();
key_provider_id | key_provider_name | principal_key_name
-----------------+-------------------+---------------------------
-3 | file-provider | new-default-principal-key
(1 row)
DROP TABLE test_enc;
DROP EXTENSION pg_tde CASCADE;
\c :regress_database
DROP TABLE test_enc;
DROP EXTENSION pg_tde CASCADE;
DROP DATABASE regress_pg_tde_other;