Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
f63655e9
D
dbeaver
项目概览
suliangchun
/
dbeaver
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
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,发现更多精彩内容 >>
提交
f63655e9
编写于
7月 03, 2019
作者:
A
Andrew Khitrin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#6203 PG Partition Manager
上级
8a4ed76c
变更
7
显示空白变更内容
内联
并排
Showing
7 changed file
with
54 addition
and
88 deletion
+54
-88
plugins/org.jkiss.dbeaver.ext.postgresql/OSGI-INF/l10n/bundle.properties
...ss.dbeaver.ext.postgresql/OSGI-INF/l10n/bundle.properties
+2
-2
plugins/org.jkiss.dbeaver.ext.postgresql/OSGI-INF/l10n/bundle_ru.properties
...dbeaver.ext.postgresql/OSGI-INF/l10n/bundle_ru.properties
+2
-2
plugins/org.jkiss.dbeaver.ext.postgresql/plugin.xml
plugins/org.jkiss.dbeaver.ext.postgresql/plugin.xml
+4
-4
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgrePartitionManager.java
.../dbeaver/ext/postgresql/edit/PostgrePartitionManager.java
+23
-13
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreTableBase.java
.../jkiss/dbeaver/ext/postgresql/model/PostgreTableBase.java
+1
-1
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreTablePartition.java
...s/dbeaver/ext/postgresql/model/PostgreTablePartition.java
+21
-65
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/impls/PostgreServerExtensionBase.java
...xt/postgresql/model/impls/PostgreServerExtensionBase.java
+1
-1
未找到文件。
plugins/org.jkiss.dbeaver.ext.postgresql/OSGI-INF/l10n/bundle.properties
浏览文件 @
f63655e9
...
...
@@ -421,8 +421,8 @@ meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableReal.diskSpace.name=Disk
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableReal.diskSpace.description
=
Total disk space used by the specified table, including all indexes and TOAST data
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableReal.relationSize.name
=
Rel Size
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableReal.relationSize.description
=
Disk space used by the fork 'main'
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablePartition.
expr
.name
=
Partition Expression
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablePartition.
expr
.description
=
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablePartition.
partitionExpression
.name
=
Partition Expression
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablePartition.
partitionExpression
.description
=
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablespace.name.name
=
Name
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablespace.name.description
=
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablespace.options.name
=
Options
...
...
plugins/org.jkiss.dbeaver.ext.postgresql/OSGI-INF/l10n/bundle_ru.properties
浏览文件 @
f63655e9
...
...
@@ -372,8 +372,8 @@ meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableReal.diskSpace.name=\u04
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableReal.diskSpace.description=
\u
041E
\u0431\u0449\u0435\u0435
\u0434\u0438\u0441\u
043A
\u
043E
\u0432\u
043E
\u0435
\u
043F
\u0440\u
043E
\u0441\u0442\u0440\u0430\u
043D
\u0441\u0442\u0432\u
043E,
\u0438\u0441\u
043F
\u
043E
\u
043B
\u
044C
\u0437\u0443\u0435\u
043C
\u
043E
\u0435
\u0443\u
043A
\u0430\u0437\u0430\u
043D
\u
043D
\u
043E
\u0439
\u0442\u0430\u0431\u
043B
\u0438\u0446\u0435\u0439
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableReal.relationSize.name=
\u0420\u0435\u0430\u
043B
\u
044C
\u
043D
\u
044B
\u0439
\u0440\u0430\u0437\u
043C
\u0435\u0440
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableReal.relationSize.description=
\u0414\u0438\u0441\u
043A
\u
043E
\u0432\u
043E
\u0435
\u
043F
\u0440\u
043E
\u0441\u0442\u0440\u0430\u
043D
\u0441\u0442\u0432\u
043E,
\u0438\u0441\u
043F
\u
043E
\u
043B
\u
044C
\u0437\u0443\u0435\u
043C
\u
043E
\u0435
fork 'main'
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablePartition.
expr
.name=
\u0412\u
044B
\u0440\u0430\u0436\u0435\u
043D
\u0438\u0435
\u0434\u
043B
\u
044F
\u
043F
\u0430\u0440\u0442\u0438\u0446\u0438\u0438
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablePartition.
expr
.description=
\u0412\u
044B
\u0440\u0430\u0436\u0435\u
043D
\u0438\u0435
\u
043F
\u
043E
\u
043A
\u0442\u
043E
\u0440\u
043E
\u
043C
\u0443
\u0441\u
043E
\u0437\u0434\u0430\u0432\u0430\u
043B
\u0430\u0441\u
044C
\u
043F
\u0430\u0440\u0442\u0438\u0446\u0438\u
044F
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablePartition.
partitionExpression
.name=
\u0412\u
044B
\u0440\u0430\u0436\u0435\u
043D
\u0438\u0435
\u0434\u
043B
\u
044F
\u
043F
\u0430\u0440\u0442\u0438\u0446\u0438\u0438
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablePartition.
partitionExpression
.description=
\u0412\u
044B
\u0440\u0430\u0436\u0435\u
043D
\u0438\u0435
\u
043F
\u
043E
\u
043A
\u0442\u
043E
\u0440\u
043E
\u
043C
\u0443
\u0441\u
043E
\u0437\u0434\u0430\u0432\u0430\u
043B
\u0430\u0441\u
044C
\u
043F
\u0430\u0440\u0442\u0438\u0446\u0438\u
044F
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablespace.name.name=
\u
041D
\u0430\u0437\u0432\u0430\u
043D
\u0438\u0435
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablespace.name.description=
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTablespace.options.name=
\u
041D
\u0430\u0441\u0442\u0440\u
043E
\u0439\u
043A
\u0438
...
...
plugins/org.jkiss.dbeaver.ext.postgresql/plugin.xml
浏览文件 @
f63655e9
...
...
@@ -53,7 +53,7 @@
<icon
if=
"object.system"
icon=
"#schema_system"
/>
<folder
type=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreTable"
label=
"%tree.tables.node.name"
icon=
"#folder_table"
description=
"%tree.tables.node.tip"
>
<items
label=
"%tree.table.node.name"
path=
"table"
property=
"tables"
icon=
"#table"
>
<folder
type=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreTableColumn"
label=
"%tree.columns.node.name"
icon=
"#columns"
description=
"%tree.columns.node.tip"
>
<folder
type=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreTableColumn"
label=
"%tree.columns.node.name"
icon=
"#columns"
description=
"%tree.columns.node.tip"
visibleIf=
"!object.isPartition()"
>
<items
label=
"%tree.column.node.name"
path=
"attribute"
property=
"attributes"
icon=
"#column"
>
</items>
</folder>
...
...
@@ -84,11 +84,11 @@
</items>
</items>
</folder>
<folder
type=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreTablePartition"
label=
"%tree.partitions.node.name"
icon=
"#folder_table"
description=
"%tree.partitions.node.tip"
virtual=
"true"
visibleIf=
"object.dataSource.serverType.supportsPartitions()"
>
<folder
type=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreTablePartition"
label=
"%tree.partitions.node.name"
icon=
"#folder_table"
description=
"%tree.partitions.node.tip"
virtual=
"true"
visibleIf=
"object.dataSource.serverType.supportsPartitions()
&& !object.isPartition()
"
>
<items
label=
"%tree.partitions.node.name"
path=
"partition"
property=
"partitions"
icon=
"#partition"
virtual=
"true"
recursive=
"../.."
>
</items>
</folder>
<folder
type=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreTableReal"
label=
"%tree.tablechildren.node.name"
icon=
"#folder_table"
description=
"Table children"
virtual=
"true"
visibleIf=
"object.hasSubClasses()"
>
<folder
type=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreTableReal"
label=
"%tree.tablechildren.node.name"
icon=
"#folder_table"
description=
"Table children"
virtual=
"true"
visibleIf=
"object.hasSubClasses()
&& !object.isPartition()
"
>
<items
label=
"%tree.tablechildren.node.name"
path=
"subTables"
property=
"subTables"
icon=
"#table"
virtual=
"true"
recursive=
"../.."
>
</items>
</folder>
...
...
@@ -432,9 +432,9 @@
<extension
point=
"org.jkiss.dbeaver.objectManager"
>
<manager
class=
"org.jkiss.dbeaver.ext.postgresql.edit.PostgreDatabaseManager"
objectType=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase"
/>
<manager
class=
"org.jkiss.dbeaver.ext.postgresql.edit.PostgreSchemaManager"
objectType=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema"
/>
<manager
class=
"org.jkiss.dbeaver.ext.postgresql.edit.PostgrePartitionManager"
objectType=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreTablePartition"
/>
<manager
class=
"org.jkiss.dbeaver.ext.postgresql.edit.PostgreTableManager"
objectType=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreTable"
/>
<manager
class=
"org.jkiss.dbeaver.ext.postgresql.edit.PostgreTableColumnManager"
objectType=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreTableColumn"
/>
<manager
class=
"org.jkiss.dbeaver.ext.postgresql.edit.PostgrePartitionManager"
objectType=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreTablePartition"
/>
<manager
class=
"org.jkiss.dbeaver.ext.postgresql.edit.PostgreSequenceManager"
objectType=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreSequence"
/>
<manager
class=
"org.jkiss.dbeaver.ext.postgresql.edit.PostgreConstraintManager"
objectType=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreTableConstraint"
/>
<manager
class=
"org.jkiss.dbeaver.ext.postgresql.edit.PostgreForeignKeyManager"
objectType=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreTableForeignKey"
/>
...
...
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgrePartitionManager.java
浏览文件 @
f63655e9
...
...
@@ -20,6 +20,7 @@ import java.util.Collection;
import
java.util.List
;
import
java.util.Map
;
import
org.jkiss.code.NotNull
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.ext.postgresql.model.*
;
...
...
@@ -34,16 +35,15 @@ public class PostgrePartitionManager extends PostgreTableManager {
private
static
final
Log
log
=
Log
.
getLog
(
PostgrePartitionManager
.
class
);
private
static
final
Class
<?>[]
CHILD_TYPES_PART
=
{
PostgreTableConstraint
.
class
,
PostgreTableForeignKey
.
class
,
PostgreIndex
.
class
};
protected
PostgreTablePartition
createDatabaseObject
(
DBRProgressMonitor
monitor
,
DBECommandContext
context
,
Object
container
,
Object
copyFrom
,
Map
<
String
,
Object
>
options
)
{
PostgreTable
owner
=
(
PostgreTable
)
container
;
final
PostgreTablePartition
table
=
new
PostgreTablePartition
(
owner
.
getSchema
());
try
{
setTableName
(
monitor
,
owner
.
getSchema
(),
table
);
}
catch
(
DBException
e
)
{
// Never be here
log
.
error
(
e
);
}
final
PostgreTablePartition
table
=
new
PostgreTablePartition
(
owner
.
getSchema
(),
owner
);
return
table
;
}
...
...
@@ -57,7 +57,9 @@ public class PostgrePartitionManager extends PostgreTableManager {
return
""
;
}
if
(
superTables
==
null
||
superTables
.
size
()
!=
1
)
{
if
(
superTables
==
null
&&
partition
.
getPartitionOf
()
!=
null
)
{
return
partition
.
getPartitionOf
().
getSchema
().
getName
()
+
"."
+
partition
.
getPartitionOf
().
getName
();
}
else
if
(
superTables
==
null
||
superTables
.
size
()
>
1
)
{
log
.
error
(
"Unable to get parent"
);
return
""
;
}
...
...
@@ -87,7 +89,7 @@ public class PostgrePartitionManager extends PostgreTableManager {
@Override
public
boolean
canEditObject
(
PostgreTableBase
object
)
{
return
false
;
return
object
instanceof
PostgreTablePartition
;
}
@Override
...
...
@@ -97,7 +99,15 @@ public class PostgrePartitionManager extends PostgreTableManager {
@Override
public
boolean
canDeleteObject
(
PostgreTableBase
object
)
{
return
fals
e
;
return
tru
e
;
}
@NotNull
@Override
public
Class
<?>[]
getChildTypes
()
{
return
CHILD_TYPES_PART
;
}
}
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreTableBase.java
浏览文件 @
f63655e9
...
...
@@ -50,7 +50,7 @@ public abstract class PostgreTableBase extends JDBCTable<PostgreDataSource, Post
private
long
oid
;
private
long
ownerId
;
private
String
description
;
pr
ivate
boolean
isPartition
;
pr
otected
boolean
isPartition
;
private
boolean
hasPartitions
;
private
String
part_key
;
private
Object
acl
;
...
...
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreTablePartition.java
浏览文件 @
f63655e9
...
...
@@ -20,11 +20,11 @@ package org.jkiss.dbeaver.ext.postgresql.model;
import
java.sql.ResultSet
;
import
java.util.Map
;
import
org.jkiss.code.Nullable
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils
;
import
org.jkiss.dbeaver.model.meta.Property
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.struct.DBSEntity
;
import
org.jkiss.dbeaver.model.struct.DBStructUtils
;
public
class
PostgreTablePartition
extends
PostgreTable
...
...
@@ -32,84 +32,40 @@ public class PostgreTablePartition extends PostgreTable
public
static
final
String
CAT_PARTITIONING
=
"Partitioning"
;
private
String
expr
;
private
String
partitionExpression
;
private
PostgreTable
partitionOf
;
public
PostgreTablePartition
(
PostgreSchema
catalog
)
{
public
PostgreTablePartition
(
PostgreSchema
catalog
,
PostgreTable
partitionOf
)
{
super
(
catalog
);
this
.
partitionExpression
=
"FOR VALUES "
;
this
.
isPartition
=
true
;
this
.
setName
(
"newpartition"
);
this
.
partitionOf
=
partitionOf
;
}
public
PostgreTablePartition
(
PostgreSchema
catalog
,
ResultSet
dbResult
)
{
super
(
catalog
,
dbResult
);
this
.
expr
=
JDBCUtils
.
safeGetString
(
dbResult
,
"partition_expr"
);
}
@Property
(
category
=
CAT_PARTITIONING
,
editable
=
false
,
viewable
=
true
,
order
=
90
)
public
String
getExpr
()
{
return
expr
;
}
@Override
public
String
getObjectDefinitionText
(
DBRProgressMonitor
monitor
,
Map
<
String
,
Object
>
options
)
throws
DBException
{
return
DBStructUtils
.
generateTableDDL
(
monitor
,
this
,
options
,
false
);
}
/*
public PostgreTablePartition(PostgreSchema container, DBSEntity source, boolean persisted) {
super(container, source, persisted);
}
@Property(category = CAT_PARTITIONING, editable = false, viewable = true, order = 50)
public String getPartKeys() {
return "this.oid";
}
private final PostgreTableBase partitionTable;
private int sequenceNum;
//select * from pg_partitioned_table where partrelid = ?
public PostgreTablePartition(
@NotNull PostgreTableBase table,
@NotNull PostgreTableBase partitionTable,
int sequenceNum,
boolean persisted)
{
super(table,
table.getFullyQualifiedName(DBPEvaluationContext.DDL) + "->" + partitionTable.getFullyQualifiedName(DBPEvaluationContext.DDL),
DBSEntityConstraintType.INHERITANCE);
this.setPersisted(persisted);
this.partitionTable = partitionTable;
this.sequenceNum = sequenceNum;
this
.
partitionExpression
=
JDBCUtils
.
safeGetString
(
dbResult
,
"partition_expr"
);
}
@Property
(
viewable
=
true
,
editable
=
true
,
updatable
=
true
,
order
=
60
)
@Nullable
@Override
public DBSEntityConstraint getReferencedConstraint() {
return this;
public
String
getPartitionExpression
()
{
return
partitionExpression
;
}
@Override
@Property(viewable = true)
public PostgreTableBase getAssociatedEntity() {
return this.partitionTable;
public
void
setPartitionExpression
(
String
expr
)
{
this
.
partitionExpression
=
expr
;
}
@Property(viewable = true)
public int getSequenceNum() {
return sequenceNum;
}
@Nullable
@Override
public
List<PostgreTableForeignKeyColumn> getAttributeReferences(DBRProgressMonitor monitor
) throws DBException {
return
null
;
public
String
getObjectDefinitionText
(
DBRProgressMonitor
monitor
,
Map
<
String
,
Object
>
options
)
throws
DBException
{
return
DBStructUtils
.
generateTableDDL
(
monitor
,
this
,
options
,
false
)
;
}
@Override
void cacheAttributes(DBRProgressMonitor monitor, List<? extends PostgreTableConstraintColumn> children, boolean secondPass) {
public
PostgreTable
getPartitionOf
()
{
return
partitionOf
;
}
*/
}
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/impls/PostgreServerExtensionBase.java
浏览文件 @
f63655e9
...
...
@@ -241,7 +241,7 @@ public abstract class PostgreServerExtensionBase implements PostgreServerExtensi
}
}
if
(
tableBase
instanceof
PostgreTablePartition
&&
!
alter
)
{
ddl
.
append
(((
PostgreTablePartition
)
tableBase
).
get
Expr
());
ddl
.
append
(((
PostgreTablePartition
)
tableBase
).
get
PartitionExpression
());
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录