Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
9172a231
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,发现更多精彩内容 >>
提交
9172a231
编写于
12月 15, 2019
作者:
S
serge-rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#5172 Oracle: default schema
Former-commit-id:
88a6b554
上级
1751b81e
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
165 addition
and
90 deletion
+165
-90
plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleDataSource.java
.../org/jkiss/dbeaver/ext/oracle/model/OracleDataSource.java
+18
-85
plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleExecutionContext.java
...kiss/dbeaver/ext/oracle/model/OracleExecutionContext.java
+135
-0
plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleStructureAssistant.java
...ss/dbeaver/ext/oracle/model/OracleStructureAssistant.java
+4
-2
plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleUtils.java
...e/src/org/jkiss/dbeaver/ext/oracle/model/OracleUtils.java
+8
-3
未找到文件。
plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleDataSource.java
浏览文件 @
9172a231
...
...
@@ -32,10 +32,7 @@ import org.jkiss.dbeaver.model.connection.DBPDriver;
import
org.jkiss.dbeaver.model.exec.*
;
import
org.jkiss.dbeaver.model.exec.jdbc.*
;
import
org.jkiss.dbeaver.model.exec.plan.DBCQueryPlanner
;
import
org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource
;
import
org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSourceInfo
;
import
org.jkiss.dbeaver.model.impl.jdbc.JDBCExecutionContext
;
import
org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils
;
import
org.jkiss.dbeaver.model.impl.jdbc.*
;
import
org.jkiss.dbeaver.model.impl.jdbc.cache.JDBCObjectCache
;
import
org.jkiss.dbeaver.model.impl.jdbc.cache.JDBCStructCache
;
import
org.jkiss.dbeaver.model.meta.Association
;
...
...
@@ -43,7 +40,10 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import
org.jkiss.dbeaver.model.sql.SQLConstants
;
import
org.jkiss.dbeaver.model.sql.SQLQueryResult
;
import
org.jkiss.dbeaver.model.sql.SQLState
;
import
org.jkiss.dbeaver.model.struct.*
;
import
org.jkiss.dbeaver.model.struct.DBSDataType
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.model.struct.DBSObjectFilter
;
import
org.jkiss.dbeaver.model.struct.DBSStructureAssistant
;
import
org.jkiss.dbeaver.runtime.DBWorkbench
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
import
org.jkiss.utils.BeanUtils
;
...
...
@@ -59,8 +59,7 @@ import java.util.regex.Pattern;
/**
* GenericDataSource
*/
public
class
OracleDataSource
extends
JDBCDataSource
implements
DBSObjectSelector
,
IAdaptable
{
public
class
OracleDataSource
extends
JDBCDataSource
implements
IAdaptable
{
private
static
final
Log
log
=
Log
.
getLog
(
OracleDataSource
.
class
);
final
public
SchemaCache
schemaCache
=
new
SchemaCache
();
...
...
@@ -72,7 +71,6 @@ public class OracleDataSource extends JDBCDataSource
private
OracleOutputReader
outputReader
;
private
OracleSchema
publicSchema
;
private
String
activeSchemaName
;
private
boolean
isAdmin
;
private
boolean
isAdminVisible
;
private
String
planTableName
;
...
...
@@ -200,6 +198,11 @@ public class OracleDataSource extends JDBCDataSource
}
}
@Override
protected
JDBCExecutionContext
createExecutionContext
(
JDBCRemoteInstance
instance
,
String
type
)
{
return
new
OracleExecutionContext
(
instance
,
type
);
}
protected
void
initializeContextState
(
@NotNull
DBRProgressMonitor
monitor
,
@NotNull
JDBCExecutionContext
context
,
boolean
setActiveObject
)
throws
DBException
{
if
(
outputReader
==
null
)
{
outputReader
=
new
OracleOutputReader
();
...
...
@@ -210,7 +213,9 @@ public class OracleDataSource extends JDBCDataSource
context
,
outputReader
.
isServerOutputEnabled
());
if
(
setActiveObject
)
{
setCurrentSchema
(
monitor
,
context
,
getDefaultObject
());
((
OracleExecutionContext
)
context
).
setCurrentSchema
(
monitor
,
getDefaultSchema
());
}
else
{
((
OracleExecutionContext
)
context
).
refreshDefaults
(
monitor
);
}
{
...
...
@@ -265,6 +270,10 @@ public class OracleDataSource extends JDBCDataSource
}
}
public
OracleSchema
getDefaultSchema
()
{
return
(
OracleSchema
)
DBUtils
.
getDefaultContext
(
this
,
true
).
getContextDefaults
().
getDefaultSchema
();
}
@Override
protected
String
getConnectionUserName
(
@NotNull
DBPConnectionConfiguration
connectionInfo
)
{
final
String
role
=
connectionInfo
.
getProviderProperty
(
OracleConstants
.
PROP_INTERNAL_LOGON
);
...
...
@@ -417,15 +426,6 @@ public class OracleDataSource extends JDBCDataSource
isAdminVisible
=
CommonUtils
.
getBoolean
(
showAdmin
,
false
);
}
}
// Get active schema
this
.
activeSchemaName
=
OracleUtils
.
getCurrentSchema
(
session
);
if
(
this
.
activeSchemaName
!=
null
)
{
if
(
this
.
activeSchemaName
.
isEmpty
())
{
this
.
activeSchemaName
=
null
;
}
}
}
catch
(
SQLException
e
)
{
//throw new DBException(e);
log
.
warn
(
e
);
...
...
@@ -453,7 +453,6 @@ public class OracleDataSource extends JDBCDataSource
this
.
userCache
.
clearCache
();
this
.
profileCache
.
clearCache
();
this
.
roleCache
.
clearCache
();
this
.
activeSchemaName
=
null
;
this
.
initialize
(
monitor
);
...
...
@@ -484,67 +483,6 @@ public class OracleDataSource extends JDBCDataSource
}
@Override
public
boolean
supportsDefaultChange
()
{
return
true
;
}
@Nullable
@Override
public
OracleSchema
getDefaultObject
()
{
return
activeSchemaName
==
null
?
null
:
schemaCache
.
getCachedObject
(
activeSchemaName
);
}
@Override
public
void
setDefaultObject
(
@NotNull
DBRProgressMonitor
monitor
,
@NotNull
DBSObject
object
)
throws
DBException
{
final
OracleSchema
oldSelectedEntity
=
getDefaultObject
();
if
(!(
object
instanceof
OracleSchema
))
{
throw
new
IllegalArgumentException
(
"Invalid object type: "
+
object
);
}
for
(
JDBCExecutionContext
context
:
getDefaultInstance
().
getAllContexts
())
{
setCurrentSchema
(
monitor
,
context
,
(
OracleSchema
)
object
);
}
activeSchemaName
=
object
.
getName
();
// Send notifications
if
(
oldSelectedEntity
!=
null
)
{
DBUtils
.
fireObjectSelect
(
oldSelectedEntity
,
false
);
}
if
(
this
.
activeSchemaName
!=
null
)
{
DBUtils
.
fireObjectSelect
(
object
,
true
);
}
}
@Override
public
boolean
refreshDefaultObject
(
@NotNull
DBCSession
session
)
throws
DBException
{
try
{
final
String
currentSchema
=
OracleUtils
.
getCurrentSchema
((
JDBCSession
)
session
);
if
(
currentSchema
!=
null
&&
!
CommonUtils
.
equalObjects
(
currentSchema
,
activeSchemaName
))
{
final
OracleSchema
newSchema
=
schemaCache
.
getCachedObject
(
currentSchema
);
if
(
newSchema
!=
null
)
{
setDefaultObject
(
session
.
getProgressMonitor
(),
newSchema
);
return
true
;
}
}
return
false
;
}
catch
(
SQLException
e
)
{
throw
new
DBException
(
e
,
this
);
}
}
private
void
setCurrentSchema
(
DBRProgressMonitor
monitor
,
JDBCExecutionContext
executionContext
,
OracleSchema
object
)
throws
DBCException
{
if
(
object
==
null
)
{
log
.
debug
(
"Null current schema"
);
return
;
}
try
(
JDBCSession
session
=
executionContext
.
openSession
(
monitor
,
DBCExecutionPurpose
.
UTIL
,
"Set active schema"
))
{
OracleUtils
.
setCurrentSchema
(
session
,
object
.
getName
());
}
catch
(
SQLException
e
)
{
throw
new
DBCException
(
e
,
this
);
}
}
@Nullable
@Override
public
<
T
>
T
getAdapter
(
Class
<
T
>
adapter
)
{
...
...
@@ -880,11 +818,6 @@ public class OracleDataSource extends JDBCDataSource
@Override
protected
void
invalidateObjects
(
DBRProgressMonitor
monitor
,
OracleDataSource
owner
,
Iterator
<
OracleSchema
>
objectIter
)
{
setListOrderComparator
(
DBUtils
.<
OracleSchema
>
nameComparator
());
// Add predefined types
if
(!
CommonUtils
.
isEmpty
(
owner
.
activeSchemaName
)
&&
getCachedObject
(
owner
.
activeSchemaName
)
==
null
)
{
cacheObject
(
new
OracleSchema
(
owner
,
100
,
owner
.
activeSchemaName
));
}
}
}
...
...
plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleExecutionContext.java
0 → 100644
浏览文件 @
9172a231
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2019 Serge Rider (serge@jkiss.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.jkiss.dbeaver.ext.oracle.model
;
import
org.jkiss.code.NotNull
;
import
org.jkiss.code.Nullable
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.model.DBUtils
;
import
org.jkiss.dbeaver.model.exec.DBCException
;
import
org.jkiss.dbeaver.model.exec.DBCExecutionContextDefaults
;
import
org.jkiss.dbeaver.model.exec.DBCExecutionPurpose
;
import
org.jkiss.dbeaver.model.exec.jdbc.JDBCSession
;
import
org.jkiss.dbeaver.model.impl.jdbc.JDBCExecutionContext
;
import
org.jkiss.dbeaver.model.impl.jdbc.JDBCRemoteInstance
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.struct.rdb.DBSCatalog
;
import
java.sql.SQLException
;
/**
* OracleExecutionContext
*/
public
class
OracleExecutionContext
extends
JDBCExecutionContext
implements
DBCExecutionContextDefaults
<
DBSCatalog
,
OracleSchema
>
{
private
static
final
Log
log
=
Log
.
getLog
(
OracleExecutionContext
.
class
);
private
String
activeSchemaName
;
OracleExecutionContext
(
@NotNull
JDBCRemoteInstance
instance
,
String
purpose
)
{
super
(
instance
,
purpose
);
}
@NotNull
@Override
public
OracleDataSource
getDataSource
()
{
return
(
OracleDataSource
)
super
.
getDataSource
();
}
@Nullable
@Override
public
DBCExecutionContextDefaults
getContextDefaults
()
{
return
this
;
}
public
String
getActiveSchemaName
()
{
return
activeSchemaName
;
}
@Override
public
DBSCatalog
getDefaultCatalog
()
{
return
null
;
}
@Override
public
OracleSchema
getDefaultSchema
()
{
return
activeSchemaName
==
null
?
null
:
getDataSource
().
schemaCache
.
getCachedObject
(
activeSchemaName
);
}
@Override
public
boolean
supportsCatalogChange
()
{
return
false
;
}
@Override
public
boolean
supportsSchemaChange
()
{
return
true
;
}
@Override
public
void
setDefaultCatalog
(
DBRProgressMonitor
monitor
,
DBSCatalog
catalog
,
OracleSchema
schema
)
throws
DBCException
{
throw
new
DBCException
(
"Not supported"
);
}
@Override
public
void
setDefaultSchema
(
DBRProgressMonitor
monitor
,
OracleSchema
schema
)
throws
DBCException
{
final
OracleSchema
oldSelectedEntity
=
getDefaultSchema
();
if
(
schema
==
null
||
oldSelectedEntity
==
schema
)
{
return
;
}
setCurrentSchema
(
monitor
,
schema
);
activeSchemaName
=
schema
.
getName
();
// Send notifications
if
(
oldSelectedEntity
!=
null
)
{
DBUtils
.
fireObjectSelect
(
oldSelectedEntity
,
false
);
}
DBUtils
.
fireObjectSelect
(
schema
,
true
);
}
@Override
public
boolean
refreshDefaults
(
DBRProgressMonitor
monitor
)
throws
DBException
{
// Check default active schema
try
(
JDBCSession
session
=
openSession
(
monitor
,
DBCExecutionPurpose
.
META
,
"Query active schema"
))
{
// Get active schema
this
.
activeSchemaName
=
OracleUtils
.
getCurrentSchema
(
session
);
if
(
this
.
activeSchemaName
!=
null
)
{
if
(
this
.
activeSchemaName
.
isEmpty
())
{
this
.
activeSchemaName
=
null
;
}
}
}
catch
(
Exception
e
)
{
throw
new
DBCException
(
e
,
getDataSource
());
}
return
false
;
}
void
setCurrentSchema
(
DBRProgressMonitor
monitor
,
OracleSchema
object
)
throws
DBCException
{
if
(
object
==
null
)
{
log
.
debug
(
"Null current schema"
);
return
;
}
try
(
JDBCSession
session
=
openSession
(
monitor
,
DBCExecutionPurpose
.
UTIL
,
"Set active schema"
))
{
OracleUtils
.
setCurrentSchema
(
session
,
object
.
getName
());
this
.
activeSchemaName
=
object
.
getName
();
}
catch
(
SQLException
e
)
{
throw
new
DBCException
(
e
,
getDataSource
());
}
}
}
plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleStructureAssistant.java
浏览文件 @
9172a231
...
...
@@ -34,7 +34,9 @@ import org.jkiss.utils.ArrayUtils;
import
org.jkiss.utils.CommonUtils
;
import
java.sql.SQLException
;
import
java.util.*
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
/**
* OracleStructureAssistant
...
...
@@ -121,7 +123,7 @@ public class OracleStructureAssistant implements DBSStructureAssistant
findConstraintsByMask
(
session
,
schema
,
objectNameMask
,
objectTypes
,
maxResults
,
objects
);
}
// Sort objects. Put ones in the current schema first
final
OracleSchema
activeSchema
=
dataSource
.
getDefault
Object
();
final
OracleSchema
activeSchema
=
dataSource
.
getDefault
Schema
();
objects
.
sort
((
o1
,
o2
)
->
{
if
(
CommonUtils
.
equalObjects
(
o1
.
getContainer
(),
o2
.
getContainer
()))
{
return
o1
.
getName
().
compareTo
(
o2
.
getName
());
...
...
plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleUtils.java
浏览文件 @
9172a231
...
...
@@ -200,14 +200,19 @@ public class OracleUtils {
public
static
void
addSchemaChangeActions
(
List
<
DBEPersistAction
>
actions
,
OracleSourceObject
object
)
{
OracleSchema
schema
=
object
.
getSchema
();
if
(
schema
==
null
)
{
return
;
}
actions
.
add
(
0
,
new
SQLDatabasePersistAction
(
"Set target schema"
,
"ALTER SESSION SET CURRENT_SCHEMA="
+
object
.
getSchema
()
.
getName
(),
"ALTER SESSION SET CURRENT_SCHEMA="
+
schema
.
getName
(),
DBEPersistAction
.
ActionType
.
INITIALIZER
));
if
(
object
.
getSchema
()
!=
object
.
getDataSource
().
getDefaultObject
())
{
OracleSchema
defaultSchema
=
object
.
getDataSource
().
getDefaultSchema
();
if
(
schema
!=
defaultSchema
)
{
actions
.
add
(
new
SQLDatabasePersistAction
(
"Set current schema"
,
"ALTER SESSION SET CURRENT_SCHEMA="
+
object
.
getDataSource
().
getDefaultObject
()
.
getName
(),
"ALTER SESSION SET CURRENT_SCHEMA="
+
defaultSchema
.
getName
(),
DBEPersistAction
.
ActionType
.
FINALIZER
));
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录