Вот попытка хранимой_процедуры удалить таблицы, к которым не обращались в течение последних 2 месяцев.
Information_schema.tables содержит все таблицы, присутствующие в нашем кластере красных смещений. admin.stl_query_archive содержит все запросы, которые выполнялись до сих пор.
Я пытаюсь найти все таблицы, которых нет в запросах, выполненных за последние 2 месяца.
CREATE OR REPLACE PROCEDURE sp_drop_tables(out_var OUT varchar(256))
-- CREATE OR REPLACE PROCEDURE sp_drop_tables_()
AS $$
DECLARE
r_c int := 0;
rec record;
tbl_rows int;
BEGIN
for rec in select distinct table_name from information_schema.tables
loop
raise info 'table_name = %', rec.table_name;
tbl_rows := 0;
select count(*) into tbl_rows from admin.stl_query_archive where endtime > getdate() - 61 and querytxt like '%'||quote_literal(rec.table_name)||'%';
if tbl_rows = 0 then
raise info 'this table is old';
end if;
end loop;
select into out_var count(*) from admin.stl_query_archive;
END;
$$ LANGUAGE plpgsql;
call sp_drop_tables()
;
Мой подход кажется правильным, единственная проблема в том, что он выдает следующую ошибку во время работы -
Error [XX000 / 500310]: [Amazon](500310) Invalid operation: Assert
----------------------------------------------- error: Assert code: 1000 context: false - Unknown
constant type to hash: 17134 query: 2122914 location: cg_hash.cpp:84 process: padbmaster [pid=124705]
-----------------------------------------------;
Кто-нибудь может мне помочь с этим? Любая обратная связь с благодарностью!