diff --git a/src/xvacuum.cpp b/src/xvacuum.cpp index f2cd476..7d499f0 100644 --- a/src/xvacuum.cpp +++ b/src/xvacuum.cpp @@ -69,6 +69,7 @@ int yezzey_vacuum_garbage_internal(int segindx, bool confirm, bool crazyDrop) { } return 0; } + int yezzey_vacuum_garbage_relation_internal(Relation rel, int segindx, bool confirm, bool crazyDrop) { try { @@ -109,6 +110,7 @@ int yezzey_vacuum_garbage_relation_internal(Relation rel, int segindx, } return 0; } + int yezzey_vacuum_garbage_relation_internal_oid(Oid reloid, int segindx, bool confirm, bool crazyDrop) { Relation rel = relation_open(reloid, NoLock); diff --git a/yezzey--1.8.1--1.8.2.sql b/yezzey--1.8.1--1.8.2.sql index f4ea645..ae543dc 100644 --- a/yezzey--1.8.1--1.8.2.sql +++ b/yezzey--1.8.1--1.8.2.sql @@ -1,8 +1,35 @@ -CREATE TABLE yezzey.yezzey_expire_hint -( - x_path TEXT PRIMARY KEY, - lsn pg_lsn -) WITH (appendonly=false); +CREATE TABLE yezzey.yezzey_virtual_index_stale AS + SELECT * FROM yezzey.yezzey_virtual_index LIMIT 0; -CREATE INDEX yezzey_virtual_index_x_path ON yezzey.yezzey_virtual_index(x_path); +CREATE TABLE yezzey.offload_metadata_stale AS + SELECT * FROM yezzey.offload_metadata LIMIT 0; + +CREATE OR REPLACE FUNCTION +yezzey.yezzey_fixup_stale_metadata() RETURNS VOID +AS +$$ + WITH stale_data AS ( + SELECT * FROM + yezzey.yezzey_virtual_index vi + WHERE NOT EXISTS (SELECT 1 FROM pg_class WHERE relfilenode = vi.filenode) + ) + INSERT INTO yezzey.yezzey_virtual_index_stale TABLE stale_data; + + DELETE FROM + yezzey.yezzey_virtual_index vi + WHERE NOT EXISTS (SELECT 1 FROM pg_class WHERE relfilenode = vi.filenode); + + WITH stale_offload_data AS ( + SELECT * FROM + yezzey.offload_metadata op + WHERE NOT EXISTS (SELECT 1 FROM pg_class WHERE oid = op.reloid) + ) + INSERT INTO yezzey.offload_metadata_stale TABLE stale_offload_data; + + DELETE FROM + yezzey.offload_metadata op + WHERE NOT EXISTS (SELECT 1 FROM pg_class WHERE oid = op.reloid); + +$$ LANGUAGE SQL +EXECUTE ON ALL SEGMENTS; \ No newline at end of file diff --git a/yezzey--1.8.3--1.8.4.sql b/yezzey--1.8.3--1.8.4.sql index af2183c..87efb86 100644 --- a/yezzey--1.8.3--1.8.4.sql +++ b/yezzey--1.8.3--1.8.4.sql @@ -1,43 +1,3 @@ -CREATE TABLE yezzey.yezzey_virtual_index_stale AS - SELECT * FROM yezzey.yezzey_virtual_index LIMIT 0; -CREATE TABLE yezzey.offload_metadata_stale AS - SELECT * FROM yezzey.offload_metadata LIMIT 0; - -CREATE OR REPLACE FUNCTION -yezzey.fixup_stale_data() RETURNS VOID -AS -$$ - WITH stale_data AS ( - SELECT * FROM - yezzey.yezzey_virtual_index vi - WHERE NOT EXISTS (SELECT 1 FROM pg_class WHERE relfilenode = vi.filenode) - ) - INSERT INTO yezzey.yezzey_virtual_index_stale TABLE stale_data; - - DELETE FROM - yezzey.yezzey_virtual_index vi - WHERE NOT EXISTS (SELECT 1 FROM pg_class WHERE relfilenode = vi.filenode); - - WITH stale_offload_data AS ( - SELECT * FROM - yezzey.offload_metadata op - WHERE NOT EXISTS (SELECT 1 FROM pg_class WHERE oid = op.reloid) - ) - INSERT INTO yezzey.offload_metadata_stale TABLE stale_offload_data; - - DELETE FROM - yezzey.offload_metadata op - WHERE NOT EXISTS (SELECT 1 FROM pg_class WHERE oid = op.reloid); - -$$ LANGUAGE SQL -EXECUTE ON ALL SEGMENTS; - -SET allow_segment_dml TO ON; - -SELECT yezzey.fixup_stale_data(); - -RESET allow_segment_DML; - -DROP FUNCTION yezzey.fixup_stale_data(); \ No newline at end of file +-- create yezzey hint index here \ No newline at end of file