提交 e12af422 编写于 作者: S Serge Rider

#6178 SQL Server table types support fixes


Former-commit-id: c1906063
上级 67cc6f64
......@@ -93,6 +93,20 @@ public class SQLServerTableColumnManager extends SQLTableColumnManager<SQLServer
return new ColumnModifier[] {DataTypeModifier, IdentityModifier, CollateModifier, SQLServerDefaultModifier, NullNotNullModifier};
}
@Override
public boolean canEditObject(SQLServerTableColumn object) {
return !isTableType(object) && super.canEditObject(object);
}
@Override
public boolean canDeleteObject(SQLServerTableColumn object) {
return !isTableType(object) && super.canDeleteObject(object);
}
private boolean isTableType(SQLServerTableColumn column) {
return column.getTable() instanceof SQLServerTableType;
}
@Override
protected SQLServerTableColumn createDatabaseObject(DBRProgressMonitor monitor, DBECommandContext context, Object container, Object copyFrom, Map<String, Object> options)
{
......
......@@ -39,7 +39,7 @@ import java.util.Map;
/**
* SQLServer table manager
*/
public class SQLServerTableManager extends SQLServerBaseTableManager<SQLServerTable> {
public class SQLServerTableManager extends SQLServerBaseTableManager<SQLServerTableBase> {
private static final Class<?>[] CHILD_TYPES = {
SQLServerTableColumn.class,
......@@ -49,6 +49,20 @@ public class SQLServerTableManager extends SQLServerBaseTableManager<SQLServerTa
SQLServerTableCheckConstraint.class,
};
@Override
public boolean canEditObject(SQLServerTableBase object) {
return !isTableType(object) && super.canEditObject(object);
}
@Override
public boolean canDeleteObject(SQLServerTableBase object) {
return !isTableType(object) && super.canDeleteObject(object);
}
private boolean isTableType(SQLServerTableBase table) {
return table instanceof SQLServerTableType;
}
@Override
protected SQLServerTable createDatabaseObject(DBRProgressMonitor monitor, DBECommandContext context, Object container, Object copyFrom, Map<String, Object> options)
{
......@@ -70,7 +84,7 @@ public class SQLServerTableManager extends SQLServerBaseTableManager<SQLServerTa
}
@Override
protected void appendTableModifiers(DBRProgressMonitor monitor, SQLServerTable table, NestedObjectCommand tableProps, StringBuilder ddl, boolean alter)
protected void appendTableModifiers(DBRProgressMonitor monitor, SQLServerTableBase table, NestedObjectCommand tableProps, StringBuilder ddl, boolean alter)
{
// ALTER
/*
......@@ -90,7 +104,7 @@ public class SQLServerTableManager extends SQLServerBaseTableManager<SQLServerTa
@Override
protected void addObjectDeleteActions(DBRProgressMonitor monitor, DBCExecutionContext executionContext, List<DBEPersistAction> actions, ObjectDeleteCommand command, Map<String, Object> options)
{
SQLServerTable object = command.getObject();
SQLServerTableBase object = command.getObject();
actions.add(
new SQLDatabasePersistAction(
ModelMessages.model_jdbc_drop_table,
......@@ -109,7 +123,7 @@ public class SQLServerTableManager extends SQLServerBaseTableManager<SQLServerTa
}
@Override
public void renameObject(DBECommandContext commandContext, SQLServerTable object, String newName) throws DBException
public void renameObject(DBECommandContext commandContext, SQLServerTableBase object, String newName) throws DBException
{
processObjectRename(commandContext, object, newName);
}
......@@ -119,18 +133,20 @@ public class SQLServerTableManager extends SQLServerBaseTableManager<SQLServerTa
return !index.isPrimary() && super.isIncludeIndexInDDL(monitor, index);
}
protected void addExtraDDLCommands(DBRProgressMonitor monitor, SQLServerTable table, Map<String, Object> options, SQLStructEditor.StructCreateCommand createCommand) {
SQLObjectEditor<SQLServerTableCheckConstraint, SQLServerTable> ccm = getObjectEditor(
protected void addExtraDDLCommands(DBRProgressMonitor monitor, SQLServerTableBase table, Map<String, Object> options, SQLStructEditor.StructCreateCommand createCommand) {
SQLObjectEditor<SQLServerTableCheckConstraint, SQLServerTableBase> ccm = getObjectEditor(
table.getDataSource().getContainer().getPlatform().getEditorsRegistry(),
SQLServerTableCheckConstraint.class);
if (ccm != null) {
try {
Collection<SQLServerTableCheckConstraint> checkConstraints = CommonUtils.safeCollection(table.getCheckConstraints(monitor));
if (table instanceof SQLServerTable) {
Collection<SQLServerTableCheckConstraint> checkConstraints = CommonUtils.safeCollection(((SQLServerTable) table).getCheckConstraints(monitor));
if (!CommonUtils.isEmpty(checkConstraints)) {
for (SQLServerTableCheckConstraint checkConstraint : checkConstraints) {
createCommand.aggregateCommand(ccm.makeCreateCommand(checkConstraint, options));
}
}
}
} catch (DBException e) {
// Ignore indexes
log.debug(e);
......
......@@ -138,6 +138,11 @@ public class SQLServerDatabase implements DBSCatalog, DBPSaveableObject, DBPRefr
return this;
}
void refreshDataTypes() {
typesCache.clearCache();
}
//////////////////////////////////////////////////
// Data types
......
......@@ -179,6 +179,7 @@ public class SQLServerSchema implements DBSSchema, DBPSaveableObject, DBPQualifi
sequenceCache.clearCache();
synonymCache.clearCache();
procedureCache.clearCache();
database.refreshDataTypes();
hasTableStatistics = false;
return this;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册