From 5e24f9679804ca18c82761b98ff5ac034d230dcb Mon Sep 17 00:00:00 2001 From: serge-rider Date: Sun, 30 Dec 2018 00:44:52 +0300 Subject: [PATCH] #4876 SQL Server: mark system tables --- .../OSGI-INF/l10n/bundle.properties | 1 + .../org.jkiss.dbeaver.ext.mssql/plugin.xml | 2 ++ .../dbeaver/ext/mssql/SQLServerConstants.java | 2 ++ .../ext/mssql/model/SQLServerSchema.java | 6 ++++-- .../ext/mssql/model/SQLServerTable.java | 2 +- .../ext/mssql/model/SQLServerTableBase.java | 21 +++++++++++++------ .../ext/mssql/model/SQLServerView.java | 2 +- .../src/org/jkiss/dbeaver/model/DBIcon.java | 1 + 8 files changed, 27 insertions(+), 10 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.ext.mssql/OSGI-INF/l10n/bundle.properties b/plugins/org.jkiss.dbeaver.ext.mssql/OSGI-INF/l10n/bundle.properties index 26479c69ac..337ccc5865 100644 --- a/plugins/org.jkiss.dbeaver.ext.mssql/OSGI-INF/l10n/bundle.properties +++ b/plugins/org.jkiss.dbeaver.ext.mssql/OSGI-INF/l10n/bundle.properties @@ -15,6 +15,7 @@ meta.org.jkiss.dbeaver.ext.mssql.model.SQLServerSchema.description.name = Schema meta.org.jkiss.dbeaver.ext.mssql.model.SQLServerSchema.objectId.name = ID meta.org.jkiss.dbeaver.ext.mssql.model.SQLServerSchema.database.name = Schema database meta.org.jkiss.dbeaver.ext.mssql.model.SQLServerTableBase.objectId.name = ID +meta.org.jkiss.dbeaver.ext.mssql.model.SQLServerTableBase.type.name = Type meta.org.jkiss.dbeaver.ext.mssql.model.SQLServerTableBase.rowCount.name = Total row count meta.org.jkiss.dbeaver.ext.mssql.model.SQLServerTableColumn.objectId.name = ID meta.org.jkiss.dbeaver.ext.mssql.model.SQLServerTableColumn.dataType.name = Type diff --git a/plugins/org.jkiss.dbeaver.ext.mssql/plugin.xml b/plugins/org.jkiss.dbeaver.ext.mssql/plugin.xml index d056e861fd..805bd6e8b7 100644 --- a/plugins/org.jkiss.dbeaver.ext.mssql/plugin.xml +++ b/plugins/org.jkiss.dbeaver.ext.mssql/plugin.xml @@ -39,8 +39,10 @@ + + diff --git a/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/SQLServerConstants.java b/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/SQLServerConstants.java index 12ea04fcec..a9c57f0cff 100644 --- a/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/SQLServerConstants.java +++ b/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/SQLServerConstants.java @@ -60,6 +60,7 @@ public class SQLServerConstants { public static final String SQL_SERVER_SYSTEM_SCHEMA = "sys"; public static final String SYBASE_SYSTEM_SCHEMA = "dbo"; + public static final String INFORMATION_SCHEMA_SCHEMA = "information_schema"; public static final DBSIndexType INDEX_TYPE_HEAP = new DBSIndexType("HEAP", SQLServerMessages.index_type_Heap); //$NON-NLS-1$ public static final DBSIndexType INDEX_TYPE_NON_CLUSTERED = new DBSIndexType("NON_CLUSTERED", SQLServerMessages.index_type_NonClustered); //$NON-NLS-1$ @@ -68,4 +69,5 @@ public class SQLServerConstants { public static final String SYS_TABLE_EXTENDED_PROPERTIES = "extended_properties"; public static final String PROP_MS_DESCRIPTION = "MS_Description"; + } diff --git a/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerSchema.java b/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerSchema.java index e56b107468..549680c7c5 100644 --- a/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerSchema.java +++ b/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerSchema.java @@ -155,7 +155,9 @@ public class SQLServerSchema implements DBSSchema, DBPSaveableObject, DBPQualifi @Override public boolean isSystem() { - return name.equals("msdb"); + return + name.equalsIgnoreCase(SQLServerConstants.SQL_SERVER_SYSTEM_SCHEMA) || + name.equalsIgnoreCase(SQLServerConstants.INFORMATION_SCHEMA_SCHEMA); } @Override @@ -292,7 +294,7 @@ public class SQLServerSchema implements DBSSchema, DBPSaveableObject, DBPQualifi throws SQLException, DBException { String type = JDBCUtils.safeGetStringTrimmed(dbResult, "type"); - if ("U".equals(type) || "S".equals(type)) { + if (SQLServerObjectType.U.name().equals(type) || SQLServerObjectType.S.name().equals(type)) { return new SQLServerTable(owner, dbResult); } else { return new SQLServerView(owner, dbResult); diff --git a/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerTable.java b/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerTable.java index b51be3eff7..265c10220d 100644 --- a/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerTable.java +++ b/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerTable.java @@ -59,7 +59,7 @@ public class SQLServerTable extends SQLServerTableBase implements DBPScriptObjec } // Copy constructor - public SQLServerTable(DBRProgressMonitor monitor, SQLServerSchema schema, DBSEntity source) throws DBException { + public SQLServerTable(DBRProgressMonitor monitor, SQLServerSchema schema, SQLServerTable source) throws DBException { super(monitor, schema, source); DBSObjectCache colCache = getContainer().getTableCache().getChildrenCache(this); diff --git a/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerTableBase.java b/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerTableBase.java index ec1abfaf40..fd68a721d8 100644 --- a/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerTableBase.java +++ b/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerTableBase.java @@ -19,10 +19,7 @@ package org.jkiss.dbeaver.ext.mssql.model; import org.jkiss.code.NotNull; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.model.DBPEvaluationContext; -import org.jkiss.dbeaver.model.DBPNamedObject2; -import org.jkiss.dbeaver.model.DBPRefreshableObject; -import org.jkiss.dbeaver.model.DBUtils; +import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.exec.DBCSession; import org.jkiss.dbeaver.model.impl.AbstractExecutionSource; import org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils; @@ -43,13 +40,14 @@ import java.util.*; * MySQLTable base */ public abstract class SQLServerTableBase extends JDBCTable - implements SQLServerObject, DBPNamedObject2,DBPRefreshableObject + implements SQLServerObject, DBPNamedObject2,DBPRefreshableObject, DBPSystemObject { private static final Log log = Log.getLog(SQLServerTableBase.class); private static final String CAT_STATISTICS = "Statistics"; private long objectId; + private String type; private String description; private Long rowCount; @@ -59,7 +57,7 @@ public abstract class SQLServerTableBase extends JDBCTable