PG-1380 Make pg_tde_is_encrypted() take a regclass

By changing the parameter to regclass you can pass any parameter of
the following types to it: text, oid, regclass; and there will be
an automatic cast. More user freindly than accepting text.
pull/209/head
Andreas Karlsson 7 months ago committed by Andreas Karlsson
parent bbf830267a
commit 54d4598619
  1. 2
      ci_scripts/backup/sql/verify_incremental_data.sql
  2. 2
      ci_scripts/backup/sql/verify_sample_data.sql
  3. 6
      contrib/pg_tde/expected/pg_tde_is_encrypted.out
  4. 6
      contrib/pg_tde/expected/pg_tde_is_encrypted_basic.out
  5. 12
      contrib/pg_tde/pg_tde--1.0-beta2.sql
  6. 2
      contrib/pg_tde/sql/pg_tde_is_encrypted.inc

@ -83,7 +83,7 @@ WHERE tde_table.id IS NULL;
-- 10. Verify tables are encrypted
-- ===============================================
-- Verify all tables exist and are encrypted
SELECT tablename, pg_tde_is_encrypted(tablename::TEXT) AS is_encrypted
SELECT tablename, pg_tde_is_encrypted(tablename::regclass) AS is_encrypted
FROM pg_tables
WHERE schemaname = 'public'
AND tablename IN ('tde_table', 'tde_child', 'part1','part_table')

@ -128,7 +128,7 @@ WHERE dept.deptno IS NULL;
-- 9. Verify tables are encrypted
-- ===============================================
-- Verify all tables exist and are encrypted
SELECT tablename, pg_tde_is_encrypted(tablename::TEXT) AS is_encrypted
SELECT tablename, pg_tde_is_encrypted(tablename::regclass) AS is_encrypted
FROM pg_tables
WHERE schemaname = 'public'
AND tablename IN ('dept', 'emp', 'jobhist')

@ -50,12 +50,6 @@ SELECT pg_tde_is_encrypted('test_norm');
f
(1 row)
SELECT pg_tde_is_encrypted('public.test_enc');
pg_tde_is_encrypted
---------------------
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

@ -52,12 +52,6 @@ SELECT pg_tde_is_encrypted('test_norm');
f
(1 row)
SELECT pg_tde_is_encrypted('public.test_enc');
pg_tde_is_encrypted
---------------------
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

@ -424,22 +424,22 @@ RETURNS table_am_handler
LANGUAGE C
AS 'MODULE_PATHNAME';
CREATE FUNCTION pg_tde_internal_has_key(oid OID)
CREATE FUNCTION pg_tde_internal_has_key(relation regclass)
RETURNS boolean
LANGUAGE C
AS 'MODULE_PATHNAME';
CREATE FUNCTION pg_tde_is_encrypted(table_name TEXT)
CREATE FUNCTION pg_tde_is_encrypted(table_name regclass)
RETURNS boolean
LANGUAGE SQL
BEGIN ATOMIC
SELECT EXISTS (
SELECT 1
FROM pg_catalog.pg_class
WHERE oid = table_name::regclass::oid
WHERE oid = table_name
AND (relam = (SELECT oid FROM pg_catalog.pg_am WHERE amname = 'tde_heap_basic')
OR (relam = (SELECT oid FROM pg_catalog.pg_am WHERE amname = 'tde_heap'))
AND pg_tde_internal_has_key(table_name::regclass::oid))
AND pg_tde_internal_has_key(table_name))
);
END;
@ -621,7 +621,7 @@ AS $$
BEGIN
EXECUTE format('GRANT EXECUTE ON FUNCTION pg_tde_list_all_key_providers() TO %I', target_role);
EXECUTE format('GRANT EXECUTE ON FUNCTION pg_tde_list_all_global_key_providers() TO %I', target_role);
EXECUTE format('GRANT EXECUTE ON FUNCTION pg_tde_is_encrypted(text) TO %I', target_role);
EXECUTE format('GRANT EXECUTE ON FUNCTION pg_tde_is_encrypted(regclass) TO %I', target_role);
EXECUTE format('GRANT EXECUTE ON FUNCTION pg_tde_principal_key_info() TO %I', target_role);
EXECUTE format('GRANT EXECUTE ON FUNCTION pg_tde_global_principal_key_info() TO %I', target_role);
@ -702,7 +702,7 @@ AS $$
BEGIN
EXECUTE format('REVOKE EXECUTE ON FUNCTION pg_tde_list_all_key_providers() FROM %I', target_role);
EXECUTE format('REVOKE EXECUTE ON FUNCTION pg_tde_list_all_global_key_providers() FROM %I', target_role);
EXECUTE format('REVOKE EXECUTE ON FUNCTION pg_tde_is_encrypted(text) FROM %I', target_role);
EXECUTE format('REVOKE EXECUTE ON FUNCTION pg_tde_is_encrypted(regclass) FROM %I', target_role);
EXECUTE format('REVOKE EXECUTE ON FUNCTION pg_tde_principal_key_info() FROM %I', target_role);
EXECUTE format('REVOKE EXECUTE ON FUNCTION pg_tde_global_principal_key_info() FROM %I', target_role);

@ -23,8 +23,6 @@ SELECT amname FROM pg_class INNER JOIN pg_am ON pg_am.oid = pg_class.relam WHERE
SELECT pg_tde_is_encrypted('test_enc');
SELECT pg_tde_is_encrypted('test_norm');
SELECT pg_tde_is_encrypted('public.test_enc');
SELECT key_provider_id, key_provider_name, principal_key_name
FROM pg_tde_principal_key_info();

Loading…
Cancel
Save