From 274e15653e8d5d852defe19d8e1953d0f3ceec29 Mon Sep 17 00:00:00 2001 From: Serge Rider Date: Fri, 27 Dec 2019 21:27:03 +0300 Subject: [PATCH] #1562 Auto-commit mode model --- .../ConnectionPageInitialization.java | 2 +- .../model/StreamDataSourceContainer.java | 3 +-- .../dbeaver/model/DBPAutoCommitMode.java | 26 +++++++++++++++++++ .../dbeaver/model/DBPDataSourceContainer.java | 4 +-- .../model/impl/jdbc/struct/JDBCTable.java | 3 ++- .../model/impl/sql/BasicSQLDialect.java | 20 ++++++++++++-- .../jkiss/dbeaver/model/sql/SQLConstants.java | 16 ++++++++---- .../registry/DataSourceDescriptor.java | 20 +------------- 8 files changed, 61 insertions(+), 33 deletions(-) create mode 100644 plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPAutoCommitMode.java diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageInitialization.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageInitialization.java index e04a039b85..9ef7012b06 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageInitialization.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageInitialization.java @@ -327,7 +327,7 @@ class ConnectionPageInitialization extends ConnectionWizardPage implements IData return; } try { - dataSource.setDefaultAutoCommit(autocommit.getSelection(), null, true, null); + dataSource.setDefaultAutoCommit(autocommit.getSelection()); if (txnOptionsLoaded) { int levelIndex = isolationLevel.getSelectionIndex(); if (levelIndex <= 0) { diff --git a/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/model/StreamDataSourceContainer.java b/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/model/StreamDataSourceContainer.java index 9a2b57dbdf..c777dd3579 100644 --- a/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/model/StreamDataSourceContainer.java +++ b/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/model/StreamDataSourceContainer.java @@ -30,7 +30,6 @@ import org.jkiss.dbeaver.model.connection.DBPDriver; import org.jkiss.dbeaver.model.connection.DBPNativeClientLocation; import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile; import org.jkiss.dbeaver.model.data.DBDValueHandler; -import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.impl.data.DefaultValueHandler; import org.jkiss.dbeaver.model.net.DBWNetworkHandler; import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore; @@ -158,7 +157,7 @@ class StreamDataSourceContainer implements DBPDataSourceContainer { } @Override - public void setDefaultAutoCommit(boolean autoCommit, @Nullable DBCExecutionContext updateContext, boolean updateConnection, @Nullable Runnable onFinish) throws DBException { + public void setDefaultAutoCommit(boolean autoCommit) { } diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPAutoCommitMode.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPAutoCommitMode.java new file mode 100644 index 0000000000..2774de835e --- /dev/null +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPAutoCommitMode.java @@ -0,0 +1,26 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2019 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.model; + +/** + * Auto-commit mode + */ +public enum DBPAutoCommitMode { + ON, + OFF, + SMART +} diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDataSourceContainer.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDataSourceContainer.java index 7e8a4287ec..2f050de867 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDataSourceContainer.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDataSourceContainer.java @@ -27,7 +27,6 @@ import org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration; import org.jkiss.dbeaver.model.connection.DBPDriver; import org.jkiss.dbeaver.model.connection.DBPNativeClientLocation; import org.jkiss.dbeaver.model.data.DBDPreferences; -import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.net.DBWNetworkHandler; import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; @@ -102,8 +101,7 @@ public interface DBPDataSourceContainer extends DBSObject, DBDPreferences, DBPNa boolean isDefaultAutoCommit(); - void setDefaultAutoCommit(boolean autoCommit, @Nullable DBCExecutionContext updateContext, boolean updateConnection, @Nullable Runnable onFinish) - throws DBException; + void setDefaultAutoCommit(boolean autoCommit); @Nullable DBPTransactionIsolation getActiveTransactionsIsolation(); diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/struct/JDBCTable.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/struct/JDBCTable.java index 5bc12b7153..60fde8f712 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/struct/JDBCTable.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/struct/JDBCTable.java @@ -33,6 +33,7 @@ import org.jkiss.dbeaver.model.impl.struct.AbstractTable; import org.jkiss.dbeaver.model.messages.ModelMessages; import org.jkiss.dbeaver.model.meta.Property; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; +import org.jkiss.dbeaver.model.sql.SQLConstants; import org.jkiss.dbeaver.model.sql.SQLDataSource; import org.jkiss.dbeaver.model.sql.SQLDialect; import org.jkiss.dbeaver.model.sql.SQLUtils; @@ -318,7 +319,7 @@ public abstract class JDBCTable { - try { - // Change auto-commit mode - txnManager.setAutoCommit(monitor, autoCommit); - } catch (DBCException e) { - throw new InvocationTargetException(e); - } finally { - monitor.done(); - if (onFinish != null) { - onFinish.run(); - } - } - }); - } - } + public void setDefaultAutoCommit(final boolean autoCommit) { // Save in preferences if (autoCommit == getConnectionConfiguration().getConnectionType().isAutocommit()) { connectionInfo.getBootstrap().setDefaultAutoCommit(null); -- GitLab