diff --git a/packages/api/src/controllers/runners.js b/packages/api/src/controllers/runners.js index df0fbda23..3cf3b4ec3 100644 --- a/packages/api/src/controllers/runners.js +++ b/packages/api/src/controllers/runners.js @@ -149,7 +149,7 @@ module.exports = { byline(subprocess.stdout).on('data', pipeDispatcher('info')); byline(subprocess.stderr).on('data', pipeDispatcher('error')); subprocess.on('exit', code => { - this.rejectRequest(runid, { message: 'No data retured, maybe input data source is too big' }); + this.rejectRequest(runid, { message: 'No data returned, maybe input data source is too big' }); logger.info({ code, pid: subprocess.pid }, 'Exited process'); socket.emit(`runner-done-${runid}`, code); }); diff --git a/plugins/dbgate-plugin-mssql/src/frontend/driver.js b/plugins/dbgate-plugin-mssql/src/frontend/driver.js index b0141e08f..56c315e14 100644 --- a/plugins/dbgate-plugin-mssql/src/frontend/driver.js +++ b/plugins/dbgate-plugin-mssql/src/frontend/driver.js @@ -166,6 +166,10 @@ const driver = { label: 'New table valued function', sql: 'CREATE FUNCTION myfunc (@arg1 INT) RETURNS TABLE \nAS\nRETURN SELECT * FROM table1', }, + { + label: 'New trigger', + sql: 'CREATE TRIGGER trigger_name\nON table_name AFTER INSERT AS\nBEGIN\nSELECT * FROM table_name\nEND', + }, ]; }, diff --git a/plugins/dbgate-plugin-mysql/src/frontend/drivers.js b/plugins/dbgate-plugin-mysql/src/frontend/drivers.js index 6ab5399c8..743739218 100644 --- a/plugins/dbgate-plugin-mysql/src/frontend/drivers.js +++ b/plugins/dbgate-plugin-mysql/src/frontend/drivers.js @@ -192,6 +192,11 @@ const mysqlDriverBase = { sql: 'DELIMITER //\n\nCREATE PROCEDURE myproc (IN arg1 INT)\nBEGIN\n SELECT * FROM table1;\nEND\n\nDELIMITER ;', }, { label: 'New function', sql: 'CREATE FUNCTION myfunc (arg1 INT)\nRETURNS INT DETERMINISTIC\nRETURN 1' }, + { label: 'New trigger', sql: 'CREATE FUNCTION myfunc (arg1 INT)\nRETURNS INT DETERMINISTIC\nRETURN 1' }, + { + label: 'New event', + sql: 'CREATE EVENT `event_name`\nON SCHEDULE EVERY 1 HOUR\nDO\nBEGIN\n\nEND', + }, ]; }, }; diff --git a/plugins/dbgate-plugin-oracle/src/frontend/driver.js b/plugins/dbgate-plugin-oracle/src/frontend/driver.js index 8e34381dd..c91cd17c2 100644 --- a/plugins/dbgate-plugin-oracle/src/frontend/driver.js +++ b/plugins/dbgate-plugin-oracle/src/frontend/driver.js @@ -139,6 +139,15 @@ BEGIN END $$ LANGUAGE plpgsql;`, }, + { + label: 'New trigger', + sql: ` +CREATE OR REPLACE TRIGGER trigger_name +AFTER INSERT ON "table_name" FOR EACH ROW +BEGIN +END trigger_name; +`, + }, ]; }, diff --git a/plugins/dbgate-plugin-postgres/src/frontend/drivers.js b/plugins/dbgate-plugin-postgres/src/frontend/drivers.js index 5b70fe74c..7e8dae3b9 100644 --- a/plugins/dbgate-plugin-postgres/src/frontend/drivers.js +++ b/plugins/dbgate-plugin-postgres/src/frontend/drivers.js @@ -2,7 +2,7 @@ const { driverBase } = global.DBGATE_PACKAGES['dbgate-tools']; const Dumper = require('./Dumper'); const { postgreSplitterOptions } = require('dbgate-query-splitter/lib/options'); -const spatialTypes = ['GEOGRAPHY','GEOMETRY']; +const spatialTypes = ['GEOGRAPHY', 'GEOMETRY']; /** @type {import('dbgate-types').SqlDialect} */ const dialect = { @@ -203,6 +203,13 @@ BEGIN END $$ LANGUAGE plpgsql;`, }, + { + label: 'New trigger', + sql: `CREATE TRIGGER trigger_name +BEFORE INSERT ON table_name +FOR EACH ROW +EXECUTE FUNCTION function_name();`, + }, ]; },