Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
ec37ad0a
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,发现更多精彩内容 >>
提交
ec37ad0a
编写于
8月 13, 2019
作者:
S
Serge Rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#6286 Generic driver: procedure type detect fix
Former-commit-id:
0e533f62
上级
d2396701
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
74 addition
and
63 deletion
+74
-63
plugins/org.jkiss.dbeaver.ext.generic/src/org/jkiss/dbeaver/ext/generic/model/meta/GenericMetaModel.java
...kiss/dbeaver/ext/generic/model/meta/GenericMetaModel.java
+74
-63
未找到文件。
plugins/org.jkiss.dbeaver.ext.generic/src/org/jkiss/dbeaver/ext/generic/model/meta/GenericMetaModel.java
浏览文件 @
ec37ad0a
...
...
@@ -226,76 +226,16 @@ public class GenericMetaModel {
GenericDataSource
dataSource
=
container
.
getDataSource
();
GenericMetaObject
procObject
=
dataSource
.
getMetaObject
(
GenericConstants
.
OBJECT_PROCEDURE
);
try
(
JDBCSession
session
=
DBUtils
.
openMetaSession
(
monitor
,
container
,
"Load procedures"
))
{
// Read procedures
JDBCResultSet
dbResult
=
session
.
getMetaData
().
getProcedures
(
container
.
getCatalog
()
==
null
?
null
:
container
.
getCatalog
().
getName
(),
container
.
getSchema
()
==
null
?
null
:
JDBCUtils
.
escapeWildCards
(
session
,
container
.
getSchema
().
getName
()),
dataSource
.
getAllObjectsPattern
());
try
{
while
(
dbResult
.
next
())
{
if
(
monitor
.
isCanceled
())
{
break
;
}
String
procedureCatalog
=
GenericUtils
.
safeGetStringTrimmed
(
procObject
,
dbResult
,
JDBCConstants
.
PROCEDURE_CAT
);
String
procedureName
=
GenericUtils
.
safeGetStringTrimmed
(
procObject
,
dbResult
,
JDBCConstants
.
PROCEDURE_NAME
);
String
specificName
=
GenericUtils
.
safeGetStringTrimmed
(
procObject
,
dbResult
,
JDBCConstants
.
SPECIFIC_NAME
);
int
procTypeNum
=
GenericUtils
.
safeGetInt
(
procObject
,
dbResult
,
JDBCConstants
.
PROCEDURE_TYPE
);
String
remarks
=
GenericUtils
.
safeGetString
(
procObject
,
dbResult
,
JDBCConstants
.
REMARKS
);
DBSProcedureType
procedureType
;
switch
(
procTypeNum
)
{
case
DatabaseMetaData
.
procedureNoResult
:
procedureType
=
DBSProcedureType
.
PROCEDURE
;
break
;
case
DatabaseMetaData
.
procedureReturnsResult
:
procedureType
=
DBSProcedureType
.
FUNCTION
;
break
;
case
DatabaseMetaData
.
procedureResultUnknown
:
procedureType
=
DBSProcedureType
.
PROCEDURE
;
break
;
default
:
procedureType
=
DBSProcedureType
.
UNKNOWN
;
break
;
}
if
(
CommonUtils
.
isEmpty
(
specificName
))
{
specificName
=
procedureName
;
}
procedureName
=
GenericUtils
.
normalizeProcedureName
(
procedureName
);
GenericPackage
procedurePackage
=
null
;
// FIXME: remove as a silly workaround
String
packageName
=
getPackageName
(
dataSource
,
procedureCatalog
,
procedureName
,
specificName
);
if
(
packageName
!=
null
)
{
if
(!
CommonUtils
.
isEmpty
(
packageName
))
{
if
(
packageMap
==
null
)
{
packageMap
=
new
TreeMap
<>();
}
procedurePackage
=
packageMap
.
get
(
packageName
);
if
(
procedurePackage
==
null
)
{
procedurePackage
=
new
GenericPackage
(
container
,
packageName
,
true
);
packageMap
.
put
(
packageName
,
procedurePackage
);
container
.
addPackage
(
procedurePackage
);
}
}
}
final
GenericProcedure
procedure
=
createProcedureImpl
(
procedurePackage
!=
null
?
procedurePackage
:
container
,
procedureName
,
specificName
,
remarks
,
procedureType
,
null
);
if
(
procedurePackage
!=
null
)
{
procedurePackage
.
addProcedure
(
procedure
);
}
else
{
container
.
addProcedure
(
procedure
);
}
}
}
finally
{
dbResult
.
close
();
}
boolean
supportsFunctions
=
false
;
try
{
// Try to read functions (note: this function appeared only in Java 1.6 so it maybe not implemented by many drivers)
// Read procedures
dbResult
=
session
.
getMetaData
().
getFunctions
(
JDBCResultSet
dbResult
=
session
.
getMetaData
().
getFunctions
(
container
.
getCatalog
()
==
null
?
null
:
container
.
getCatalog
().
getName
(),
container
.
getSchema
()
==
null
?
null
:
JDBCUtils
.
escapeWildCards
(
session
,
container
.
getSchema
().
getName
()),
dataSource
.
getAllObjectsPattern
());
try
{
supportsFunctions
=
true
;
while
(
dbResult
.
next
())
{
if
(
monitor
.
isCanceled
())
{
break
;
...
...
@@ -344,6 +284,77 @@ public class GenericMetaModel {
log
.
debug
(
"Can't read generic functions"
,
e
);
}
{
// Read procedures
JDBCResultSet
dbResult
=
session
.
getMetaData
().
getProcedures
(
container
.
getCatalog
()
==
null
?
null
:
container
.
getCatalog
().
getName
(),
container
.
getSchema
()
==
null
?
null
:
JDBCUtils
.
escapeWildCards
(
session
,
container
.
getSchema
().
getName
()),
dataSource
.
getAllObjectsPattern
());
try
{
while
(
dbResult
.
next
())
{
if
(
monitor
.
isCanceled
())
{
break
;
}
String
procedureCatalog
=
GenericUtils
.
safeGetStringTrimmed
(
procObject
,
dbResult
,
JDBCConstants
.
PROCEDURE_CAT
);
String
procedureName
=
GenericUtils
.
safeGetStringTrimmed
(
procObject
,
dbResult
,
JDBCConstants
.
PROCEDURE_NAME
);
String
specificName
=
GenericUtils
.
safeGetStringTrimmed
(
procObject
,
dbResult
,
JDBCConstants
.
SPECIFIC_NAME
);
int
procTypeNum
=
GenericUtils
.
safeGetInt
(
procObject
,
dbResult
,
JDBCConstants
.
PROCEDURE_TYPE
);
String
remarks
=
GenericUtils
.
safeGetString
(
procObject
,
dbResult
,
JDBCConstants
.
REMARKS
);
DBSProcedureType
procedureType
;
switch
(
procTypeNum
)
{
case
DatabaseMetaData
.
procedureNoResult
:
procedureType
=
DBSProcedureType
.
PROCEDURE
;
break
;
case
DatabaseMetaData
.
procedureReturnsResult
:
procedureType
=
supportsFunctions
?
DBSProcedureType
.
PROCEDURE
:
DBSProcedureType
.
FUNCTION
;
break
;
case
DatabaseMetaData
.
procedureResultUnknown
:
procedureType
=
DBSProcedureType
.
PROCEDURE
;
break
;
default
:
procedureType
=
DBSProcedureType
.
UNKNOWN
;
break
;
}
if
(
CommonUtils
.
isEmpty
(
specificName
))
{
specificName
=
procedureName
;
}
procedureName
=
GenericUtils
.
normalizeProcedureName
(
procedureName
);
GenericPackage
procedurePackage
=
null
;
// FIXME: remove as a silly workaround
String
packageName
=
getPackageName
(
dataSource
,
procedureCatalog
,
procedureName
,
specificName
);
if
(
packageName
!=
null
)
{
if
(!
CommonUtils
.
isEmpty
(
packageName
))
{
if
(
packageMap
==
null
)
{
packageMap
=
new
TreeMap
<>();
}
procedurePackage
=
packageMap
.
get
(
packageName
);
if
(
procedurePackage
==
null
)
{
procedurePackage
=
new
GenericPackage
(
container
,
packageName
,
true
);
packageMap
.
put
(
packageName
,
procedurePackage
);
container
.
addPackage
(
procedurePackage
);
}
}
}
final
GenericProcedure
procedure
=
createProcedureImpl
(
procedurePackage
!=
null
?
procedurePackage
:
container
,
procedureName
,
specificName
,
remarks
,
procedureType
,
null
);
if
(
procedurePackage
!=
null
)
{
procedurePackage
.
addProcedure
(
procedure
);
}
else
{
container
.
addProcedure
(
procedure
);
}
}
}
finally
{
dbResult
.
close
();
}
}
}
catch
(
SQLException
e
)
{
throw
new
DBException
(
e
,
dataSource
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录