salix/db/routines/util/procedures/log_clean.sql

51 lines
1.2 KiB
MySQL
Raw Normal View History

2024-06-18 06:40:33 +00:00
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `util`.`log_clean`()
BEGIN
/**
* Hace limpieza de los datos de las tablas log,
* dejando únicamente los días de retención configurados.
*/
DECLARE vSchemaName VARCHAR(65);
DECLARE vTableName VARCHAR(65);
DECLARE vRetentionDays INT;
2024-07-19 06:58:51 +00:00
DECLARE vStarted DATETIME;
2024-06-18 06:40:33 +00:00
DECLARE vDated DATE;
DECLARE vDone BOOL;
DECLARE vQueue CURSOR FOR
SELECT schemaName, tableName, retentionDays
FROM logCleanMultiConfig
2024-06-18 06:40:33 +00:00
ORDER BY `order`;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
OPEN vQueue;
l: LOOP
SET vDone = FALSE;
FETCH vQueue INTO vSchemaName, vTableName, vRetentionDays;
2024-07-19 06:58:51 +00:00
IF vDone THEN
LEAVE l;
END IF;
2024-07-19 06:58:51 +00:00
IF vRetentionDays THEN
SET vStarted = util.VN_NOW();
SET vDated = VN_CURDATE() - INTERVAL vRetentionDays DAY;
CALL util.exec(CONCAT(
2024-07-19 06:58:51 +00:00
'DELETE FROM ', util.quoteIdentifier(vSchemaName),
'.', util.quoteIdentifier(vTableName),
" WHERE creationDate < '", vDated, "'"
));
UPDATE logCleanMultiConfig
2024-07-19 06:58:51 +00:00
SET `started` = vStarted,
`finished` = VN_NOW()
WHERE schemaName = vSchemaName
AND tableName = vTableName;
END IF;
2024-06-18 06:40:33 +00:00
END LOOP;
CLOSE vQueue;
END$$
DELIMITER ;