From 8b184f6bd6c561f58525a3383baabdcc5be7b839 Mon Sep 17 00:00:00 2001 From: serge-rider Date: Mon, 26 Aug 2019 07:32:57 +0300 Subject: [PATCH] #6577 SQL Server DW support: disable database switch --- .../ext/mssql/model/SQLServerDataSource.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerDataSource.java b/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerDataSource.java index 0e2dc77175..80b6c3772a 100644 --- a/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerDataSource.java +++ b/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerDataSource.java @@ -72,12 +72,16 @@ public class SQLServerDataSource extends JDBCDataSource implements DBSObjectSele protected DBPDataSourceInfo createDataSourceInfo(DBRProgressMonitor monitor, @NotNull JDBCDatabaseMetaData metaData) { SQLServerDataSourceInfo info = new SQLServerDataSourceInfo(this, metaData); - if (getServerVersion(monitor).contains(SQLServerConstants.SQL_DW_SERVER_LABEL)) { + if (isDataWarehouseServer(monitor)) { info.setSupportsResultSetScroll(false); } return info; } + boolean isDataWarehouseServer(DBRProgressMonitor monitor) { + return getServerVersion(monitor).contains(SQLServerConstants.SQL_DW_SERVER_LABEL); + } + public String getServerVersion() { return serverVersion; } @@ -122,9 +126,9 @@ public class SQLServerDataSource extends JDBCDataSource implements DBSObjectSele @Override protected void initializeContextState(DBRProgressMonitor monitor, JDBCExecutionContext context, boolean setActiveObject) throws DBCException { super.initializeContextState(monitor, context, setActiveObject); - if (setActiveObject) { + if (setActiveObject ) { SQLServerDatabase defaultObject = getDefaultObject(); - if (defaultObject!= null) { + if (defaultObject!= null && !isDataWarehouseServer(monitor)) { setCurrentDatabase(monitor, context, defaultObject); } } @@ -266,7 +270,9 @@ public class SQLServerDataSource extends JDBCDataSource implements DBSObjectSele throw new IllegalArgumentException("Invalid object type: " + object); } for (JDBCExecutionContext context : getDefaultInstance().getAllContexts()) { - setCurrentDatabase(monitor, context, (SQLServerDatabase) object); + if (!setCurrentDatabase(monitor, context, (SQLServerDatabase) object)) { + return; + } } activeDatabaseName = object.getName(); @@ -296,15 +302,17 @@ public class SQLServerDataSource extends JDBCDataSource implements DBSObjectSele } } - private void setCurrentDatabase(DBRProgressMonitor monitor, JDBCExecutionContext executionContext, SQLServerDatabase object) throws DBCException { + private boolean setCurrentDatabase(DBRProgressMonitor monitor, JDBCExecutionContext executionContext, SQLServerDatabase object) throws DBCException { if (object == null) { log.debug("Null current schema"); - return; + return false; } try (JDBCSession session = executionContext.openSession(monitor, DBCExecutionPurpose.UTIL, "Set active database")) { SQLServerUtils.setCurrentDatabase(session, object.getName()); + return true; } catch (SQLException e) { - throw new DBCException(e, this); + log.error(e); + return false; } } -- GitLab