Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
567915fe
D
dbeaver
项目概览
suliangchun
/
dbeaver
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dbeaver
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
567915fe
编写于
8月 17, 2019
作者:
S
serge-rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Table manager model fix (support non-relational tables)
上级
e60d5168
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
31 addition
and
28 deletion
+31
-28
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBUtils.java
...ss.dbeaver.model/src/org/jkiss/dbeaver/model/DBUtils.java
+3
-0
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/AbstractObjectCache.java
...src/org/jkiss/dbeaver/model/impl/AbstractObjectCache.java
+6
-0
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/sql/edit/struct/SQLTableColumnManager.java
...ver/model/impl/sql/edit/struct/SQLTableColumnManager.java
+10
-10
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/sql/edit/struct/SQLTableManager.java
...s/dbeaver/model/impl/sql/edit/struct/SQLTableManager.java
+12
-18
未找到文件。
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBUtils.java
浏览文件 @
567915fe
...
...
@@ -1881,4 +1881,7 @@ public final class DBUtils {
return
targetType
.
cast
(
result
);
}
public
static
boolean
isView
(
DBSEntity
table
)
{
return
table
instanceof
DBSView
||
table
instanceof
DBSTable
&&
((
DBSTable
)
table
).
isView
();
}
}
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/AbstractObjectCache.java
浏览文件 @
567915fe
...
...
@@ -94,6 +94,12 @@ public abstract class AbstractObjectCache<OWNER extends DBSObject, OBJECT extend
}
}
public
int
getCacheSize
()
{
synchronized
(
this
)
{
return
objectList
==
null
?
0
:
objectList
.
size
();
}
}
@Override
public
void
cacheObject
(
@NotNull
OBJECT
object
)
{
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/sql/edit/struct/SQLTableColumnManager.java
浏览文件 @
567915fe
...
...
@@ -24,13 +24,13 @@ import org.jkiss.dbeaver.model.edit.prop.DBECommandComposite;
import
org.jkiss.dbeaver.model.impl.DBObjectNameCaseTransformer
;
import
org.jkiss.dbeaver.model.impl.edit.DBECommandAbstract
;
import
org.jkiss.dbeaver.model.impl.edit.SQLDatabasePersistAction
;
import
org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTable
;
import
org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableColumn
;
import
org.jkiss.dbeaver.model.impl.sql.edit.SQLObjectEditor
;
import
org.jkiss.dbeaver.model.messages.ModelMessages
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.sql.SQLUtils
;
import
org.jkiss.dbeaver.model.struct.DBSDataType
;
import
org.jkiss.dbeaver.model.struct.DBSEntity
;
import
org.jkiss.dbeaver.model.struct.DBSEntityAttribute
;
import
org.jkiss.dbeaver.model.struct.rdb.DBSTable
;
import
org.jkiss.utils.CommonUtils
;
...
...
@@ -38,9 +38,9 @@ import java.util.List;
import
java.util.Map
;
/**
*
JDBC table column manager
*
Table column manager. Fits for all composite entities including NoSQL.
*/
public
abstract
class
SQLTableColumnManager
<
OBJECT_TYPE
extends
JDBCTableColumn
<
TABLE_TYPE
>,
TABLE_TYPE
extends
JDBCTable
>
public
abstract
class
SQLTableColumnManager
<
OBJECT_TYPE
extends
DBSEntityAttribute
,
TABLE_TYPE
extends
DBSEntity
>
extends
SQLObjectEditor
<
OBJECT_TYPE
,
TABLE_TYPE
>
{
public
static
final
long
DDL_FEATURE_OMIT_COLUMN_CLAUSE_IN_DROP
=
1
;
...
...
@@ -117,8 +117,8 @@ public abstract class SQLTableColumnManager<OBJECT_TYPE extends JDBCTableColumn<
@Override
public
boolean
canEditObject
(
OBJECT_TYPE
object
)
{
TABLE_TYPE
table
=
object
.
getParentObject
();
return
table
!=
null
&&
!
table
.
isView
(
);
DBSEntity
table
=
object
.
getParentObject
();
return
table
!=
null
&&
!
DBUtils
.
isView
(
table
);
}
@Override
...
...
@@ -152,11 +152,11 @@ public abstract class SQLTableColumnManager<OBJECT_TYPE extends JDBCTableColumn<
@Override
protected
void
addObjectCreateActions
(
DBRProgressMonitor
monitor
,
List
<
DBEPersistAction
>
actions
,
ObjectCreateCommand
command
,
Map
<
String
,
Object
>
options
)
{
final
TABLE_TYPE
table
=
command
.
getObject
().
getTable
();
final
TABLE_TYPE
table
=
(
TABLE_TYPE
)
command
.
getObject
().
getParentObject
();
actions
.
add
(
new
SQLDatabasePersistAction
(
ModelMessages
.
model_jdbc_create_new_table_column
,
"ALTER TABLE "
+
table
.
getFullyQualifiedName
(
DBPEvaluationContext
.
DDL
)
+
" ADD "
+
getNestedDeclaration
(
monitor
,
table
,
command
,
options
))
);
"ALTER TABLE "
+
DBUtils
.
getObjectFullName
(
table
,
DBPEvaluationContext
.
DDL
)
+
" ADD "
+
getNestedDeclaration
(
monitor
,
table
,
command
,
options
))
);
}
@Override
...
...
@@ -164,7 +164,7 @@ public abstract class SQLTableColumnManager<OBJECT_TYPE extends JDBCTableColumn<
{
actions
.
add
(
new
SQLDatabasePersistAction
(
ModelMessages
.
model_jdbc_drop_table_column
,
"ALTER TABLE "
+
command
.
getObject
().
getTable
().
getFullyQualifiedName
(
DBPEvaluationContext
.
DDL
)
+
//$NON-NLS-2$
ModelMessages
.
model_jdbc_drop_table_column
,
"ALTER TABLE "
+
DBUtils
.
getObjectFullName
(
command
.
getObject
(),
DBPEvaluationContext
.
DDL
)
+
//$NON-NLS-2$
" DROP "
+
(
hasDDLFeature
(
command
.
getObject
(),
DDL_FEATURE_OMIT_COLUMN_CLAUSE_IN_DROP
)
?
""
:
"COLUMN "
)
+
DBUtils
.
getQuotedIdentifier
(
command
.
getObject
()))
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
);
}
...
...
@@ -179,7 +179,7 @@ public abstract class SQLTableColumnManager<OBJECT_TYPE extends JDBCTableColumn<
if
(!
exists
)
{
// Check for new columns (they are present only within command context)
for
(
DBPObject
contextObject
:
context
.
getEditedObjects
())
{
if
(
contextObject
instanceof
JDBCTableColumn
&&
((
JDBCTableColumn
)
contextObject
).
getTable
()
==
table
&&
name
.
equalsIgnoreCase
(((
JDBCTableColumn
)
contextObject
).
getName
()))
{
if
(
contextObject
instanceof
DBSEntityAttribute
&&
((
DBSEntityAttribute
)
contextObject
).
getParentObject
()
==
table
&&
name
.
equalsIgnoreCase
(((
DBSEntityAttribute
)
contextObject
).
getName
()))
{
exists
=
true
;
break
;
}
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/sql/edit/struct/SQLTableManager.java
浏览文件 @
567915fe
...
...
@@ -29,14 +29,8 @@ import org.jkiss.dbeaver.model.messages.ModelMessages;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.sql.SQLDataSource
;
import
org.jkiss.dbeaver.model.sql.SQLUtils
;
import
org.jkiss.dbeaver.model.struct.DBSEntityAssociation
;
import
org.jkiss.dbeaver.model.struct.DBSEntityAttribute
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.model.struct.DBSObjectContainer
;
import
org.jkiss.dbeaver.model.struct.rdb.DBSTable
;
import
org.jkiss.dbeaver.model.struct.rdb.DBSTableConstraint
;
import
org.jkiss.dbeaver.model.struct.rdb.DBSTableForeignKey
;
import
org.jkiss.dbeaver.model.struct.rdb.DBSTableIndex
;
import
org.jkiss.dbeaver.model.struct.*
;
import
org.jkiss.dbeaver.model.struct.rdb.*
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
import
org.jkiss.utils.CommonUtils
;
...
...
@@ -45,7 +39,7 @@ import java.util.*;
/**
* JDBC table manager
*/
public
abstract
class
SQLTableManager
<
OBJECT_TYPE
extends
DBS
Table
,
CONTAINER_TYPE
extends
DBSObjectContainer
>
public
abstract
class
SQLTableManager
<
OBJECT_TYPE
extends
DBS
Entity
,
CONTAINER_TYPE
extends
DBSObjectContainer
>
extends
SQLStructEditor
<
OBJECT_TYPE
,
CONTAINER_TYPE
>
{
...
...
@@ -89,7 +83,7 @@ public abstract class SQLTableManager<OBJECT_TYPE extends DBSTable, CONTAINER_TY
return
;
}
final
String
tableName
=
CommonUtils
.
getOption
(
options
,
DBPScriptObject
.
OPTION_FULLY_QUALIFIED_NAMES
,
true
)
?
table
.
getFullyQualifiedName
(
DBPEvaluationContext
.
DDL
)
:
DBUtils
.
getQuotedIdentifier
(
table
);
DBUtils
.
getObjectFullName
(
table
,
DBPEvaluationContext
.
DDL
)
:
DBUtils
.
getQuotedIdentifier
(
table
);
final
String
slComment
=
SQLUtils
.
getDialectFromObject
(
table
).
getSingleLineComments
()[
0
];
final
String
lineSeparator
=
GeneralUtils
.
getDefaultLineSeparator
();
...
...
@@ -146,7 +140,7 @@ public abstract class SQLTableManager<OBJECT_TYPE extends DBSTable, CONTAINER_TY
}
protected
String
getCreateTableType
(
OBJECT_TYPE
table
)
{
return
table
.
isView
(
)
?
"VIEW"
:
"TABLE"
;
return
DBUtils
.
isView
(
table
)
?
"VIEW"
:
"TABLE"
;
}
protected
boolean
excludeFromDDL
(
NestedObjectCommand
command
,
Collection
<
NestedObjectCommand
>
orderedCommands
)
{
...
...
@@ -158,13 +152,13 @@ public abstract class SQLTableManager<OBJECT_TYPE extends DBSTable, CONTAINER_TY
{
OBJECT_TYPE
object
=
command
.
getObject
();
final
String
tableName
=
CommonUtils
.
getOption
(
options
,
DBPScriptObject
.
OPTION_FULLY_QUALIFIED_NAMES
,
true
)
?
object
.
getFullyQualifiedName
(
DBPEvaluationContext
.
DDL
)
:
DBUtils
.
getQuotedIdentifier
(
object
);
DBUtils
.
getObjectFullName
(
object
,
DBPEvaluationContext
.
DDL
)
:
DBUtils
.
getQuotedIdentifier
(
object
);
actions
.
add
(
new
SQLDatabasePersistAction
(
ModelMessages
.
model_jdbc_drop_table
,
"DROP "
+
getCreateTableType
(
object
)
+
//$NON-NLS-2$
" "
+
tableName
+
//$NON-NLS-2$
(!
object
.
isView
(
)
&&
CommonUtils
.
getOption
(
options
,
OPTION_DELETE_CASCADE
)
?
" CASCADE"
:
""
)
//$NON-NLS-2$
(!
DBUtils
.
isView
(
object
)
&&
CommonUtils
.
getOption
(
options
,
OPTION_DELETE_CASCADE
)
?
" CASCADE"
:
""
)
//$NON-NLS-2$
)
);
}
...
...
@@ -200,7 +194,7 @@ public abstract class SQLTableManager<OBJECT_TYPE extends DBSTable, CONTAINER_TY
final
DBERegistry
editorsRegistry
=
table
.
getDataSource
().
getContainer
().
getPlatform
().
getEditorsRegistry
();
SQLObjectEditor
<
DBSEntityAttribute
,
OBJECT_TYPE
>
tcm
=
getObjectEditor
(
editorsRegistry
,
DBSEntityAttribute
.
class
);
SQLObjectEditor
<
DBS
TableConstraint
,
OBJECT_TYPE
>
pkm
=
getObjectEditor
(
editorsRegistry
,
DBSTable
Constraint
.
class
);
SQLObjectEditor
<
DBS
EntityConstraint
,
OBJECT_TYPE
>
pkm
=
getObjectEditor
(
editorsRegistry
,
DBSEntity
Constraint
.
class
);
SQLObjectEditor
<
DBSTableForeignKey
,
OBJECT_TYPE
>
fkm
=
getObjectEditor
(
editorsRegistry
,
DBSTableForeignKey
.
class
);
SQLObjectEditor
<
DBSTableIndex
,
OBJECT_TYPE
>
im
=
getObjectEditor
(
editorsRegistry
,
DBSTableIndex
.
class
);
...
...
@@ -255,7 +249,7 @@ public abstract class SQLTableManager<OBJECT_TYPE extends DBSTable, CONTAINER_TY
}
if
(
pkm
!=
null
)
{
try
{
for
(
DBS
Table
Constraint
constraint
:
CommonUtils
.
safeCollection
(
table
.
getConstraints
(
monitor
)))
{
for
(
DBS
Entity
Constraint
constraint
:
CommonUtils
.
safeCollection
(
table
.
getConstraints
(
monitor
)))
{
if
(
DBUtils
.
isHiddenObject
(
constraint
)
||
DBUtils
.
isInheritedObject
(
constraint
))
{
continue
;
}
...
...
@@ -282,9 +276,9 @@ public abstract class SQLTableManager<OBJECT_TYPE extends DBSTable, CONTAINER_TY
log
.
debug
(
e
);
}
}
if
(
im
!=
null
)
{
if
(
im
!=
null
&&
table
instanceof
DBSTable
)
{
try
{
for
(
DBSTableIndex
index
:
CommonUtils
.
safeCollection
(
table
.
getIndexes
(
monitor
)))
{
for
(
DBSTableIndex
index
:
CommonUtils
.
safeCollection
(
((
DBSTable
)
table
)
.
getIndexes
(
monitor
)))
{
if
(!
isIncludeIndexInDDL
(
index
))
{
continue
;
}
...
...
@@ -298,7 +292,7 @@ public abstract class SQLTableManager<OBJECT_TYPE extends DBSTable, CONTAINER_TY
addExtraDDLCommands
(
monitor
,
table
,
options
,
command
);
Collections
.
addAll
(
actions
,
command
.
getPersistActions
(
monitor
,
options
));
return
actions
.
toArray
(
new
DBEPersistAction
[
actions
.
size
()
]);
return
actions
.
toArray
(
new
DBEPersistAction
[
0
]);
}
protected
void
addExtraDDLCommands
(
DBRProgressMonitor
monitor
,
OBJECT_TYPE
table
,
Map
<
String
,
Object
>
options
,
StructCreateCommand
createCommand
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录