Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
4d01a607
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,发现更多精彩内容 >>
提交
4d01a607
编写于
8月 09, 2017
作者:
H
haocao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refactor parser test case packages 12th.
上级
5e5932e3
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
149 addition
and
25 deletion
+149
-25
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/base/AbstractBaseParseSQLTest.java
...harding/parsing/parser/base/AbstractBaseParseSQLTest.java
+35
-6
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/base/AbstractBaseParseTest.java
...b/sharding/parsing/parser/base/AbstractBaseParseTest.java
+5
-5
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/SQLParserTest.java
...me/rdb/sharding/parsing/parser/dialect/SQLParserTest.java
+3
-2
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/jaxb/helper/ParserJAXBHelper.java
...sharding/parsing/parser/jaxb/helper/ParserJAXBHelper.java
+0
-12
sharding-jdbc-core/src/test/resources/parser/select_pagination.xml
...jdbc-core/src/test/resources/parser/select_pagination.xml
+63
-0
sharding-jdbc-core/src/test/resources/parser/select_sub_query.xml
...-jdbc-core/src/test/resources/parser/select_sub_query.xml
+43
-0
未找到文件。
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/base/AbstractBaseParseSQLTest.java
浏览文件 @
4d01a607
...
...
@@ -6,6 +6,8 @@ import com.dangdang.ddframe.rdb.sharding.parsing.parser.context.OrderItem;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.condition.Column
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.condition.Condition
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.condition.Conditions
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.limit.Limit
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.limit.LimitValue
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.selectitem.AggregationSelectItem
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.table.Tables
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.expression.SQLExpression
;
...
...
@@ -29,8 +31,9 @@ public abstract class AbstractBaseParseSQLTest extends AbstractBaseParseTest {
protected
AbstractBaseParseSQLTest
(
final
String
testCaseName
,
final
String
sql
,
final
String
[]
parameters
,
final
Set
<
DatabaseType
>
types
,
final
Tables
expectedTables
,
final
com
.
dangdang
.
ddframe
.
rdb
.
sharding
.
parsing
.
parser
.
jaxb
.
Conditions
expectedConditions
,
final
SQLStatement
expectedSQLStatement
)
{
super
(
testCaseName
,
sql
,
parameters
,
types
,
expectedTables
,
expectedConditions
,
expectedSQLStatement
);
final
Tables
expectedTables
,
final
com
.
dangdang
.
ddframe
.
rdb
.
sharding
.
parsing
.
parser
.
jaxb
.
Conditions
expectedConditions
,
final
SQLStatement
expectedSQLStatement
,
final
com
.
dangdang
.
ddframe
.
rdb
.
sharding
.
parsing
.
parser
.
jaxb
.
Limit
expectedLimit
)
{
super
(
testCaseName
,
sql
,
parameters
,
types
,
expectedTables
,
expectedConditions
,
expectedSQLStatement
,
expectedLimit
);
}
protected
final
void
assertStatement
(
final
SQLStatement
actual
)
{
...
...
@@ -48,7 +51,7 @@ public abstract class AbstractBaseParseSQLTest extends AbstractBaseParseTest {
assertOrderBy
((
SelectStatement
)
actual
);
assertGroupBy
((
SelectStatement
)
actual
);
assertAggregationSelectItem
((
SelectStatement
)
actual
);
assertLimit
((
SelectStatement
)
actual
);
assertLimit
((
SelectStatement
)
actual
,
isPreparedStatement
);
}
}
...
...
@@ -100,6 +103,32 @@ public abstract class AbstractBaseParseSQLTest extends AbstractBaseParseTest {
return
result
;
}
private
Limit
buildExpectedLimit
(
final
boolean
isPreparedStatement
)
{
com
.
dangdang
.
ddframe
.
rdb
.
sharding
.
parsing
.
parser
.
jaxb
.
Limit
limit
=
getExpectedLimit
();
if
(
null
==
limit
)
{
return
null
;
}
Limit
result
=
new
Limit
(
true
);
if
(
isPreparedStatement
)
{
if
(
null
!=
limit
.
getOffsetParameterIndex
())
{
result
.
setOffset
(
new
LimitValue
(-
1
,
limit
.
getOffsetParameterIndex
()));
}
if
(
null
!=
limit
.
getRowCountParameterIndex
())
{
result
.
setRowCount
(
new
LimitValue
(-
1
,
limit
.
getRowCountParameterIndex
()));
}
}
else
{
if
(
null
!=
limit
.
getOffset
())
{
result
.
setOffset
(
new
LimitValue
(
limit
.
getOffset
(),
-
1
));
}
if
(
null
!=
limit
.
getRowCount
())
{
result
.
setRowCount
(
new
LimitValue
(
limit
.
getRowCount
(),
-
1
));
}
}
return
result
;
}
private
void
assertOrderBy
(
final
SelectStatement
actual
)
{
Iterator
<
OrderItem
>
orderByColumns
=
getExpectedOrderByColumns
().
iterator
();
for
(
OrderItem
each
:
actual
.
getOrderByItems
())
{
...
...
@@ -128,13 +157,13 @@ public abstract class AbstractBaseParseSQLTest extends AbstractBaseParseTest {
assertFalse
(
aggregationSelectItems
.
hasNext
());
}
private
void
assertLimit
(
final
SelectStatement
actual
)
{
private
void
assertLimit
(
final
SelectStatement
actual
,
final
boolean
isPreparedStatement
)
{
if
(
null
!=
actual
.
getLimit
())
{
if
(
null
!=
actual
.
getLimit
().
getOffset
())
{
assertTrue
(
new
ReflectionEquals
(
getExpectedLimit
(
).
getOffset
()).
matches
(
actual
.
getLimit
().
getOffset
()));
assertTrue
(
new
ReflectionEquals
(
buildExpectedLimit
(
isPreparedStatement
).
getOffset
()).
matches
(
actual
.
getLimit
().
getOffset
()));
}
if
(
null
!=
actual
.
getLimit
().
getRowCount
())
{
assertTrue
(
new
ReflectionEquals
(
getExpectedLimit
(
).
getRowCount
()).
matches
(
actual
.
getLimit
().
getRowCount
()));
assertTrue
(
new
ReflectionEquals
(
buildExpectedLimit
(
isPreparedStatement
).
getRowCount
()).
matches
(
actual
.
getLimit
().
getRowCount
()));
}
}
}
...
...
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/base/AbstractBaseParseTest.java
浏览文件 @
4d01a607
...
...
@@ -20,7 +20,7 @@ package com.dangdang.ddframe.rdb.sharding.parsing.parser.base;
import
com.dangdang.ddframe.rdb.common.jaxb.helper.SQLStatementHelper
;
import
com.dangdang.ddframe.rdb.sharding.constant.DatabaseType
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.OrderItem
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.
context.limit
.Limit
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.
jaxb
.Limit
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.selectitem.AggregationSelectItem
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.table.Tables
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.jaxb.Assert
;
...
...
@@ -72,22 +72,21 @@ public abstract class AbstractBaseParseTest {
protected
AbstractBaseParseTest
(
final
String
testCaseName
,
final
String
sql
,
final
String
[]
parameters
,
final
Set
<
DatabaseType
>
types
,
final
Tables
expectedTables
,
final
Conditions
expectedConditions
,
final
SQLStatement
expectedSQLStatement
)
{
final
Tables
expectedTables
,
final
Conditions
expectedConditions
,
final
SQLStatement
expectedSQLStatement
,
final
Limit
expectedLimit
)
{
this
.
sql
=
sql
;
this
.
parameters
=
parameters
;
this
.
types
=
types
;
this
.
expectedTables
=
expectedTables
;
this
.
expectedConditions
=
expectedConditions
;
this
.
expectedLimit
=
expectedLimit
;
if
(
expectedSQLStatement
instanceof
SelectStatement
)
{
expectedOrderByColumns
=
((
SelectStatement
)
expectedSQLStatement
).
getOrderByItems
();
expectedGroupByColumns
=
((
SelectStatement
)
expectedSQLStatement
).
getGroupByItems
();
expectedAggregationSelectItems
=
((
SelectStatement
)
expectedSQLStatement
).
getAggregationSelectItems
();
expectedLimit
=
((
SelectStatement
)
expectedSQLStatement
).
getLimit
();
}
else
{
expectedOrderByColumns
=
null
;
expectedGroupByColumns
=
null
;
expectedAggregationSelectItems
=
null
;
expectedLimit
=
null
;
}
}
...
...
@@ -117,7 +116,7 @@ public abstract class AbstractBaseParseTest {
}
private
static
Object
[]
getDataParameter
(
final
Assert
assertObj
)
{
final
Object
[]
result
=
new
Object
[
7
];
final
Object
[]
result
=
new
Object
[
8
];
result
[
0
]
=
assertObj
.
getId
();
result
[
1
]
=
SQLStatementHelper
.
getSql
(
assertObj
.
getId
());
result
[
2
]
=
ParserJAXBHelper
.
getParameters
(
assertObj
);
...
...
@@ -125,6 +124,7 @@ public abstract class AbstractBaseParseTest {
result
[
4
]
=
ParserJAXBHelper
.
getTables
(
assertObj
);
result
[
5
]
=
assertObj
.
getConditions
();
result
[
6
]
=
ParserJAXBHelper
.
getSelectStatement
(
assertObj
);
result
[
7
]
=
assertObj
.
getLimit
();
return
result
;
}
}
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/SQLParserTest.java
浏览文件 @
4d01a607
...
...
@@ -25,6 +25,7 @@ import com.dangdang.ddframe.rdb.sharding.parsing.parser.base.AbstractBaseParseSQ
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.base.AbstractBaseParseTest
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.table.Tables
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.jaxb.Conditions
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.jaxb.Limit
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.SQLStatement
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
...
...
@@ -39,8 +40,8 @@ public final class SQLParserTest extends AbstractBaseParseSQLTest {
public
SQLParserTest
(
final
String
testCaseName
,
final
String
sql
,
final
String
[]
parameters
,
final
Set
<
DatabaseType
>
types
,
final
Tables
expectedTables
,
final
Conditions
expectedConditions
,
final
SQLStatement
expectedSQLStatement
)
{
super
(
testCaseName
,
sql
,
parameters
,
types
,
expectedTables
,
expectedConditions
,
expectedSQLStatement
);
final
Tables
expectedTables
,
final
Conditions
expectedConditions
,
final
SQLStatement
expectedSQLStatement
,
final
Limit
expectedLimit
)
{
super
(
testCaseName
,
sql
,
parameters
,
types
,
expectedTables
,
expectedConditions
,
expectedSQLStatement
,
expectedLimit
);
}
@Parameters
(
name
=
"{0}"
)
...
...
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/jaxb/helper/ParserJAXBHelper.java
浏览文件 @
4d01a607
...
...
@@ -4,8 +4,6 @@ import com.dangdang.ddframe.rdb.sharding.constant.AggregationType;
import
com.dangdang.ddframe.rdb.sharding.constant.DatabaseType
;
import
com.dangdang.ddframe.rdb.sharding.constant.OrderType
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.OrderItem
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.limit.Limit
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.limit.LimitValue
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.selectitem.AggregationSelectItem
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.table.Table
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.table.Tables
;
...
...
@@ -104,16 +102,6 @@ public class ParserJAXBHelper {
});
result
.
getItems
().
addAll
(
selectItems
);
}
if
(
null
!=
assertObj
.
getLimit
())
{
Limit
limit
=
new
Limit
(
true
);
if
(
null
!=
assertObj
.
getLimit
().
getOffset
()
&&
null
!=
assertObj
.
getLimit
().
getOffsetParameterIndex
())
{
limit
.
setRowCount
(
new
LimitValue
(
assertObj
.
getLimit
().
getRowCount
(),
assertObj
.
getLimit
().
getRowCountParameterIndex
()));
limit
.
setOffset
(
new
LimitValue
(
assertObj
.
getLimit
().
getOffset
(),
assertObj
.
getLimit
().
getOffsetParameterIndex
()));
}
else
{
limit
.
setRowCount
(
new
LimitValue
(
assertObj
.
getLimit
().
getRowCount
(),
assertObj
.
getLimit
().
getRowCountParameterIndex
()));
}
result
.
setLimit
(
limit
);
}
return
result
;
}
}
sharding-jdbc-core/src/test/resources/parser/select_pagination.xml
0 → 100644
浏览文件 @
4d01a607
<?xml version="1.0" encoding="UTF-8"?>
<asserts>
<assert
id=
"assertSelectPaginationWithOffsetInPostgreSQL"
parameters=
"1,2,9,10,5"
>
<tables>
<table
name=
"t_order"
alias=
"o"
/>
<table
name=
"t_order_item"
alias=
"i"
/>
</tables>
<conditions>
<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>
</conditions>
<order-by-columns>
<order-by-column
name=
"item_id"
alias=
"ORDER_BY_DERIVED_0"
owner=
"i"
order-by-type=
"DESC"
/>
</order-by-columns>
<limit
offset=
"5"
offset-index=
"4"
/>
</assert>
<assert
id=
"assertSelectPaginationWithRowCount"
parameters=
"1,2,9,10,5"
>
<tables>
<table
name=
"t_order"
alias=
"o"
/>
<table
name=
"t_order_item"
alias=
"i"
/>
</tables>
<conditions>
<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>
</conditions>
<order-by-columns>
<order-by-column
name=
"item_id"
alias=
"ORDER_BY_DERIVED_0"
owner=
"i"
order-by-type=
"DESC"
/>
</order-by-columns>
<limit
row-count=
"5"
row-count-index=
"4"
/>
</assert>
<!--<assert id="assertSelectPaginationWithOffsetAndRowCount" parameters="1,2,9,10,5,3">-->
<!--<tables>-->
<!--<table name="t_order" alias="o" />-->
<!--<table name="t_order_item" alias="i" />-->
<!--</tables>-->
<!--<conditions>-->
<!--<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>-->
<!--</conditions>-->
<!--<order-by-columns>-->
<!--<order-by-column name="item_id" alias="ORDER_BY_DERIVED_0" owner="i" order-by-type="DESC" />-->
<!--</order-by-columns>-->
<!--<limit offset="5" offset-index="4" row-count="3" row-count-index="5" />-->
<!--</assert>-->
</asserts>
sharding-jdbc-core/src/test/resources/parser/select_sub_query.xml
浏览文件 @
4d01a607
...
...
@@ -15,4 +15,47 @@
<order-by-column
name=
"order_id"
owner=
"t"
order-by-type=
"ASC"
/>
</order-by-columns>
</assert>
<assert
id=
"assertSelectSubQueryMultiTableWithParentheses"
parameters=
"1,2"
>
<tables>
<table
name=
"t_order"
alias=
"o"
/>
<table
name=
"t_order_item"
alias=
"i"
/>
<table
name=
"t"
/>
</tables>
<conditions>
<condition
column-name=
"order_id"
table-name=
"t_order"
operator=
"IN"
>
<value
index=
"0"
literal=
"1"
type=
"int"
/>
<value
index=
"1"
literal=
"2"
type=
"int"
/>
</condition>
</conditions>
<order-by-columns>
<order-by-column
name=
"item_id"
owner=
"t"
order-by-type=
"ASC"
/>
</order-by-columns>
</assert>
<assert
id=
"assertSelectSubQueryWithOrderBy"
>
<tables>
<table
name=
"t_order"
/>
<table
name=
"t"
/>
</tables>
<aggregation-select-items>
<aggregation-select-item
inner-expression=
"(1)"
aggregation-type=
"COUNT"
alias=
"orders_count"
/>
</aggregation-select-items>
<order-by-columns>
<order-by-column
name=
"order_id"
order-by-type=
"DESC"
/>
</order-by-columns>
</assert>
<assert
id=
"assertSelectSubQueryWithGroupBy"
>
<tables>
<table
name=
"t_order_item"
/>
<table
name=
"t"
/>
</tables>
<aggregation-select-items>
<aggregation-select-item
inner-expression=
"(1)"
aggregation-type=
"COUNT"
alias=
"order_items_count"
/>
</aggregation-select-items>
<group-by-columns>
<group-by-column
name=
"order_id"
order-by-type=
"ASC"
/>
</group-by-columns>
<order-by-columns>
<order-by-column
name=
"order_id"
order-by-type=
"ASC"
/>
</order-by-columns>
</assert>
</asserts>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录