From f6699ad93bfe009801dec8f8bb75f7c0c3631482 Mon Sep 17 00:00:00 2001 From: Nybkox Date: Tue, 13 May 2025 12:35:24 +0200 Subject: [PATCH 1/4] fix: add triggers to mysql snapshot --- .../src/backend/Analyser.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/plugins/dbgate-plugin-mysql/src/backend/Analyser.js b/plugins/dbgate-plugin-mysql/src/backend/Analyser.js index 27402eca8..5b97f15d2 100644 --- a/plugins/dbgate-plugin-mysql/src/backend/Analyser.js +++ b/plugins/dbgate-plugin-mysql/src/backend/Analyser.js @@ -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, @@ -277,6 +278,7 @@ class Analyser extends DatabaseAnalyser { const procedureModificationsQueryData = await this.analyserQuery('procedureModifications'); const functionModificationsQueryData = await this.analyserQuery('functionModifications'); const schedulerEvents = await this.analyserQuery('schedulerEvents'); + const triggers = await this.analyserQuery('triggers'); 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, })), }; } From 31a6f7b621ea97c51b0ff1db7077c48b74bbbddb Mon Sep 17 00:00:00 2001 From: Nybkox Date: Tue, 13 May 2025 13:03:59 +0200 Subject: [PATCH 2/4] fix: add triggersModifications query --- plugins/dbgate-plugin-mysql/src/backend/Analyser.js | 2 +- plugins/dbgate-plugin-mysql/src/backend/sql/index.js | 2 ++ .../src/backend/sql/triggersModifications.js | 9 +++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 plugins/dbgate-plugin-mysql/src/backend/sql/triggersModifications.js diff --git a/plugins/dbgate-plugin-mysql/src/backend/Analyser.js b/plugins/dbgate-plugin-mysql/src/backend/Analyser.js index 5b97f15d2..ced1f327b 100644 --- a/plugins/dbgate-plugin-mysql/src/backend/Analyser.js +++ b/plugins/dbgate-plugin-mysql/src/backend/Analyser.js @@ -278,7 +278,7 @@ class Analyser extends DatabaseAnalyser { const procedureModificationsQueryData = await this.analyserQuery('procedureModifications'); const functionModificationsQueryData = await this.analyserQuery('functionModifications'); const schedulerEvents = await this.analyserQuery('schedulerEvents'); - const triggers = await this.analyserQuery('triggers'); + const triggers = await this.analyserQuery('triggersModifications'); return { tables: tableModificationsQueryData.rows diff --git a/plugins/dbgate-plugin-mysql/src/backend/sql/index.js b/plugins/dbgate-plugin-mysql/src/backend/sql/index.js index ab23eeaca..37c4234f3 100644 --- a/plugins/dbgate-plugin-mysql/src/backend/sql/index.js +++ b/plugins/dbgate-plugin-mysql/src/backend/sql/index.js @@ -12,6 +12,7 @@ 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'); module.exports = { @@ -29,5 +30,6 @@ module.exports = { uniqueNames, viewTexts, triggers, + triggersModifications, schedulerEvents, }; diff --git a/plugins/dbgate-plugin-mysql/src/backend/sql/triggersModifications.js b/plugins/dbgate-plugin-mysql/src/backend/sql/triggersModifications.js new file mode 100644 index 000000000..f52334b07 --- /dev/null +++ b/plugins/dbgate-plugin-mysql/src/backend/sql/triggersModifications.js @@ -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#' AND TRIGGER_NAME =OBJECT_ID_CONDITION +`; From 660e76145ed4a1498013e6fa2c5bc1ca3de90244 Mon Sep 17 00:00:00 2001 From: Nybkox Date: Tue, 13 May 2025 13:04:10 +0200 Subject: [PATCH 3/4] fix: add schedulerEventsModifications query --- plugins/dbgate-plugin-mysql/src/backend/Analyser.js | 2 +- plugins/dbgate-plugin-mysql/src/backend/sql/index.js | 2 ++ .../src/backend/sql/schedulerEventsModifications.js | 7 +++++++ 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 plugins/dbgate-plugin-mysql/src/backend/sql/schedulerEventsModifications.js diff --git a/plugins/dbgate-plugin-mysql/src/backend/Analyser.js b/plugins/dbgate-plugin-mysql/src/backend/Analyser.js index ced1f327b..ba94d39bb 100644 --- a/plugins/dbgate-plugin-mysql/src/backend/Analyser.js +++ b/plugins/dbgate-plugin-mysql/src/backend/Analyser.js @@ -277,7 +277,7 @@ 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 { diff --git a/plugins/dbgate-plugin-mysql/src/backend/sql/index.js b/plugins/dbgate-plugin-mysql/src/backend/sql/index.js index 37c4234f3..41450cb6d 100644 --- a/plugins/dbgate-plugin-mysql/src/backend/sql/index.js +++ b/plugins/dbgate-plugin-mysql/src/backend/sql/index.js @@ -14,6 +14,7 @@ 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, @@ -32,4 +33,5 @@ module.exports = { triggers, triggersModifications, schedulerEvents, + schedulerEventsModifications, }; diff --git a/plugins/dbgate-plugin-mysql/src/backend/sql/schedulerEventsModifications.js b/plugins/dbgate-plugin-mysql/src/backend/sql/schedulerEventsModifications.js new file mode 100644 index 000000000..540806ebf --- /dev/null +++ b/plugins/dbgate-plugin-mysql/src/backend/sql/schedulerEventsModifications.js @@ -0,0 +1,7 @@ +module.exports = ` +SELECT + EVENT_NAME, + LAST_ALTERED +FROM INFORMATION_SCHEMA.EVENTS +WHERE EVENT_SCHEMA = '#DATABASE#' AND EVENT_NAME =OBJECT_ID_CONDITION +`; From 170cf4753e9e731568ed2672bc7f5c5cafee7198 Mon Sep 17 00:00:00 2001 From: Nybkox Date: Tue, 13 May 2025 14:10:00 +0200 Subject: [PATCH 4/4] fix: remove object conditions from modification queries --- .../src/backend/sql/schedulerEventsModifications.js | 2 +- .../src/backend/sql/triggersModifications.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/dbgate-plugin-mysql/src/backend/sql/schedulerEventsModifications.js b/plugins/dbgate-plugin-mysql/src/backend/sql/schedulerEventsModifications.js index 540806ebf..b66612417 100644 --- a/plugins/dbgate-plugin-mysql/src/backend/sql/schedulerEventsModifications.js +++ b/plugins/dbgate-plugin-mysql/src/backend/sql/schedulerEventsModifications.js @@ -3,5 +3,5 @@ SELECT EVENT_NAME, LAST_ALTERED FROM INFORMATION_SCHEMA.EVENTS -WHERE EVENT_SCHEMA = '#DATABASE#' AND EVENT_NAME =OBJECT_ID_CONDITION +WHERE EVENT_SCHEMA = '#DATABASE#' `; diff --git a/plugins/dbgate-plugin-mysql/src/backend/sql/triggersModifications.js b/plugins/dbgate-plugin-mysql/src/backend/sql/triggersModifications.js index f52334b07..cc2807481 100644 --- a/plugins/dbgate-plugin-mysql/src/backend/sql/triggersModifications.js +++ b/plugins/dbgate-plugin-mysql/src/backend/sql/triggersModifications.js @@ -5,5 +5,5 @@ SELECT CREATED as modifyDate FROM INFORMATION_SCHEMA.TRIGGERS - WHERE EVENT_OBJECT_SCHEMA = '#DATABASE#' AND TRIGGER_NAME =OBJECT_ID_CONDITION + WHERE EVENT_OBJECT_SCHEMA = '#DATABASE#' `;