using firebird splitter options

This commit is contained in:
SPRINX0\prochazka
2025-09-24 17:23:09 +02:00
parent 25a9d52d86
commit d24db7c053
2 changed files with 10 additions and 35 deletions

View File

@@ -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) => {

View File

@@ -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 {