Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
见谅
dbeaver
提交
6467243a
D
dbeaver
项目概览
见谅
/
dbeaver
与 Fork 源项目一致
从无法访问的项目Fork
通知
6
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,发现更多精彩内容 >>
提交
6467243a
编写于
9月 20, 2014
作者:
J
jurgen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Extract single source table from SQL queries
上级
1d315016
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
68 addition
and
5 deletion
+68
-5
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/DBUtils.java
...iss.dbeaver.core/src/org/jkiss/dbeaver/model/DBUtils.java
+4
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/sql/SQLQuery.java
...beaver.core/src/org/jkiss/dbeaver/model/sql/SQLQuery.java
+63
-4
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/SQLQueryJob.java
...r.core/src/org/jkiss/dbeaver/runtime/sql/SQLQueryJob.java
+1
-1
未找到文件。
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/DBUtils.java
浏览文件 @
6467243a
...
...
@@ -37,6 +37,7 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableWithResult
;
import
org.jkiss.dbeaver.model.sql.SQLDataSource
;
import
org.jkiss.dbeaver.model.sql.SQLDialect
;
import
org.jkiss.dbeaver.model.sql.SQLQuery
;
import
org.jkiss.dbeaver.model.sql.SQLUtils
;
import
org.jkiss.dbeaver.model.sql.parser.SQLSemanticProcessor
;
import
org.jkiss.dbeaver.model.struct.*
;
...
...
@@ -517,6 +518,9 @@ public final class DBUtils {
DBCAttributeMetaData
attrMeta
=
binding
.
getMetaAttribute
();
DBCEntityMetaData
entityMeta
=
attrMeta
.
getEntityMetaData
();
Object
metaSource
=
attrMeta
.
getSource
();
if
(
entityMeta
==
null
&&
metaSource
instanceof
SQLQuery
)
{
entityMeta
=
((
SQLQuery
)
metaSource
).
getSingleSource
();
}
DBSEntity
entity
=
null
;
if
(
metaSource
instanceof
DBSEntity
)
{
entity
=
(
DBSEntity
)
metaSource
;
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/sql/SQLQuery.java
浏览文件 @
6467243a
...
...
@@ -21,18 +21,23 @@ package org.jkiss.dbeaver.model.sql;
import
net.sf.jsqlparser.JSQLParserException
;
import
net.sf.jsqlparser.parser.CCJSqlParserUtil
;
import
net.sf.jsqlparser.schema.Database
;
import
net.sf.jsqlparser.schema.Table
;
import
net.sf.jsqlparser.statement.Statement
;
import
net.sf.jsqlparser.statement.delete.Delete
;
import
net.sf.jsqlparser.statement.insert.Insert
;
import
net.sf.jsqlparser.statement.select.FromItem
;
import
net.sf.jsqlparser.statement.select.PlainSelect
;
import
net.sf.jsqlparser.statement.select.Select
;
import
net.sf.jsqlparser.statement.select.SelectBody
;
import
net.sf.jsqlparser.statement.update.Update
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.eclipse.jface.text.BadLocationException
;
import
org.eclipse.jface.text.IDocument
;
import
org.eclipse.jface.text.rules.IToken
;
import
org.jkiss.dbeaver.model.
DBPDataSource
;
import
org.jkiss.dbeaver.model.
struct.DBSEntity
;
import
org.jkiss.dbeaver.model.
exec.DBCAttributeMetaData
;
import
org.jkiss.dbeaver.model.
exec.DBCEntityMetaData
;
import
org.jkiss.dbeaver.ui.editors.sql.syntax.SQLSyntaxManager
;
import
org.jkiss.dbeaver.ui.editors.sql.syntax.tokens.SQLBlockBeginToken
;
import
org.jkiss.dbeaver.ui.editors.sql.syntax.tokens.SQLBlockEndToken
;
...
...
@@ -40,6 +45,7 @@ import org.jkiss.dbeaver.ui.editors.sql.syntax.tokens.SQLParameterToken;
import
org.jkiss.utils.CommonUtils
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
/**
...
...
@@ -56,6 +62,7 @@ public class SQLQuery {
private
Object
data
;
private
SQLQueryType
type
;
private
Statement
statement
;
private
SingleTableMeta
singleTableMeta
;
public
SQLQuery
(
String
query
,
int
offset
,
int
length
)
{
...
...
@@ -66,6 +73,25 @@ public class SQLQuery {
statement
=
CCJSqlParserUtil
.
parse
(
query
);
if
(
statement
instanceof
Select
)
{
type
=
SQLQueryType
.
SELECT
;
// Detect single source table
SelectBody
selectBody
=
((
Select
)
statement
).
getSelectBody
();
if
(
selectBody
instanceof
PlainSelect
)
{
PlainSelect
plainSelect
=
(
PlainSelect
)
selectBody
;
if
(
plainSelect
.
getFromItem
()
instanceof
Table
&&
CommonUtils
.
isEmpty
(
plainSelect
.
getJoins
())
&&
CommonUtils
.
isEmpty
(
plainSelect
.
getGroupByColumnReferences
())
&&
plainSelect
.
getInto
()
==
null
)
{
Table
fromItem
=
(
Table
)
plainSelect
.
getFromItem
();
Database
database
=
fromItem
.
getDatabase
();
String
schemaName
=
fromItem
.
getSchemaName
();
String
tableName
=
fromItem
.
getName
();
singleTableMeta
=
new
SingleTableMeta
(
database
==
null
?
null
:
database
.
getDatabaseName
(),
schemaName
,
tableName
);
}
}
}
else
if
(
statement
instanceof
Insert
)
{
type
=
SQLQueryType
.
INSERT
;
}
else
if
(
statement
instanceof
Update
)
{
...
...
@@ -121,8 +147,8 @@ public class SQLQuery {
return
type
;
}
public
DB
SEntity
getSingleSource
(
DBPDataSource
dataSource
)
{
return
null
;
public
DB
CEntityMetaData
getSingleSource
(
)
{
return
singleTableMeta
;
}
public
void
parseParameters
(
IDocument
document
,
SQLSyntaxManager
syntaxManager
)
...
...
@@ -165,4 +191,37 @@ public class SQLQuery {
return
query
;
}
private
static
class
SingleTableMeta
implements
DBCEntityMetaData
{
private
final
String
catalogName
;
private
final
String
schemaName
;
private
final
String
tableName
;
private
SingleTableMeta
(
String
catalogName
,
String
schemaName
,
String
tableName
)
{
this
.
catalogName
=
catalogName
;
this
.
schemaName
=
schemaName
;
this
.
tableName
=
tableName
;
}
@Override
public
String
getCatalogName
()
{
return
catalogName
;
}
@Override
public
String
getSchemaName
()
{
return
schemaName
;
}
@Override
public
String
getEntityName
()
{
return
tableName
;
}
@Override
public
List
<?
extends
DBCAttributeMetaData
>
getAttributes
()
{
return
Collections
.
emptyList
();
}
}
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/SQLQueryJob.java
浏览文件 @
6467243a
...
...
@@ -316,7 +316,7 @@ public class SQLQueryJob extends DataSourceJob
sqlQuery
,
rsOffset
,
rsMaxRows
);
curStatement
.
setStatementSource
(
partSite
.
getPart
()
);
curStatement
.
setStatementSource
(
sqlStatement
);
if
(
hasParameters
)
{
// Bind them
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录