Merge pull request #1116 from dbgate/feature/fix-mysql-triggers-snapshot

fix: add triggers to mysql snapshot
This commit is contained in:
Jan Prochazka
2025-05-14 13:31:16 +02:00
committed by GitHub
4 changed files with 29 additions and 11 deletions

View File

@@ -245,6 +245,7 @@ class Analyser extends DatabaseAnalyser {
parameters: functionNameToParameters[x.pureName],
})),
triggers: triggers.rows.map(row => ({
objectId: 'triggers:' + row.triggerName,
contentHash: row.modifyDate,
pureName: row.triggerName,
eventType: row.eventType,
@@ -276,7 +277,8 @@ class Analyser extends DatabaseAnalyser {
const tableModificationsQueryData = await this.analyserQuery('tableModifications');
const procedureModificationsQueryData = await this.analyserQuery('procedureModifications');
const functionModificationsQueryData = await this.analyserQuery('functionModifications');
const schedulerEvents = await this.analyserQuery('schedulerEvents');
const schedulerEvents = await this.analyserQuery('schedulerEventsModifications');
const triggers = await this.analyserQuery('triggersModifications');
return {
tables: tableModificationsQueryData.rows
@@ -307,17 +309,13 @@ class Analyser extends DatabaseAnalyser {
schedulerEvents: schedulerEvents.rows.map(row => ({
contentHash: _.isDate(row.LAST_ALTERED) ? row.LAST_ALTERED.toISOString() : row.LAST_ALTERED,
pureName: row.EVENT_NAME,
createSql: row.CREATE_SQL,
objectId: row.EVENT_NAME,
intervalValue: row.INTERVAL_VALUE,
intervalField: row.INTERVAL_FIELD,
starts: row.STARTS,
status: row.STATUS,
executeAt: row.EXECUTE_AT,
lastExecuted: row.LAST_EXECUTED,
eventType: row.EVENT_TYPE,
definer: row.DEFINER,
objectTypeField: 'schedulerEvents',
})),
triggers: triggers.rows.map(row => ({
contentHash: row.modifyDate,
objectId: 'triggers:' + row.triggerName,
pureName: row.triggerName,
tableName: row.tableName,
})),
};
}

View File

@@ -12,7 +12,9 @@ const uniqueNames = require('./uniqueNames');
const viewTexts = require('./viewTexts');
const parameters = require('./parameters');
const triggers = require('./triggers');
const triggersModifications = require('./triggersModifications');
const schedulerEvents = require('./schedulerEvents.js');
const schedulerEventsModifications = require('./schedulerEventsModifications.js');
module.exports = {
columns,
@@ -29,5 +31,7 @@ module.exports = {
uniqueNames,
viewTexts,
triggers,
triggersModifications,
schedulerEvents,
schedulerEventsModifications,
};

View File

@@ -0,0 +1,7 @@
module.exports = `
SELECT
EVENT_NAME,
LAST_ALTERED
FROM INFORMATION_SCHEMA.EVENTS
WHERE EVENT_SCHEMA = '#DATABASE#'
`;

View File

@@ -0,0 +1,9 @@
module.exports = `
SELECT
TRIGGER_NAME AS triggerName,
EVENT_OBJECT_TABLE AS tableName,
CREATED as modifyDate
FROM
INFORMATION_SCHEMA.TRIGGERS
WHERE EVENT_OBJECT_SCHEMA = '#DATABASE#'
`;