Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
7be88388
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,发现更多精彩内容 >>
提交
7be88388
编写于
9月 20, 2016
作者:
S
Serge Rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Cache model improvement (use single object lookup)
上级
c06ebaa0
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
58 addition
and
13 deletion
+58
-13
plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleSchema.java
.../src/org/jkiss/dbeaver/ext/oracle/model/OracleSchema.java
+1
-0
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/DBSObjectCache.java
...odel/src/org/jkiss/dbeaver/model/impl/DBSObjectCache.java
+1
-1
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/cache/JDBCObjectCache.java
.../jkiss/dbeaver/model/impl/jdbc/cache/JDBCObjectCache.java
+1
-1
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/cache/JDBCObjectLookupCache.java
.../dbeaver/model/impl/jdbc/cache/JDBCObjectLookupCache.java
+27
-5
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/cache/JDBCStructCache.java
.../jkiss/dbeaver/model/impl/jdbc/cache/JDBCStructCache.java
+1
-1
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/cache/JDBCStructLookupCache.java
.../dbeaver/model/impl/jdbc/cache/JDBCStructLookupCache.java
+27
-5
未找到文件。
plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleSchema.java
浏览文件 @
7be88388
...
...
@@ -701,6 +701,7 @@ public class OracleSchema extends OracleGlobalObject implements DBSSchema, DBPRe
*/
static
class
ProceduresCache
extends
JDBCObjectLookupCache
<
OracleSchema
,
OracleProcedureStandalone
>
{
@NotNull
@Override
public
JDBCStatement
prepareLookupStatement
(
@NotNull
JDBCSession
session
,
@NotNull
OracleSchema
owner
,
@Nullable
OracleProcedureStandalone
object
,
@Nullable
String
objectName
)
throws
SQLException
{
JDBCPreparedStatement
dbStat
=
session
.
prepareStatement
(
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/DBSObjectCache.java
浏览文件 @
7be88388
...
...
@@ -40,7 +40,7 @@ public interface DBSObjectCache<OWNER extends DBSObject, OBJECT extends DBSObjec
Collection
<
OBJECT
>
getCachedObjects
();
@Nullable
OBJECT
getObject
(
@NotNull
DBRProgressMonitor
monitor
,
@N
ullable
OWNER
owner
,
@NotNull
String
name
)
OBJECT
getObject
(
@NotNull
DBRProgressMonitor
monitor
,
@N
otNull
OWNER
owner
,
@NotNull
String
name
)
throws
DBException
;
@Nullable
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/cache/JDBCObjectCache.java
浏览文件 @
7be88388
...
...
@@ -73,7 +73,7 @@ public abstract class JDBCObjectCache<OWNER extends DBSObject, OBJECT extends DB
}
@Override
public
OBJECT
getObject
(
@NotNull
DBRProgressMonitor
monitor
,
@N
ullable
OWNER
owner
,
@NotNull
String
name
)
public
OBJECT
getObject
(
@NotNull
DBRProgressMonitor
monitor
,
@N
otNull
OWNER
owner
,
@NotNull
String
name
)
throws
DBException
{
if
(!
isFullyCached
())
{
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/cache/JDBCObjectLookupCache.java
浏览文件 @
7be88388
...
...
@@ -39,14 +39,36 @@ public abstract class JDBCObjectLookupCache<OWNER extends DBSObject, OBJECT exte
protected
JDBCObjectLookupCache
()
{
}
public
OBJECT
refreshObject
(
@NotNull
DBRProgressMonitor
monitor
,
@Nullable
OWNER
owner
,
@NotNull
OBJECT
oldObject
)
@Override
public
OBJECT
getObject
(
@NotNull
DBRProgressMonitor
monitor
,
@NotNull
OWNER
owner
,
@NotNull
String
name
)
throws
DBException
{
OBJECT
cachedObject
=
getCachedObject
(
name
);
if
(
cachedObject
!=
null
)
{
return
cachedObject
;
}
if
(
isFullyCached
())
{
return
null
;
}
// Now cache just one object
OBJECT
object
=
reloadObject
(
monitor
,
owner
,
null
,
name
);
if
(
object
!=
null
)
{
cacheObject
(
object
);
}
else
{
// Not found!
// Maybe we need to mark this somehow in cache
}
return
object
;
}
public
OBJECT
refreshObject
(
@NotNull
DBRProgressMonitor
monitor
,
@NotNull
OWNER
owner
,
@NotNull
OBJECT
oldObject
)
throws
DBException
{
String
objectName
=
oldObject
.
getName
();
if
(!
isFullyCached
())
{
this
.
loadObjects
(
monitor
,
owner
);
}
else
{
OBJECT
newObject
=
this
.
reloadObject
(
monitor
,
owner
,
oldObject
);
OBJECT
newObject
=
this
.
reloadObject
(
monitor
,
owner
,
oldObject
,
null
);
removeObject
(
oldObject
);
if
(
newObject
!=
null
)
{
cacheObject
(
newObject
);
...
...
@@ -56,15 +78,15 @@ public abstract class JDBCObjectLookupCache<OWNER extends DBSObject, OBJECT exte
return
getCachedObject
(
objectName
);
}
protected
OBJECT
reloadObject
(
DBRProgressMonitor
monitor
,
OWNER
owner
,
OBJECT
object
)
protected
OBJECT
reloadObject
(
@NotNull
DBRProgressMonitor
monitor
,
@NotNull
OWNER
owner
,
@Nullable
OBJECT
object
,
@Nullable
String
objectName
)
throws
DBException
{
DBPDataSource
dataSource
=
owner
.
getDataSource
();
if
(
dataSource
==
null
)
{
throw
new
DBException
(
"Not connected to database"
);
}
try
(
JDBCSession
session
=
DBUtils
.
openMetaSession
(
monitor
,
dataSource
,
"Reload object '"
+
object
.
getName
()
+
"' from "
+
owner
.
getName
()))
{
try
(
JDBCStatement
dbStat
=
prepareLookupStatement
(
session
,
owner
,
object
,
null
))
{
try
(
JDBCSession
session
=
DBUtils
.
openMetaSession
(
monitor
,
dataSource
,
"Reload object '"
+
object
+
"' from "
+
owner
.
getName
()))
{
try
(
JDBCStatement
dbStat
=
prepareLookupStatement
(
session
,
owner
,
object
,
objectName
))
{
dbStat
.
setFetchSize
(
1
);
dbStat
.
executeStatement
();
JDBCResultSet
dbResult
=
dbStat
.
getResultSet
();
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/cache/JDBCStructCache.java
浏览文件 @
7be88388
...
...
@@ -223,7 +223,7 @@ public abstract class JDBCStructCache<OWNER extends DBSObject, OBJECT extends DB
loadChildren
(
monitor
,
owner
,
forObject
);
synchronized
(
childrenCache
)
{
SimpleObjectCache
<
OBJECT
,
CHILD
>
nestedCache
=
childrenCache
.
get
(
forObject
);
return
nestedCache
==
null
?
null
:
nestedCache
.
getObject
(
monitor
,
null
,
objectName
);
return
nestedCache
==
null
?
null
:
nestedCache
.
getObject
(
monitor
,
forObject
,
objectName
);
}
}
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/cache/JDBCStructLookupCache.java
浏览文件 @
7be88388
...
...
@@ -42,14 +42,36 @@ public abstract class JDBCStructLookupCache<OWNER extends DBSObject, OBJECT exte
super
(
objectNameColumn
);
}
public
OBJECT
refreshObject
(
@NotNull
DBRProgressMonitor
monitor
,
@Nullable
OWNER
owner
,
@NotNull
OBJECT
oldObject
)
@Override
public
OBJECT
getObject
(
@NotNull
DBRProgressMonitor
monitor
,
@NotNull
OWNER
owner
,
@NotNull
String
name
)
throws
DBException
{
OBJECT
cachedObject
=
getCachedObject
(
name
);
if
(
cachedObject
!=
null
)
{
return
cachedObject
;
}
if
(
isFullyCached
())
{
return
null
;
}
// Now cache just one object
OBJECT
object
=
reloadObject
(
monitor
,
owner
,
null
,
name
);
if
(
object
!=
null
)
{
cacheObject
(
object
);
}
else
{
// Not found!
// Maybe we need to mark this somehow in cache
}
return
object
;
}
public
OBJECT
refreshObject
(
@NotNull
DBRProgressMonitor
monitor
,
@NotNull
OWNER
owner
,
@NotNull
OBJECT
oldObject
)
throws
DBException
{
String
objectName
=
oldObject
.
getName
();
if
(!
isFullyCached
())
{
this
.
loadObjects
(
monitor
,
owner
);
}
else
{
OBJECT
newObject
=
this
.
reloadObject
(
monitor
,
owner
,
oldObject
);
OBJECT
newObject
=
this
.
reloadObject
(
monitor
,
owner
,
oldObject
,
null
);
if
(
isChildrenCached
(
oldObject
))
{
clearChildrenCache
(
oldObject
);
}
...
...
@@ -63,15 +85,15 @@ public abstract class JDBCStructLookupCache<OWNER extends DBSObject, OBJECT exte
}
protected
OBJECT
reloadObject
(
DBRProgressMonitor
monitor
,
OWNER
owner
,
OBJECT
object
)
protected
OBJECT
reloadObject
(
@NotNull
DBRProgressMonitor
monitor
,
@NotNull
OWNER
owner
,
@Nullable
OBJECT
object
,
@Nullable
String
objectName
)
throws
DBException
{
DBPDataSource
dataSource
=
owner
.
getDataSource
();
if
(
dataSource
==
null
)
{
throw
new
DBException
(
"Not connected to database"
);
}
try
(
JDBCSession
session
=
DBUtils
.
openMetaSession
(
monitor
,
dataSource
,
"Reload object '"
+
object
.
getName
()
+
"' from "
+
owner
.
getName
()))
{
try
(
JDBCStatement
dbStat
=
prepareLookupStatement
(
session
,
owner
,
object
,
null
))
{
try
(
JDBCSession
session
=
DBUtils
.
openMetaSession
(
monitor
,
dataSource
,
"Reload object '"
+
object
+
"' from "
+
owner
.
getName
()))
{
try
(
JDBCStatement
dbStat
=
prepareLookupStatement
(
session
,
owner
,
object
,
objectName
))
{
dbStat
.
setFetchSize
(
1
);
dbStat
.
executeStatement
();
JDBCResultSet
dbResult
=
dbStat
.
getResultSet
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录