Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
d8262453
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,发现更多精彩内容 >>
提交
d8262453
编写于
7月 30, 2018
作者:
T
tuohai666
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
for #887, complete Parser test
上级
41deabb4
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
99 addition
and
0 deletion
+99
-0
sharding-core/src/main/java/io/shardingsphere/core/parsing/lexer/analyzer/Tokenizer.java
...shardingsphere/core/parsing/lexer/analyzer/Tokenizer.java
+4
-0
sharding-core/src/main/java/io/shardingsphere/core/parsing/lexer/dialect/oracle/OracleLexer.java
...sphere/core/parsing/lexer/dialect/oracle/OracleLexer.java
+11
-0
sharding-core/src/main/java/io/shardingsphere/core/parsing/lexer/dialect/sqlserver/SQLServerLexer.java
.../core/parsing/lexer/dialect/sqlserver/SQLServerLexer.java
+6
-0
sharding-core/src/test/resources/parser/select.xml
sharding-core/src/test/resources/parser/select.xml
+78
-0
未找到文件。
sharding-core/src/main/java/io/shardingsphere/core/parsing/lexer/analyzer/Tokenizer.java
浏览文件 @
d8262453
...
...
@@ -157,6 +157,10 @@ public final class Tokenizer {
int
length
=
getLengthUntilTerminatedChar
(
'"'
);
return
new
Token
(
Literals
.
IDENTIFIER
,
input
.
substring
(
offset
,
offset
+
length
),
offset
+
length
);
}
if
(
'['
==
charAt
(
offset
))
{
int
length
=
getLengthUntilTerminatedChar
(
']'
);
return
new
Token
(
Literals
.
IDENTIFIER
,
input
.
substring
(
offset
,
offset
+
length
),
offset
+
length
);
}
int
length
=
0
;
while
(
isIdentifierChar
(
charAt
(
offset
+
length
)))
{
length
++;
...
...
sharding-core/src/main/java/io/shardingsphere/core/parsing/lexer/dialect/oracle/OracleLexer.java
浏览文件 @
d8262453
...
...
@@ -18,6 +18,7 @@
package
io.shardingsphere.core.parsing.lexer.dialect.oracle
;
import
io.shardingsphere.core.parsing.lexer.Lexer
;
import
io.shardingsphere.core.parsing.lexer.analyzer.CharType
;
import
io.shardingsphere.core.parsing.lexer.analyzer.Dictionary
;
/**
...
...
@@ -37,4 +38,14 @@ public final class OracleLexer extends Lexer {
protected
boolean
isHintBegin
()
{
return
'/'
==
getCurrentChar
(
0
)
&&
'*'
==
getCurrentChar
(
1
)
&&
'+'
==
getCurrentChar
(
2
);
}
@Override
protected
boolean
isIdentifierBegin
(
final
char
ch
)
{
return
CharType
.
isAlphabet
(
ch
)
||
'\"'
==
ch
||
'_'
==
ch
||
'$'
==
ch
;
}
@Override
protected
boolean
isCharsBegin
()
{
return
'\''
==
getCurrentChar
(
0
);
}
}
sharding-core/src/main/java/io/shardingsphere/core/parsing/lexer/dialect/sqlserver/SQLServerLexer.java
浏览文件 @
d8262453
...
...
@@ -18,6 +18,7 @@
package
io.shardingsphere.core.parsing.lexer.dialect.sqlserver
;
import
io.shardingsphere.core.parsing.lexer.Lexer
;
import
io.shardingsphere.core.parsing.lexer.analyzer.CharType
;
import
io.shardingsphere.core.parsing.lexer.analyzer.Dictionary
;
/**
...
...
@@ -47,4 +48,9 @@ public final class SQLServerLexer extends Lexer {
protected
boolean
isSupportNChars
()
{
return
true
;
}
@Override
protected
boolean
isIdentifierBegin
(
final
char
ch
)
{
return
CharType
.
isAlphabet
(
ch
)
||
'['
==
ch
||
'_'
==
ch
||
'$'
==
ch
;
}
}
sharding-core/src/test/resources/parser/select.xml
浏览文件 @
d8262453
...
...
@@ -279,6 +279,84 @@
</order-by-columns>
</parser-result>
<parser-result
sql-case-id=
"select_keyword_table_name_with_back_quotes"
parameters=
"1, 2, 9, 10, 'init'"
>
<tables>
<table
name=
"t_order"
alias=
"o"
/>
<table
name=
"t_order_item"
alias=
"i"
/>
</tables>
<tokens>
<table-token
begin-position=
"16"
original-literals=
"t_order"
/>
<table-token
begin-position=
"31"
original-literals=
"t_order_item"
/>
</tokens>
<or-condition>
<and-condition>
<condition
column-name=
"user_id"
table-name=
"t_order"
operator=
"IN"
>
<value
index=
"0"
literal=
"1"
type=
"int"
/>
<value
index=
"1"
literal=
"2"
type=
"int"
/>
</condition>
<condition
column-name=
"order_id"
table-name=
"t_order"
operator=
"BETWEEN"
>
<value
index=
"2"
literal=
"9"
type=
"int"
/>
<value
index=
"3"
literal=
"10"
type=
"int"
/>
</condition>
</and-condition>
</or-condition>
<order-by-columns>
<order-by-column
owner=
"i"
name=
"item_id"
order-direction=
"ASC"
/>
</order-by-columns>
</parser-result>
<parser-result
sql-case-id=
"select_keyword_table_name_with_double_quotes"
parameters=
"1, 2, 9, 10, 'init'"
>
<tables>
<table
name=
"t_order"
alias=
"o"
/>
<table
name=
"t_order_item"
alias=
"i"
/>
</tables>
<tokens>
<table-token
begin-position=
"16"
original-literals=
"t_order"
/>
<table-token
begin-position=
"31"
original-literals=
"t_order_item"
/>
</tokens>
<or-condition>
<and-condition>
<condition
column-name=
"user_id"
table-name=
"t_order"
operator=
"IN"
>
<value
index=
"0"
literal=
"1"
type=
"int"
/>
<value
index=
"1"
literal=
"2"
type=
"int"
/>
</condition>
<condition
column-name=
"order_id"
table-name=
"t_order"
operator=
"BETWEEN"
>
<value
index=
"2"
literal=
"9"
type=
"int"
/>
<value
index=
"3"
literal=
"10"
type=
"int"
/>
</condition>
</and-condition>
</or-condition>
<order-by-columns>
<order-by-column
owner=
"i"
name=
"item_id"
order-direction=
"ASC"
/>
</order-by-columns>
</parser-result>
<parser-result
sql-case-id=
"select_keyword_table_name_with_square_brackets"
parameters=
"1, 2, 9, 10, 'init'"
>
<tables>
<table
name=
"t_order"
alias=
"o"
/>
<table
name=
"t_order_item"
alias=
"i"
/>
</tables>
<tokens>
<table-token
begin-position=
"16"
original-literals=
"t_order"
/>
<table-token
begin-position=
"31"
original-literals=
"t_order_item"
/>
</tokens>
<or-condition>
<and-condition>
<condition
column-name=
"user_id"
table-name=
"t_order"
operator=
"IN"
>
<value
index=
"0"
literal=
"1"
type=
"int"
/>
<value
index=
"1"
literal=
"2"
type=
"int"
/>
</condition>
<condition
column-name=
"order_id"
table-name=
"t_order"
operator=
"BETWEEN"
>
<value
index=
"2"
literal=
"9"
type=
"int"
/>
<value
index=
"3"
literal=
"10"
type=
"int"
/>
</condition>
</and-condition>
</or-condition>
<order-by-columns>
<order-by-column
owner=
"i"
name=
"item_id"
order-direction=
"ASC"
/>
</order-by-columns>
</parser-result>
<parser-result
sql-case-id=
"select_alias_as_keyword"
parameters=
"1"
>
<tables>
<table
name=
"t_order_item"
alias=
"length"
/>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录