supportsTransactions driver parameter

This commit is contained in:
Jan Prochazka 2024-09-11 08:16:54 +02:00
parent 293ef047d0
commit 448c15c308
6 changed files with 8 additions and 3 deletions

View File

@ -66,20 +66,20 @@ export const driverBase = {
return new this.dumperClass(this, options);
},
async script(pool, sql, options: RunScriptOptions) {
if (options?.useTransaction) {
if (options?.useTransaction && this.supportsTransactions) {
runCommandOnDriver(pool, this, dmp => dmp.beginTransaction());
}
for (const sqlItem of splitQuery(sql, this.getQuerySplitterOptions('script'))) {
try {
await this.query(pool, sqlItem, { discardResult: true });
} catch (err) {
if (options?.useTransaction) {
if (options?.useTransaction && this.supportsTransactions) {
runCommandOnDriver(pool, this, dmp => dmp.rollbackTransaction());
}
throw err;
}
}
if (options?.useTransaction) {
if (options?.useTransaction && this.supportsTransactions) {
runCommandOnDriver(pool, this, dmp => dmp.commitTransaction());
}
},

View File

@ -148,6 +148,7 @@ export interface EngineDriver extends FilterBehaviourProvider {
profilerChartAggregateFunction?: string;
profilerChartMeasures?: { label: string; field: string }[];
isElectronOnly?: boolean;
supportsTransactions?: boolean;
collectionSingularLabel?: string;
collectionPluralLabel?: string;

View File

@ -142,6 +142,7 @@ const driver = {
title: 'Microsoft SQL Server',
defaultPort: 1433,
defaultAuthTypeName: 'tedious',
supportsTransactions: true,
// databaseUrlPlaceholder: 'e.g. server=localhost&authentication.type=default&authentication.type.user=myuser&authentication.type.password=pwd&options.database=mydb',
getNewObjectTemplates() {

View File

@ -120,6 +120,7 @@ const mysqlDriverBase = {
authTypeLabel: 'Connection mode',
defaultAuthTypeName: 'hostPort',
defaultSocketPath: '/var/run/mysqld/mysqld.sock',
supportsTransactions: true,
getNewObjectTemplates() {
return [

View File

@ -97,6 +97,7 @@ const oracleDriver = {
// ['server', 'port', 'user', 'password', 'defaultDatabase', 'singleDatabase'].includes(field),
getQuerySplitterOptions: () => oracleSplitterOptions,
readOnlySessions: true,
supportsTransactions: true,
databaseUrlPlaceholder: 'e.g. localhost:1521/orcl',

View File

@ -44,6 +44,7 @@ const driver = {
engine: 'sqlite@dbgate-plugin-sqlite',
title: 'SQLite',
readOnlySessions: true,
supportsTransactions: true,
showConnectionField: (field, values) => field == 'databaseFile' || field == 'isReadOnly',
showConnectionTab: (field) => false,
beforeConnectionSave: (connection) => ({