提交 4b89e625 编写于 作者: S serge-rider

Multi-row INSERTs for SQL Server 2008+

上级 1394e00f
......@@ -30,4 +30,8 @@ public class SQLServerConstants {
public static final String PROP_CONNECTION_WINDOWS_AUTH = DBConstants.INTERNAL_PROP_PREFIX + "connection-windows-auth@";
public static final String PROP_SHOW_ALL_SCHEMAS = DBConstants.INTERNAL_PROP_PREFIX + "show-all-schemas@";
// https://support.microsoft.com/en-us/help/321185/how-to-determine-the-version--edition-and-update-level-of-sql-server-a
public static final int SQL_SERVER_2016_VERSION_MAJOR = 13;
public static final int SQL_SERVER_2008_VERSION_MAJOR = 10;
}
......@@ -19,8 +19,10 @@ package org.jkiss.dbeaver.ext.mssql.model;
import org.eclipse.jface.text.rules.IRule;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.ext.generic.model.GenericSQLDialect;
import org.jkiss.dbeaver.ext.mssql.SQLServerConstants;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCDatabaseMetaData;
import org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource;
import org.jkiss.dbeaver.model.sql.SQLDialect;
import org.jkiss.dbeaver.model.struct.rdb.DBSProcedure;
import org.jkiss.dbeaver.model.struct.rdb.DBSProcedureParameter;
import org.jkiss.dbeaver.runtime.sql.SQLRuleProvider;
......@@ -43,6 +45,8 @@ public class SQLServerDialect extends GenericSQLDialect implements SQLRuleProvid
{"\"", "\""},
};
private SQLServerDataSource dataSource;
public SQLServerDialect() {
super("SQLServer");
}
......@@ -50,6 +54,7 @@ public class SQLServerDialect extends GenericSQLDialect implements SQLRuleProvid
public void initDriverSettings(JDBCDataSource dataSource, JDBCDatabaseMetaData metaData) {
super.initDriverSettings(dataSource, metaData);
addSQLKeyword("TOP");
this.dataSource = (SQLServerDataSource) dataSource;
}
public String[][] getIdentifierQuoteStrings() {
......@@ -61,6 +66,18 @@ public class SQLServerDialect extends GenericSQLDialect implements SQLRuleProvid
return TSQL_BEGIN_END_BLOCK;
}
@Override
public MultiValueInsertMode getMultiValueInsertMode() {
if (((SQLServerMetaModel)dataSource.getMetaModel()).isSqlServer()) {
if (dataSource.isServerVersionAtLeast(SQLServerConstants.SQL_SERVER_2008_VERSION_MAJOR, 0)) {
return MultiValueInsertMode.GROUP_ROWS;
}
return super.getMultiValueInsertMode();
} else {
return super.getMultiValueInsertMode();
}
}
@Override
public void extendRules(@NotNull List<IRule> rules, @NotNull RulePosition position) {
}
......
......@@ -54,6 +54,10 @@ public class SQLServerMetaModel extends GenericMetaModel implements DBCQueryTran
this.sqlServer = sqlServer;
}
public boolean isSqlServer() {
return sqlServer;
}
@Override
public SQLServerDataSource createDataSourceImpl(DBRProgressMonitor monitor, DBPDataSourceContainer container) throws DBException {
return new SQLServerDataSource(monitor, container, this);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册