очистки динамически таблиц метрики, но очистка не проходит
что тут не так?
SQL='
do
$$
DECLARE
tabname TEXT;
BEGIN
FOR tabname IN SELECT table_schema || '\''.'\'' || table_name FROM information_schema.tables WHERE table_schema = '\''metrics'\''
LOOP
EXECUTE '\''TRUNCATE TABLE '\'' || tabname || '\'' CASCADE'\'';
END LOOP;
END;
$$ language plpgsql;'
raise notice для отладки. Или включить логирование запросов на сервере и тоже посмотреть что там реально выполняется.
делал raise notice EXECUTE '\''select COUNT(*) FROM '\'' || tabname INTO res; RAISE NOTICE '\''%: %'\'', tabname, res; получил NOTICE: metrics.alembic_version: 1 NOTICE: metrics.traffic_2023_08_05t00: 0 NOTICE: metrics.traffic_2023_08_07t00: 0 NOTICE: metrics.host_2023_08_08t00: 16 NOTICE: metrics.interaction_2023_08_08t00: 0 NOTICE: metrics.active_host_2023_08_07t00: 0 NOTICE: metrics.traffic_host_2023_08_08t00: 0 NOTICE: metrics.event_with_protocol_2023_08_08t00: 0 NOTICE: metrics.traffic_2023_08_08t00: 134 NOTICE: metrics.active_connection_2023_08_08t00: 0 NOTICE: metrics.event_2023_08_08t00: 0 NOTICE: metrics.learning_mode: 0 NOTICE: metrics.traffic_2023_08_04t00: 0 NOTICE: metrics.traffic_2023_08_06t00: 0 NOTICE: metrics.host_2023_08_07t00: 0 NOTICE: metrics.connection_2023_08_08t00: 0 NOTICE: metrics.event_2023_08_03t00: 0 NOTICE: metrics.active_host: 16
Я бы посмотрел на саму строку динамического SQL.
не совсем понял, про это речь? FOR tabname IN SELECT table_schema || '\''.'\'' || table_name FROM information_schema.tables WHERE table_schema = '\''metrics'\''
Вот это всё добро вывести в явном виде и проверить как оно работает: EXECUTE '\''TRUNCATE TABLE '\'' || tabname || '\'' CASCADE'\''; Кстати, а ошибок в логе нет? commit успешен?
Обсуждают сегодня