提交 637e5754 编写于 作者: S serge-rider

#4892 SQL Server :schema list reading fix (avoid sub-queries)

上级 bcf81833
......@@ -273,18 +273,21 @@ public class SQLServerDatabase implements DBSCatalog, DBPSaveableObject, DBPRefr
String sysSchema = SQLServerUtils.getSystemSchemaFQN(dataSource, owner.getName(), SQLServerConstants.SQL_SERVER_SYSTEM_SCHEMA);
StringBuilder sql = new StringBuilder();
sql.append("SELECT s.*,ep.value as description FROM ").append(sysSchema).append(".schemas s");
sql.append("\nLEFT OUTER JOIN ").append(SQLServerUtils.getExtendedPropsTableName(owner)).append(" ep ON ep.class=").append(SQLServerObjectClass.SCHEMA.getClassId()).append(" AND ep.major_id=s.schema_id AND ep.minor_id=0 AND ep.name='").append(SQLServerConstants.PROP_MS_DESCRIPTION).append("'");
sql.append("\nWHERE ");
sql.append("SELECT ");
if (!showAllSchemas) {
sql.append("EXISTS (SELECT 1 FROM ")
.append(sysSchema).append(".sysobjects o ").append("WHERE s.schema_id=o.uid)");
} else {
sql.append("1=1");
sql.append("DISTINCT ");
}
sql.append("s.*,ep.value as description FROM ").append(sysSchema).append(".schemas s");
sql.append("\nLEFT OUTER JOIN ").append(SQLServerUtils.getExtendedPropsTableName(owner)).append(" ep ON ep.class=").append(SQLServerObjectClass.SCHEMA.getClassId())
.append(" AND ep.major_id=s.schema_id AND ep.minor_id=0 AND ep.name='").append(SQLServerConstants.PROP_MS_DESCRIPTION).append("'");
if (!showAllSchemas) {
sql.append("\nINNER JOIN ")
.append(sysSchema).append(".sysobjects o ").append("ON s.schema_id=o.uid");
}
final DBSObjectFilter schemaFilters = dataSource.getContainer().getObjectFilter(SQLServerSchema.class, owner, false);
if (schemaFilters != null && schemaFilters.isEnabled()) {
JDBCUtils.appendFilterClause(sql, schemaFilters, "s.name", false);
sql.append("\nWHERE ");
JDBCUtils.appendFilterClause(sql, schemaFilters, "s.name", true);
}
JDBCPreparedStatement dbStat = session.prepareStatement(sql.toString());
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册