Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
d429dec1
Shardingsphere
项目概览
apache
/
Shardingsphere
通知
56
Star
3
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Shardingsphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
d429dec1
编写于
8月 16, 2019
作者:
L
Liang Zhang
提交者:
GitHub
8月 16, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #2886 from tristaZero/dev
Fix the wrong parsing for columnSegement
上级
759e850d
215186d3
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
26 addition
and
9 deletion
+26
-9
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/core/extractor/impl/common/column/ColumnExtractor.java
...se/core/extractor/impl/common/column/ColumnExtractor.java
+1
-1
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/token/generator/SelectEncryptItemTokenGenerator.java
...rite/token/generator/SelectEncryptItemTokenGenerator.java
+14
-4
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/token/pojo/SelectEncryptItemToken.java
...phere/core/rewrite/token/pojo/SelectEncryptItemToken.java
+11
-4
未找到文件。
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/core/extractor/impl/common/column/ColumnExtractor.java
浏览文件 @
d429dec1
...
...
@@ -43,7 +43,7 @@ public final class ColumnExtractor implements OptionalSQLSegmentExtractor {
private
ColumnSegment
getColumnSegment
(
final
ParserRuleContext
columnNode
)
{
ParserRuleContext
nameNode
=
ExtractorUtils
.
getFirstChildNode
(
columnNode
,
RuleName
.
NAME
);
ColumnSegment
result
=
new
ColumnSegment
(
columnNode
.
getStart
().
getStartIndex
(),
columnNode
.
getSt
art
().
getStopIndex
(),
nameNode
.
getText
());
ColumnSegment
result
=
new
ColumnSegment
(
columnNode
.
getStart
().
getStartIndex
(),
columnNode
.
getSt
op
().
getStopIndex
(),
nameNode
.
getText
());
Optional
<
ParserRuleContext
>
ownerNode
=
ExtractorUtils
.
findFirstChildNodeNoneRecursive
(
columnNode
,
RuleName
.
OWNER
);
if
(
ownerNode
.
isPresent
())
{
result
.
setOwner
(
new
TableSegment
(
ownerNode
.
get
().
getStart
().
getStartIndex
(),
ownerNode
.
get
().
getStop
().
getStopIndex
(),
ownerNode
.
get
().
getText
()));
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/token/generator/SelectEncryptItemTokenGenerator.java
浏览文件 @
d429dec1
...
...
@@ -22,6 +22,7 @@ import org.apache.shardingsphere.core.optimize.api.statement.OptimizedStatement;
import
org.apache.shardingsphere.core.parse.sql.segment.dml.item.ColumnSelectItemSegment
;
import
org.apache.shardingsphere.core.parse.sql.segment.dml.item.SelectItemSegment
;
import
org.apache.shardingsphere.core.parse.sql.segment.dml.item.SelectItemsSegment
;
import
org.apache.shardingsphere.core.parse.sql.segment.generic.TableSegment
;
import
org.apache.shardingsphere.core.parse.sql.statement.dml.SelectStatement
;
import
org.apache.shardingsphere.core.rewrite.builder.ParameterBuilder
;
import
org.apache.shardingsphere.core.rewrite.token.pojo.SelectEncryptItemToken
;
...
...
@@ -79,12 +80,21 @@ public final class SelectEncryptItemTokenGenerator implements CollectionSQLToken
return
each
instanceof
ColumnSelectItemSegment
&&
logicColumns
.
contains
(((
ColumnSelectItemSegment
)
each
).
getName
());
}
private
SelectEncryptItemToken
createSelectCipherItemToken
(
final
SelectItemSegment
each
,
final
String
tableName
,
final
EncryptRule
encryptRule
,
final
boolean
isQueryWithCipherColumn
)
{
String
columnName
=
((
ColumnSelectItemSegment
)
each
).
getName
();
private
SelectEncryptItemToken
createSelectCipherItemToken
(
final
SelectItemSegment
selectItemSegment
,
final
String
tableName
,
final
EncryptRule
encryptRule
,
final
boolean
isQueryWithCipherColumn
)
{
String
columnName
=
((
ColumnSelectItemSegment
)
selectItemSegment
).
getName
();
Optional
<
String
>
plainColumn
=
encryptRule
.
getPlainColumn
(
tableName
,
columnName
);
if
(!
isQueryWithCipherColumn
&&
plainColumn
.
isPresent
())
{
return
new
SelectEncryptItemToken
(
each
.
getStartIndex
(),
each
.
getStopIndex
()
,
plainColumn
.
get
());
return
createSelectEncryptItemToken
(
selectItemSegment
,
plainColumn
.
get
());
}
return
new
SelectEncryptItemToken
(
each
.
getStartIndex
(),
each
.
getStopIndex
(),
encryptRule
.
getCipherColumn
(
tableName
,
columnName
));
return
createSelectEncryptItemToken
(
selectItemSegment
,
encryptRule
.
getCipherColumn
(
tableName
,
columnName
));
}
private
SelectEncryptItemToken
createSelectEncryptItemToken
(
final
SelectItemSegment
selectItemSegment
,
final
String
columnName
)
{
Optional
<
TableSegment
>
owner
=
((
ColumnSelectItemSegment
)
selectItemSegment
).
getOwner
();
if
(
owner
.
isPresent
())
{
return
new
SelectEncryptItemToken
(
selectItemSegment
.
getStartIndex
(),
selectItemSegment
.
getStopIndex
(),
columnName
,
owner
.
get
().
getTableName
());
}
return
new
SelectEncryptItemToken
(
selectItemSegment
.
getStartIndex
(),
selectItemSegment
.
getStopIndex
(),
columnName
);
}
}
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/token/pojo/SelectEncryptItemToken.java
浏览文件 @
d429dec1
...
...
@@ -29,16 +29,23 @@ public final class SelectEncryptItemToken extends SQLToken implements Substituta
private
final
int
stopIndex
;
private
final
String
selectItem
Name
;
private
final
String
column
Name
;
public
SelectEncryptItemToken
(
final
int
startIndex
,
final
int
stopIndex
,
final
String
selectItemName
)
{
private
final
String
owner
;
public
SelectEncryptItemToken
(
final
int
startIndex
,
final
int
stopIndex
,
final
String
columnName
,
final
String
owner
)
{
super
(
startIndex
);
this
.
stopIndex
=
stopIndex
;
this
.
selectItemName
=
selectItemName
;
this
.
columnName
=
columnName
;
this
.
owner
=
owner
;
}
public
SelectEncryptItemToken
(
final
int
startIndex
,
final
int
stopIndex
,
final
String
columnName
)
{
this
(
startIndex
,
stopIndex
,
columnName
,
null
);
}
@Override
public
String
toString
()
{
return
selectItemName
;
return
null
==
owner
?
columnName
:
String
.
format
(
"%s.%s"
,
owner
,
columnName
)
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录