mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-18 06:46:00 +00:00
using firebird splitter options
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
const _ = require('lodash');
|
||||
const { splitQuery } = require('dbgate-query-splitter');
|
||||
const { splitQuery, firebirdSplitterOptions } = require('dbgate-query-splitter');
|
||||
const stream = require('stream');
|
||||
const driverBase = require('../frontend/driver');
|
||||
const Analyser = require('./Analyser');
|
||||
@@ -112,7 +112,7 @@ const driver = {
|
||||
async script(dbhan, sql, { useTransaction } = {}) {
|
||||
if (useTransaction) return this.runSqlInTransaction(dbhan, sql);
|
||||
|
||||
const sqlItems = splitQuery(sql, driver.sqlSplitterOptions);
|
||||
const sqlItems = splitQuery(sql, firebirdSplitterOptions);
|
||||
for (const sqlItem of sqlItems) {
|
||||
await this.query(dbhan, sqlItem, { discardResult: true });
|
||||
}
|
||||
@@ -183,7 +183,7 @@ const driver = {
|
||||
async runSqlInTransaction(dbhan, sql) {
|
||||
/** @type {Firebird.Transaction} */
|
||||
let transactionPromise;
|
||||
const sqlItems = splitQuery(sql, driver.sqlSplitterOptions);
|
||||
const sqlItems = splitQuery(sql, firebirdSplitterOptions);
|
||||
|
||||
try {
|
||||
transactionPromise = await new Promise((resolve, reject) => {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
const { driverBase } = global.DBGATE_PACKAGES['dbgate-tools'];
|
||||
const Dumper = require('./Dumper');
|
||||
const { firebirdSplitterOptions } = require('dbgate-query-splitter/lib/options');
|
||||
|
||||
/** @type {import('dbgate-types').SqlDialect} */
|
||||
const dialect = {
|
||||
@@ -44,43 +45,17 @@ const dialect = {
|
||||
disableRenameTable: true,
|
||||
};
|
||||
|
||||
const firebirdSplitterOptions = {
|
||||
stringsBegins: ["'", '"'],
|
||||
stringsEnds: {
|
||||
"'": "'",
|
||||
'"': '"',
|
||||
},
|
||||
stringEscapes: {
|
||||
"'": "'", // Single quote is escaped by another single quote
|
||||
'"': '"', // Double quote is escaped by another double quote
|
||||
},
|
||||
allowSemicolon: true,
|
||||
allowCustomDelimiter: false,
|
||||
allowCustomSqlTerminator: false,
|
||||
allowGoDelimiter: false,
|
||||
allowSlashDelimiter: false,
|
||||
allowDollarDollarString: false,
|
||||
noSplit: false,
|
||||
doubleDashComments: true,
|
||||
multilineComments: true,
|
||||
javaScriptComments: false,
|
||||
skipSeparatorBeginEnd: false,
|
||||
ignoreComments: false,
|
||||
preventSingleLineSplit: false,
|
||||
adaptiveGoSplit: false,
|
||||
returnRichInfo: false,
|
||||
splitByLines: false,
|
||||
splitByEmptyLine: false,
|
||||
copyFromStdin: false,
|
||||
queryParameterStyle: ':', // Firebird uses colon-prefixed parameters (:param_name)
|
||||
};
|
||||
|
||||
/** @type {import('dbgate-types').EngineDriver} */
|
||||
const firebirdDriverBase = {
|
||||
...driverBase,
|
||||
defaultPort: 3050,
|
||||
showConnectionField: field => ['port', 'user', 'password', 'server', 'databaseFile'].includes(field),
|
||||
getQuerySplitterOptions: () => firebirdSplitterOptions,
|
||||
|
||||
getQuerySplitterOptions: (usage) =>
|
||||
usage == 'editor'
|
||||
? { ...firebirdSplitterOptions, ignoreComments: true, preventSingleLineSplit: true }
|
||||
: firebirdSplitterOptions,
|
||||
|
||||
beforeConnectionSave: connection => {
|
||||
const { databaseFile } = connection;
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user