mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-30 06:53:58 +00:00
using firebird splitter options
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const { splitQuery } = require('dbgate-query-splitter');
|
const { splitQuery, firebirdSplitterOptions } = require('dbgate-query-splitter');
|
||||||
const stream = require('stream');
|
const stream = require('stream');
|
||||||
const driverBase = require('../frontend/driver');
|
const driverBase = require('../frontend/driver');
|
||||||
const Analyser = require('./Analyser');
|
const Analyser = require('./Analyser');
|
||||||
@@ -112,7 +112,7 @@ const driver = {
|
|||||||
async script(dbhan, sql, { useTransaction } = {}) {
|
async script(dbhan, sql, { useTransaction } = {}) {
|
||||||
if (useTransaction) return this.runSqlInTransaction(dbhan, sql);
|
if (useTransaction) return this.runSqlInTransaction(dbhan, sql);
|
||||||
|
|
||||||
const sqlItems = splitQuery(sql, driver.sqlSplitterOptions);
|
const sqlItems = splitQuery(sql, firebirdSplitterOptions);
|
||||||
for (const sqlItem of sqlItems) {
|
for (const sqlItem of sqlItems) {
|
||||||
await this.query(dbhan, sqlItem, { discardResult: true });
|
await this.query(dbhan, sqlItem, { discardResult: true });
|
||||||
}
|
}
|
||||||
@@ -183,7 +183,7 @@ const driver = {
|
|||||||
async runSqlInTransaction(dbhan, sql) {
|
async runSqlInTransaction(dbhan, sql) {
|
||||||
/** @type {Firebird.Transaction} */
|
/** @type {Firebird.Transaction} */
|
||||||
let transactionPromise;
|
let transactionPromise;
|
||||||
const sqlItems = splitQuery(sql, driver.sqlSplitterOptions);
|
const sqlItems = splitQuery(sql, firebirdSplitterOptions);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
transactionPromise = await new Promise((resolve, reject) => {
|
transactionPromise = await new Promise((resolve, reject) => {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
const { driverBase } = global.DBGATE_PACKAGES['dbgate-tools'];
|
const { driverBase } = global.DBGATE_PACKAGES['dbgate-tools'];
|
||||||
const Dumper = require('./Dumper');
|
const Dumper = require('./Dumper');
|
||||||
|
const { firebirdSplitterOptions } = require('dbgate-query-splitter/lib/options');
|
||||||
|
|
||||||
/** @type {import('dbgate-types').SqlDialect} */
|
/** @type {import('dbgate-types').SqlDialect} */
|
||||||
const dialect = {
|
const dialect = {
|
||||||
@@ -44,43 +45,17 @@ const dialect = {
|
|||||||
disableRenameTable: true,
|
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} */
|
/** @type {import('dbgate-types').EngineDriver} */
|
||||||
const firebirdDriverBase = {
|
const firebirdDriverBase = {
|
||||||
...driverBase,
|
...driverBase,
|
||||||
defaultPort: 3050,
|
defaultPort: 3050,
|
||||||
showConnectionField: field => ['port', 'user', 'password', 'server', 'databaseFile'].includes(field),
|
showConnectionField: field => ['port', 'user', 'password', 'server', 'databaseFile'].includes(field),
|
||||||
getQuerySplitterOptions: () => firebirdSplitterOptions,
|
|
||||||
|
getQuerySplitterOptions: (usage) =>
|
||||||
|
usage == 'editor'
|
||||||
|
? { ...firebirdSplitterOptions, ignoreComments: true, preventSingleLineSplit: true }
|
||||||
|
: firebirdSplitterOptions,
|
||||||
|
|
||||||
beforeConnectionSave: connection => {
|
beforeConnectionSave: connection => {
|
||||||
const { databaseFile } = connection;
|
const { databaseFile } = connection;
|
||||||
return {
|
return {
|
||||||
|
|||||||
Reference in New Issue
Block a user