Merge pull request #985 from dbgate/feature/mysql-event-scheduler

Feature/mysql event scheduler
This commit is contained in:
Jan Prochazka
2025-01-07 14:37:30 +01:00
committed by GitHub
16 changed files with 276 additions and 34 deletions

View File

@@ -10,7 +10,16 @@ import { extractErrorLogData } from './stringTools';
const logger = getLogger('dbAnalyser');
const STRUCTURE_FIELDS = ['tables', 'collections', 'views', 'matviews', 'functions', 'procedures', 'triggers'];
const STRUCTURE_FIELDS = [
'tables',
'collections',
'views',
'matviews',
'functions',
'procedures',
'triggers',
'schedulerEvents',
];
const fp_pick = arg => array => _pick(array, arg);
@@ -70,7 +79,9 @@ export class DatabaseAnalyser {
}
async fullAnalysis() {
logger.debug(`Performing full analysis, DB=${dbNameLogCategory(this.dbhan.database)}, engine=${this.driver.engine}`);
logger.debug(
`Performing full analysis, DB=${dbNameLogCategory(this.dbhan.database)}, engine=${this.driver.engine}`
);
const res = this.addEngineField(await this._runAnalysis());
// console.log('FULL ANALYSIS', res);
return res;
@@ -255,6 +266,7 @@ export class DatabaseAnalyser {
...this.getDeletedObjectsForField(snapshot, 'procedures'),
...this.getDeletedObjectsForField(snapshot, 'functions'),
...this.getDeletedObjectsForField(snapshot, 'triggers'),
...this.getDeletedObjectsForField(snapshot, 'schedulerEvents'),
];
}
@@ -355,6 +367,7 @@ export class DatabaseAnalyser {
functions: [],
procedures: [],
triggers: [],
schedulerEvents: [],
};
}

View File

@@ -708,6 +708,8 @@ export class SqlDumper implements AlterProcessor {
return 'TRIGGER';
case 'matviews':
return 'MATERIALIZED VIEW';
case 'schedulerEvents':
return 'EVENT';
}
}
@@ -785,10 +787,7 @@ export class SqlDumper implements AlterProcessor {
}
callableTemplate(func: CallableObjectInfo) {
this.put(
'^call %f(&>&n',
func,
);
this.put('^call %f(&>&n', func);
this.putCollection(',&n', func.parameters || [], param => {
this.putRaw(param.parameterMode == 'IN' ? ':' + param.parameterName : param.parameterName);

View File

@@ -155,6 +155,7 @@ export function generateDbPairingId(db: DatabaseInfo): DatabaseInfo {
procedures: db.procedures?.map(generateObjectPairingId),
functions: db.functions?.map(generateObjectPairingId),
triggers: db.triggers?.map(generateObjectPairingId),
schedulerEvents: db.schedulerEvents?.map(generateObjectPairingId),
matviews: db.matviews?.map(generateObjectPairingId),
};
}
@@ -715,7 +716,15 @@ export function createAlterDatabasePlan(
): AlterPlan {
const plan = new AlterPlan(wholeOldDb, wholeNewDb, driver.dialect, opts);
for (const objectTypeField of ['tables', 'views', 'procedures', 'matviews', 'functions', 'triggers']) {
for (const objectTypeField of [
'tables',
'views',
'procedures',
'matviews',
'functions',
'triggers',
'schedulerEvents',
]) {
for (const oldobj of oldDb[objectTypeField] || []) {
const newobj = (newDb[objectTypeField] || []).find(x => x.pairingId == oldobj.pairingId);
if (objectTypeField == 'tables') {