PostgreSQL/ci_scripts/backup/sql/incremental_data.sql
Shahid Ullah 43f4804ba5
[PG-938] Bash script to verify backup/restore functionality using pg_basebackup (#63)
* [PG-938] - Add automated bash script to verify pg_tde backup/restore functionality using pg_basebackup
* [PG-1367] Create separate script for server and tde configuration
2025-02-13 19:23:49 +05:00

75 lines
2.1 KiB
PL/PgSQL

-- Creating encrypted tables
CREATE TABLE tde_table (
id SERIAL PRIMARY KEY,
name TEXT
) USING tde_heap;
CREATE TABLE tde_child (
id SERIAL PRIMARY KEY,
parent_id INT REFERENCES tde_table(id)
) USING tde_heap;
-- Inserting test data
INSERT INTO tde_table (name) VALUES ('Alice'), ('Bob');
INSERT INTO tde_child (parent_id) VALUES (1);
-- Creating index on encrypted table
CREATE INDEX idx_tde_name ON tde_table(name);
SELECT tablename FROM pg_tables WHERE schemaname = 'public' ORDER BY tablename;
-- Adding constraints
ALTER TABLE tde_table ADD CONSTRAINT unique_name UNIQUE(name);
ALTER TABLE tde_table ADD CONSTRAINT check_name_length CHECK (LENGTH(name) > 3);
SELECT conname, conrelid::regclass, contype FROM pg_constraint WHERE connamespace = 'public'::regnamespace ORDER BY conrelid;
-- Creating test function
CREATE FUNCTION get_tde_data() RETURNS TABLE(id INT, name TEXT) AS $$
SELECT * FROM tde_table;
$$ LANGUAGE SQL;
-- Running function
SELECT * FROM get_tde_data();
-- Creating partitioned table
CREATE TABLE part_table (
id INT,
data TEXT
) PARTITION BY RANGE (id);
-- Creating partitions using TDE
CREATE TABLE part1 PARTITION OF part_table
FOR VALUES FROM (1) TO (100) USING tde_heap;
-- Insert test data
INSERT INTO part_table VALUES (10, 'Partitioned Data');
-- Querying data
SELECT inhrelid::regclass, inhparent::regclass FROM pg_inherits ORDER BY inhparent;
-- Creating audit log table
CREATE TABLE audit_log (
id SERIAL PRIMARY KEY,
table_name TEXT,
operation TEXT
) USING tde_heap;
-- Creating trigger function
CREATE FUNCTION audit_tde_changes() RETURNS TRIGGER AS $$
BEGIN
INSERT INTO audit_log (table_name, operation)
VALUES (TG_TABLE_NAME, TG_OP);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
-- Creating trigger
CREATE TRIGGER tde_audit
AFTER INSERT OR UPDATE OR DELETE ON tde_table
FOR EACH ROW EXECUTE FUNCTION audit_tde_changes();
SELECT tgname, relname FROM pg_trigger JOIN pg_class ON pg_trigger.tgrelid = pg_class.oid WHERE NOT tgisinternal ORDER BY relname;
-- Check WAL logs for plaintext leaks
-- SELECT * FROM pg_walfile_name_offset(pg_current_wal_lsn());