mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-29 14:33:59 +00:00
Merge pull request #985 from dbgate/feature/mysql-event-scheduler
Feature/mysql event scheduler
This commit is contained in:
@@ -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: [],
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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') {
|
||||
|
||||
Reference in New Issue
Block a user