Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
a4eb6219
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 搜索 >>
提交
a4eb6219
编写于
5月 30, 2017
作者:
T
terrymanu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
rename TableContext => Table, ShardingColumnContext => ShardingColumn
上级
94ba73b3
变更
23
隐藏空白更改
内联
并排
Showing
23 changed file
with
108 addition
and
115 deletion
+108
-115
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/api/rule/ShardingRule.java
.../dangdang/ddframe/rdb/sharding/api/rule/ShardingRule.java
+8
-8
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/SQLParser.java
...ngdang/ddframe/rdb/sharding/parsing/parser/SQLParser.java
+9
-9
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/context/AbstractSQLContext.java
...b/sharding/parsing/parser/context/AbstractSQLContext.java
+13
-13
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/context/ConditionContext.java
...rdb/sharding/parsing/parser/context/ConditionContext.java
+10
-10
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/context/InsertSQLContext.java
...rdb/sharding/parsing/parser/context/InsertSQLContext.java
+6
-6
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/context/SQLContext.java
...frame/rdb/sharding/parsing/parser/context/SQLContext.java
+2
-2
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/context/ShardingColumn.java
...e/rdb/sharding/parsing/parser/context/ShardingColumn.java
+5
-11
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/context/Table.java
...ng/ddframe/rdb/sharding/parsing/parser/context/Table.java
+1
-2
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/mysql/MySQLInsertParser.java
...rding/parsing/parser/dialect/mysql/MySQLInsertParser.java
+4
-4
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/type/insert/AbstractInsertParser.java
...ding/parsing/parser/type/insert/AbstractInsertParser.java
+8
-8
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/type/select/AbstractSelectParser.java
...ding/parsing/parser/type/select/AbstractSelectParser.java
+3
-3
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/rewrite/SQLRewriteEngine.java
...ngdang/ddframe/rdb/sharding/rewrite/SQLRewriteEngine.java
+2
-2
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/router/ParsingSQLRouter.java
...ddframe/rdb/sharding/routing/router/ParsingSQLRouter.java
+3
-3
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/type/single/SingleRouterUtil.java
...me/rdb/sharding/routing/type/single/SingleRouterUtil.java
+3
-3
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/api/rule/ShardingRuleTest.java
...gdang/ddframe/rdb/sharding/api/rule/ShardingRuleTest.java
+6
-6
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/merger/AllMergerTests.java
.../dangdang/ddframe/rdb/sharding/merger/AllMergerTests.java
+1
-1
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/merger/UnsupportedOperationDerivedShardingColumnResultSetTest.java
...supportedOperationDerivedShardingColumnResultSetTest.java
+1
-1
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/AbstractBaseParseTest.java
...g/ddframe/rdb/sharding/parsing/AbstractBaseParseTest.java
+8
-8
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/mysql/MySQLPreparedStatementForOneParameterTest.java
...sing/mysql/MySQLPreparedStatementForOneParameterTest.java
+2
-2
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/mysql/MySQLPreparedStatementForTowParametersTest.java
...ing/mysql/MySQLPreparedStatementForTowParametersTest.java
+3
-3
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/mysql/MySQLStatementTest.java
...dframe/rdb/sharding/parsing/mysql/MySQLStatementTest.java
+3
-3
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/mysql/OrParseTest.java
...gdang/ddframe/rdb/sharding/parsing/mysql/OrParseTest.java
+3
-3
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/routing/type/single/SingleRouterUtilTest.java
...db/sharding/routing/type/single/SingleRouterUtilTest.java
+4
-4
未找到文件。
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/api/rule/ShardingRule.java
浏览文件 @
a4eb6219
...
...
@@ -25,7 +25,7 @@ import com.dangdang.ddframe.rdb.sharding.exception.ShardingJdbcException;
import
com.dangdang.ddframe.rdb.sharding.keygen.DefaultKeyGenerator
;
import
com.dangdang.ddframe.rdb.sharding.keygen.KeyGenerator
;
import
com.dangdang.ddframe.rdb.sharding.keygen.KeyGeneratorFactory
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ShardingColumn
Context
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ShardingColumn
;
import
com.google.common.base.Optional
;
import
com.google.common.base.Preconditions
;
import
lombok.AccessLevel
;
...
...
@@ -205,22 +205,22 @@ public final class ShardingRule {
/**
* 判断是否为分片列.
*
* @param shardingColumn
Context
表对象
* @param shardingColumn 表对象
* @return 是否为分片列
*/
public
boolean
isShardingColumn
(
final
ShardingColumn
Context
shardingColumnContext
)
{
if
(
databaseShardingStrategy
.
getShardingColumns
().
contains
(
shardingColumn
Context
.
getColumnName
())
||
tableShardingStrategy
.
getShardingColumns
().
contains
(
shardingColumn
Context
.
getColumnName
()))
{
public
boolean
isShardingColumn
(
final
ShardingColumn
shardingColumn
)
{
if
(
databaseShardingStrategy
.
getShardingColumns
().
contains
(
shardingColumn
.
getColumnName
())
||
tableShardingStrategy
.
getShardingColumns
().
contains
(
shardingColumn
.
getColumnName
()))
{
return
true
;
}
for
(
TableRule
each
:
tableRules
)
{
if
(!
each
.
getLogicTable
().
equalsIgnoreCase
(
shardingColumn
Context
.
getTableName
()))
{
if
(!
each
.
getLogicTable
().
equalsIgnoreCase
(
shardingColumn
.
getTableName
()))
{
continue
;
}
if
(
null
!=
each
.
getDatabaseShardingStrategy
()
&&
each
.
getDatabaseShardingStrategy
().
getShardingColumns
().
contains
(
shardingColumn
Context
.
getColumnName
()))
{
if
(
null
!=
each
.
getDatabaseShardingStrategy
()
&&
each
.
getDatabaseShardingStrategy
().
getShardingColumns
().
contains
(
shardingColumn
.
getColumnName
()))
{
return
true
;
}
if
(
null
!=
each
.
getTableShardingStrategy
()
&&
each
.
getTableShardingStrategy
().
getShardingColumns
().
contains
(
shardingColumn
Context
.
getColumnName
()))
{
if
(
null
!=
each
.
getTableShardingStrategy
()
&&
each
.
getTableShardingStrategy
().
getShardingColumns
().
contains
(
shardingColumn
.
getColumnName
()))
{
return
true
;
}
}
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/SQLParser.java
浏览文件 @
a4eb6219
...
...
@@ -24,8 +24,8 @@ import com.dangdang.ddframe.rdb.sharding.parsing.lexer.token.Literals;
import
com.dangdang.ddframe.rdb.sharding.parsing.lexer.token.Symbol
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ConditionContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.SQLContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ShardingColumn
Context
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Table
Context
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ShardingColumn
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Table
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.exception.SQLParsingUnsupportedException
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.expr.SQLExpr
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.expr.SQLIdentifierExpr
;
...
...
@@ -188,7 +188,7 @@ public class SQLParser extends AbstractParser {
}
hasParentheses
=
true
;
}
Table
Context
tableContext
;
Table
table
;
final
int
beginPosition
=
getLexer
().
getCurrentToken
().
getEndPosition
()
-
getLexer
().
getCurrentToken
().
getLiterals
().
length
();
String
literals
=
getLexer
().
getCurrentToken
().
getLiterals
();
getLexer
().
nextToken
();
...
...
@@ -197,18 +197,18 @@ public class SQLParser extends AbstractParser {
if
(
hasParentheses
)
{
accept
(
Symbol
.
RIGHT_PAREN
);
}
table
Context
=
new
TableContext
(
SQLUtil
.
getExactlyValue
(
literals
),
parseAlias
());
table
=
new
Table
(
SQLUtil
.
getExactlyValue
(
literals
),
parseAlias
());
}
else
{
if
(
hasParentheses
)
{
accept
(
Symbol
.
RIGHT_PAREN
);
}
table
Context
=
new
TableContext
(
SQLUtil
.
getExactlyValue
(
literals
),
parseAlias
());
table
=
new
Table
(
SQLUtil
.
getExactlyValue
(
literals
),
parseAlias
());
}
if
(
skipJoin
())
{
throw
new
UnsupportedOperationException
(
"Cannot support Multiple-Table."
);
}
sqlContext
.
getSqlTokens
().
add
(
new
TableToken
(
beginPosition
,
literals
));
sqlContext
.
getTables
().
add
(
table
Context
);
sqlContext
.
getTables
().
add
(
table
);
}
/**
...
...
@@ -286,7 +286,7 @@ public class SQLParser extends AbstractParser {
SQLExpr
right
=
parseExpression
(
sqlContext
);
// TODO 如果有多表,且找不到column是哪个表的,则不加入condition,以后需要解析binding table
if
((
1
==
sqlContext
.
getTables
().
size
()
||
left
instanceof
SQLPropertyExpr
)
&&
(
right
instanceof
SQLNumberExpr
||
right
instanceof
SQLTextExpr
||
right
instanceof
SQLPlaceholderExpr
))
{
Optional
<
ShardingColumn
Context
>
column
=
sqlContext
.
findColumn
(
left
);
Optional
<
ShardingColumn
>
column
=
sqlContext
.
findColumn
(
left
);
if
(
column
.
isPresent
()
&&
shardingRule
.
isShardingColumn
(
column
.
get
()))
{
sqlContext
.
getConditionContext
().
add
(
new
ConditionContext
.
Condition
(
column
.
get
(),
right
));
}
...
...
@@ -303,7 +303,7 @@ public class SQLParser extends AbstractParser {
}
rights
.
add
(
parseExpression
(
sqlContext
));
}
while
(!
equalAny
(
Symbol
.
RIGHT_PAREN
));
Optional
<
ShardingColumn
Context
>
column
=
sqlContext
.
findColumn
(
left
);
Optional
<
ShardingColumn
>
column
=
sqlContext
.
findColumn
(
left
);
if
(
column
.
isPresent
()
&&
shardingRule
.
isShardingColumn
(
column
.
get
()))
{
sqlContext
.
getConditionContext
().
add
(
new
ConditionContext
.
Condition
(
column
.
get
(),
rights
));
}
...
...
@@ -316,7 +316,7 @@ public class SQLParser extends AbstractParser {
rights
.
add
(
parseExpression
(
sqlContext
));
accept
(
DefaultKeyword
.
AND
);
rights
.
add
(
parseExpression
(
sqlContext
));
Optional
<
ShardingColumn
Context
>
column
=
sqlContext
.
findColumn
(
left
);
Optional
<
ShardingColumn
>
column
=
sqlContext
.
findColumn
(
left
);
if
(
column
.
isPresent
()
&&
shardingRule
.
isShardingColumn
(
column
.
get
()))
{
sqlContext
.
getConditionContext
().
add
(
new
ConditionContext
.
Condition
(
column
.
get
(),
rights
.
get
(
0
),
rights
.
get
(
1
)));
}
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/context/AbstractSQLContext.java
浏览文件 @
a4eb6219
...
...
@@ -45,7 +45,7 @@ public abstract class AbstractSQLContext implements SQLContext {
private
final
SQLType
type
;
private
final
List
<
Table
Context
>
tables
=
new
ArrayList
<>();
private
final
List
<
Table
>
tables
=
new
ArrayList
<>();
private
ConditionContext
conditionContext
=
new
ConditionContext
();
...
...
@@ -57,7 +57,7 @@ public abstract class AbstractSQLContext implements SQLContext {
}
@Override
public
Optional
<
ShardingColumn
Context
>
findColumn
(
final
SQLExpr
expr
)
{
public
Optional
<
ShardingColumn
>
findColumn
(
final
SQLExpr
expr
)
{
if
(
expr
instanceof
SQLPropertyExpr
)
{
return
Optional
.
fromNullable
(
getColumnWithQualifiedName
((
SQLPropertyExpr
)
expr
));
}
...
...
@@ -67,18 +67,18 @@ public abstract class AbstractSQLContext implements SQLContext {
return
Optional
.
absent
();
}
private
ShardingColumn
Context
getColumnWithQualifiedName
(
final
SQLPropertyExpr
expr
)
{
Optional
<
Table
Context
>
table
=
findTable
((
expr
.
getOwner
()).
getName
());
private
ShardingColumn
getColumnWithQualifiedName
(
final
SQLPropertyExpr
expr
)
{
Optional
<
Table
>
table
=
findTable
((
expr
.
getOwner
()).
getName
());
return
expr
.
getOwner
()
instanceof
SQLIdentifierExpr
&&
table
.
isPresent
()
?
createColumn
(
expr
.
getName
(),
table
.
get
().
getName
())
:
null
;
}
private
Optional
<
Table
Context
>
findTable
(
final
String
tableNameOrAlias
)
{
Optional
<
Table
Context
>
tableFromName
=
findTableFromName
(
tableNameOrAlias
);
private
Optional
<
Table
>
findTable
(
final
String
tableNameOrAlias
)
{
Optional
<
Table
>
tableFromName
=
findTableFromName
(
tableNameOrAlias
);
return
tableFromName
.
isPresent
()
?
tableFromName
:
findTableFromAlias
(
tableNameOrAlias
);
}
private
Optional
<
Table
Context
>
findTableFromName
(
final
String
name
)
{
for
(
Table
Context
each
:
tables
)
{
private
Optional
<
Table
>
findTableFromName
(
final
String
name
)
{
for
(
Table
each
:
tables
)
{
if
(
each
.
getName
().
equalsIgnoreCase
(
SQLUtil
.
getExactlyValue
(
name
)))
{
return
Optional
.
of
(
each
);
}
...
...
@@ -86,8 +86,8 @@ public abstract class AbstractSQLContext implements SQLContext {
return
Optional
.
absent
();
}
private
Optional
<
Table
Context
>
findTableFromAlias
(
final
String
alias
)
{
for
(
Table
Context
each
:
tables
)
{
private
Optional
<
Table
>
findTableFromAlias
(
final
String
alias
)
{
for
(
Table
each
:
tables
)
{
if
(
each
.
getAlias
().
isPresent
()
&&
each
.
getAlias
().
get
().
equalsIgnoreCase
(
SQLUtil
.
getExactlyValue
(
alias
)))
{
return
Optional
.
of
(
each
);
}
...
...
@@ -95,12 +95,12 @@ public abstract class AbstractSQLContext implements SQLContext {
return
Optional
.
absent
();
}
private
ShardingColumn
Context
getColumnWithoutAlias
(
final
SQLIdentifierExpr
expr
)
{
private
ShardingColumn
getColumnWithoutAlias
(
final
SQLIdentifierExpr
expr
)
{
return
1
==
tables
.
size
()
?
createColumn
(
expr
.
getName
(),
tables
.
iterator
().
next
().
getName
())
:
null
;
}
private
ShardingColumn
Context
createColumn
(
final
String
columnName
,
final
String
tableName
)
{
return
new
ShardingColumn
Context
(
SQLUtil
.
getExactlyValue
(
columnName
),
SQLUtil
.
getExactlyValue
(
tableName
));
private
ShardingColumn
createColumn
(
final
String
columnName
,
final
String
tableName
)
{
return
new
ShardingColumn
(
SQLUtil
.
getExactlyValue
(
columnName
),
SQLUtil
.
getExactlyValue
(
tableName
));
}
@Override
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/context/ConditionContext.java
浏览文件 @
a4eb6219
...
...
@@ -41,7 +41,7 @@ import java.util.Map;
@ToString
public
final
class
ConditionContext
{
private
final
Map
<
ShardingColumn
Context
,
Condition
>
conditions
=
new
LinkedHashMap
<>();
private
final
Map
<
ShardingColumn
,
Condition
>
conditions
=
new
LinkedHashMap
<>();
/**
* 添加条件对象.
...
...
@@ -51,7 +51,7 @@ public final class ConditionContext {
// TODO 添加condition时进行判断, 比如:如果以存在 等于操作 的condition, 而已存在包含 =符号 的相同column的condition, 则不添加现有的condition, 而且删除原有condition
public
void
add
(
final
Condition
condition
)
{
// TODO 自关联有问题,表名可考虑使用别名对应
conditions
.
put
(
condition
.
getShardingColumn
Context
(),
condition
);
conditions
.
put
(
condition
.
getShardingColumn
(),
condition
);
}
/**
...
...
@@ -62,7 +62,7 @@ public final class ConditionContext {
* @return 条件对象
*/
public
Optional
<
Condition
>
find
(
final
String
table
,
final
String
column
)
{
return
Optional
.
fromNullable
(
conditions
.
get
(
new
ShardingColumn
Context
(
column
,
table
)));
return
Optional
.
fromNullable
(
conditions
.
get
(
new
ShardingColumn
(
column
,
table
)));
}
/**
...
...
@@ -75,7 +75,7 @@ public final class ConditionContext {
@EqualsAndHashCode
public
static
final
class
Condition
{
private
final
ShardingColumn
Context
shardingColumnContext
;
private
final
ShardingColumn
shardingColumn
;
private
final
ShardingOperator
operator
;
...
...
@@ -83,19 +83,19 @@ public final class ConditionContext {
private
final
List
<
Integer
>
valueIndices
=
new
LinkedList
<>();
public
Condition
(
final
ShardingColumn
Context
shardingColumnContext
,
final
SQLExpr
sqlExpr
)
{
this
(
shardingColumn
Context
,
ShardingOperator
.
EQUAL
);
public
Condition
(
final
ShardingColumn
shardingColumn
,
final
SQLExpr
sqlExpr
)
{
this
(
shardingColumn
,
ShardingOperator
.
EQUAL
);
initSQLExpr
(
sqlExpr
);
}
public
Condition
(
final
ShardingColumn
Context
shardingColumnContext
,
final
SQLExpr
beginSqlExpr
,
final
SQLExpr
endSqlExpr
)
{
this
(
shardingColumn
Context
,
ShardingOperator
.
BETWEEN
);
public
Condition
(
final
ShardingColumn
shardingColumn
,
final
SQLExpr
beginSqlExpr
,
final
SQLExpr
endSqlExpr
)
{
this
(
shardingColumn
,
ShardingOperator
.
BETWEEN
);
initSQLExpr
(
beginSqlExpr
);
initSQLExpr
(
endSqlExpr
);
}
public
Condition
(
final
ShardingColumn
Context
shardingColumnContext
,
final
List
<
SQLExpr
>
sqlExprs
)
{
this
(
shardingColumn
Context
,
ShardingOperator
.
IN
);
public
Condition
(
final
ShardingColumn
shardingColumn
,
final
List
<
SQLExpr
>
sqlExprs
)
{
this
(
shardingColumn
,
ShardingOperator
.
IN
);
for
(
SQLExpr
each
:
sqlExprs
)
{
initSQLExpr
(
each
);
}
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/context/InsertSQLContext.java
浏览文件 @
a4eb6219
...
...
@@ -42,7 +42,7 @@ import java.util.LinkedList;
@Setter
public
final
class
InsertSQLContext
extends
AbstractSQLContext
{
private
final
Collection
<
ShardingColumn
Context
>
shardingColumnContext
s
=
new
LinkedList
<>();
private
final
Collection
<
ShardingColumn
>
shardingColumn
s
=
new
LinkedList
<>();
private
GeneratedKeyContext
generatedKeyContext
;
...
...
@@ -85,13 +85,13 @@ public final class InsertSQLContext extends AbstractSQLContext {
private
void
appendGenerateKeyToken
(
final
ShardingRule
shardingRule
,
final
TableRule
tableRule
,
final
ItemsToken
valuesToken
)
{
Number
generatedKey
=
shardingRule
.
generateKey
(
tableRule
.
getLogicTable
());
valuesToken
.
getItems
().
add
(
generatedKey
.
toString
());
addCondition
(
shardingRule
,
new
ShardingColumn
Context
(
tableRule
.
getGenerateKeyColumn
(),
tableRule
.
getLogicTable
(),
true
),
new
SQLNumberExpr
(
generatedKey
));
addCondition
(
shardingRule
,
new
ShardingColumn
(
tableRule
.
getGenerateKeyColumn
(),
tableRule
.
getLogicTable
()
),
new
SQLNumberExpr
(
generatedKey
));
generatedKeyContext
=
new
GeneratedKeyContext
(
tableRule
.
getLogicTable
(),
-
1
,
generatedKey
);
}
private
void
appendGenerateKeyToken
(
final
ShardingRule
shardingRule
,
final
TableRule
tableRule
,
final
ItemsToken
valuesToken
,
final
int
parametersSize
)
{
valuesToken
.
getItems
().
add
(
"?"
);
addCondition
(
shardingRule
,
new
ShardingColumn
Context
(
tableRule
.
getGenerateKeyColumn
(),
tableRule
.
getLogicTable
(),
true
),
new
SQLPlaceholderExpr
(
parametersSize
));
addCondition
(
shardingRule
,
new
ShardingColumn
(
tableRule
.
getGenerateKeyColumn
(),
tableRule
.
getLogicTable
()
),
new
SQLPlaceholderExpr
(
parametersSize
));
generatedKeyContext
=
new
GeneratedKeyContext
(
tableRule
.
getGenerateKeyColumn
(),
parametersSize
,
null
);
}
...
...
@@ -104,9 +104,9 @@ public final class InsertSQLContext extends AbstractSQLContext {
return
Optional
.
absent
();
}
private
void
addCondition
(
final
ShardingRule
shardingRule
,
final
ShardingColumn
Context
shardingColumnContext
,
final
SQLExpr
sqlExpr
)
{
if
(
shardingRule
.
isShardingColumn
(
shardingColumn
Context
))
{
getConditionContext
().
add
(
new
ConditionContext
.
Condition
(
shardingColumn
Context
,
sqlExpr
));
private
void
addCondition
(
final
ShardingRule
shardingRule
,
final
ShardingColumn
shardingColumn
,
final
SQLExpr
sqlExpr
)
{
if
(
shardingRule
.
isShardingColumn
(
shardingColumn
))
{
getConditionContext
().
add
(
new
ConditionContext
.
Condition
(
shardingColumn
,
sqlExpr
));
}
}
}
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/context/SQLContext.java
浏览文件 @
a4eb6219
...
...
@@ -43,7 +43,7 @@ public interface SQLContext {
*
* @return 表解析对象集合
*/
List
<
Table
Context
>
getTables
();
List
<
Table
>
getTables
();
/**
* 获取条件对象上下文.
...
...
@@ -65,7 +65,7 @@ public interface SQLContext {
* @param expr SQL表达式
* @return 列对象
*/
Optional
<
ShardingColumn
Context
>
findColumn
(
SQLExpr
expr
);
Optional
<
ShardingColumn
>
findColumn
(
SQLExpr
expr
);
/**
* 获取排序上下文集合.
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/context/ShardingColumn
Context
.java
→
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/context/ShardingColumn.java
浏览文件 @
a4eb6219
...
...
@@ -17,27 +17,21 @@
package
com.dangdang.ddframe.rdb.sharding.parsing.parser.context
;
import
lombok.AllArgsConstructor
;
import
lombok.EqualsAndHashCode
;
import
lombok.Getter
;
import
lombok.RequiredArgsConstructor
;
/**
* 列对象.
*
分片
列对象.
*
* @author zhangliang
*/
@
All
ArgsConstructor
@
Required
ArgsConstructor
@Getter
@EqualsAndHashCode
(
exclude
=
"generateKey"
)
public
final
class
ShardingColumn
Context
{
@EqualsAndHashCode
public
final
class
ShardingColumn
{
private
final
String
columnName
;
private
final
String
tableName
;
private
final
boolean
generateKey
;
public
ShardingColumnContext
(
final
String
columnName
,
final
String
tableName
)
{
this
(
columnName
,
tableName
,
false
);
}
}
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/context/Table
Context
.java
→
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/context/Table.java
浏览文件 @
a4eb6219
...
...
@@ -25,13 +25,12 @@ import lombok.ToString;
/**
* 表上下文.
*
* @author gaohongtao
* @author zhangliang
*/
@RequiredArgsConstructor
@Getter
@ToString
public
final
class
Table
Context
{
public
final
class
Table
{
private
final
String
name
;
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/dialect/mysql/MySQLInsertParser.java
浏览文件 @
a4eb6219
...
...
@@ -26,7 +26,7 @@ import com.dangdang.ddframe.rdb.sharding.parsing.lexer.token.Symbol;
import
com.dangdang.ddframe.rdb.sharding.parsing.lexer.token.TokenType
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.SQLParser
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ConditionContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ShardingColumn
Context
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ShardingColumn
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.expr.SQLExpr
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.expr.SQLIgnoreExpr
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.expr.SQLNumberExpr
;
...
...
@@ -58,7 +58,7 @@ public final class MySQLInsertParser extends AbstractInsertParser {
ConditionContext
conditionContext
=
new
ConditionContext
();
do
{
getSqlParser
().
getLexer
().
nextToken
();
ShardingColumn
Context
shardingColumnContext
=
new
ShardingColumnContext
(
ShardingColumn
shardingColumn
=
new
ShardingColumn
(
SQLUtil
.
getExactlyValue
(
getSqlParser
().
getLexer
().
getCurrentToken
().
getLiterals
()),
getSqlContext
().
getTables
().
get
(
0
).
getName
());
getSqlParser
().
getLexer
().
nextToken
();
getSqlParser
().
accept
(
Symbol
.
EQ
);
...
...
@@ -79,8 +79,8 @@ public final class MySQLInsertParser extends AbstractInsertParser {
}
getSqlParser
().
getLexer
().
nextToken
();
if
(
getSqlParser
().
equalAny
(
Symbol
.
COMMA
,
DefaultKeyword
.
ON
,
Assist
.
END
))
{
if
(
getShardingRule
().
isShardingColumn
(
shardingColumn
Context
))
{
conditionContext
.
add
(
new
ConditionContext
.
Condition
(
shardingColumn
Context
,
sqlExpr
));
if
(
getShardingRule
().
isShardingColumn
(
shardingColumn
))
{
conditionContext
.
add
(
new
ConditionContext
.
Condition
(
shardingColumn
,
sqlExpr
));
}
}
else
{
getSqlParser
().
skipUntil
(
Symbol
.
COMMA
,
DefaultKeyword
.
ON
);
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/type/insert/AbstractInsertParser.java
浏览文件 @
a4eb6219
...
...
@@ -26,7 +26,7 @@ import com.dangdang.ddframe.rdb.sharding.parsing.lexer.token.TokenType;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ConditionContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.GeneratedKeyContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.InsertSQLContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ShardingColumn
Context
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ShardingColumn
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.exception.SQLParsingUnsupportedException
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.expr.SQLExpr
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.expr.SQLNumberExpr
;
...
...
@@ -113,7 +113,7 @@ public abstract class AbstractInsertParser implements SQLStatementParser {
}
private
void
parseColumns
()
{
Collection
<
ShardingColumn
Context
>
result
=
new
LinkedList
<>();
Collection
<
ShardingColumn
>
result
=
new
LinkedList
<>();
if
(
sqlParser
.
equalAny
(
Symbol
.
LEFT_PAREN
))
{
String
tableName
=
sqlContext
.
getTables
().
get
(
0
).
getName
();
Optional
<
String
>
generateKeyColumn
=
shardingRule
.
getGenerateKeyColumn
(
tableName
);
...
...
@@ -121,7 +121,7 @@ public abstract class AbstractInsertParser implements SQLStatementParser {
do
{
sqlParser
.
getLexer
().
nextToken
();
String
columnName
=
SQLUtil
.
getExactlyValue
(
sqlParser
.
getLexer
().
getCurrentToken
().
getLiterals
());
result
.
add
(
new
ShardingColumn
Context
(
columnName
,
tableName
));
result
.
add
(
new
ShardingColumn
(
columnName
,
tableName
));
sqlParser
.
getLexer
().
nextToken
();
if
(
generateKeyColumn
.
isPresent
()
&&
generateKeyColumn
.
get
().
equalsIgnoreCase
(
columnName
))
{
generateKeyColumnIndex
=
count
;
...
...
@@ -131,7 +131,7 @@ public abstract class AbstractInsertParser implements SQLStatementParser {
sqlContext
.
setColumnsListLastPosition
(
sqlParser
.
getLexer
().
getCurrentToken
().
getEndPosition
()
-
sqlParser
.
getLexer
().
getCurrentToken
().
getLiterals
().
length
());
sqlParser
.
getLexer
().
nextToken
();
}
sqlContext
.
getShardingColumn
Context
s
().
addAll
(
result
);
sqlContext
.
getShardingColumns
().
addAll
(
result
);
}
protected
Set
<
TokenType
>
getValuesKeywords
()
{
...
...
@@ -153,7 +153,7 @@ public abstract class AbstractInsertParser implements SQLStatementParser {
}
while
(
sqlParser
.
skipIfEqual
(
Symbol
.
COMMA
));
sqlContext
.
setValuesListLastPosition
(
sqlParser
.
getLexer
().
getCurrentToken
().
getEndPosition
()
-
sqlParser
.
getLexer
().
getCurrentToken
().
getLiterals
().
length
());
int
count
=
0
;
for
(
ShardingColumn
Context
each
:
sqlContext
.
getShardingColumnContext
s
())
{
for
(
ShardingColumn
each
:
sqlContext
.
getShardingColumn
s
())
{
SQLExpr
sqlExpr
=
sqlExprs
.
get
(
count
);
if
(
getShardingRule
().
isShardingColumn
(
each
))
{
conditionContext
.
add
(
new
ConditionContext
.
Condition
(
each
,
sqlExpr
));
...
...
@@ -170,12 +170,12 @@ public abstract class AbstractInsertParser implements SQLStatementParser {
while
(
sqlParser
.
equalAny
(
Symbol
.
COMMA
));
}
private
GeneratedKeyContext
createGeneratedKeyContext
(
final
ShardingColumn
Context
shardingColumnContext
,
final
SQLExpr
sqlExpr
)
{
private
GeneratedKeyContext
createGeneratedKeyContext
(
final
ShardingColumn
shardingColumn
,
final
SQLExpr
sqlExpr
)
{
GeneratedKeyContext
result
;
if
(
sqlExpr
instanceof
SQLPlaceholderExpr
)
{
result
=
new
GeneratedKeyContext
(
shardingColumn
Context
.
getColumnName
(),
((
SQLPlaceholderExpr
)
sqlExpr
).
getIndex
(),
null
);
result
=
new
GeneratedKeyContext
(
shardingColumn
.
getColumnName
(),
((
SQLPlaceholderExpr
)
sqlExpr
).
getIndex
(),
null
);
}
else
if
(
sqlExpr
instanceof
SQLNumberExpr
)
{
result
=
new
GeneratedKeyContext
(
shardingColumn
Context
.
getColumnName
(),
-
1
,
((
SQLNumberExpr
)
sqlExpr
).
getNumber
());
result
=
new
GeneratedKeyContext
(
shardingColumn
.
getColumnName
(),
-
1
,
((
SQLNumberExpr
)
sqlExpr
).
getNumber
());
}
else
{
throw
new
ShardingJdbcException
(
"Generated key only support number."
);
}
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parsing/parser/type/select/AbstractSelectParser.java
浏览文件 @
a4eb6219
...
...
@@ -29,7 +29,7 @@ import com.dangdang.ddframe.rdb.sharding.parsing.parser.context.GroupByContext;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.OrderByContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.SelectItemContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.SelectSQLContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Table
Context
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Table
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.exception.SQLParsingUnsupportedException
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.expr.SQLExpr
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.expr.SQLIdentifierExpr
;
...
...
@@ -291,7 +291,7 @@ public abstract class AbstractSelectParser implements SQLStatementParser {
}
// FIXME 根据shardingRule过滤table
sqlContext
.
getSqlTokens
().
add
(
new
TableToken
(
beginPosition
,
literals
));
sqlContext
.
getTables
().
add
(
new
Table
Context
(
SQLUtil
.
getExactlyValue
(
literals
),
sqlParser
.
parseAlias
()));
sqlContext
.
getTables
().
add
(
new
Table
(
SQLUtil
.
getExactlyValue
(
literals
),
sqlParser
.
parseAlias
()));
}
protected
void
parseJoinTable
()
{
...
...
@@ -316,7 +316,7 @@ public abstract class AbstractSelectParser implements SQLStatementParser {
return
;
}
SQLPropertyExpr
sqlPropertyExpr
=
(
SQLPropertyExpr
)
sqlExpr
;
for
(
Table
Context
each
:
sqlContext
.
getTables
())
{
for
(
Table
each
:
sqlContext
.
getTables
())
{
if
(
each
.
getName
().
equalsIgnoreCase
(
SQLUtil
.
getExactlyValue
(
sqlPropertyExpr
.
getOwner
().
getName
())))
{
sqlContext
.
getSqlTokens
().
add
(
new
TableToken
(
startPosition
,
sqlPropertyExpr
.
getOwner
().
getName
()));
}
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/rewrite/SQLRewriteEngine.java
浏览文件 @
a4eb6219
...
...
@@ -20,7 +20,7 @@ package com.dangdang.ddframe.rdb.sharding.rewrite;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.LimitContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.SQLContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Table
Context
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Table
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.token.ItemsToken
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.token.OffsetLimitToken
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.token.RowCountLimitToken
;
...
...
@@ -52,7 +52,7 @@ public final class SQLRewriteEngine {
public
SQLRewriteEngine
(
final
String
originalSQL
,
final
SQLContext
sqlContext
)
{
this
.
originalSQL
=
originalSQL
;
sqlTokens
.
addAll
(
sqlContext
.
getSqlTokens
());
for
(
Table
Context
each
:
sqlContext
.
getTables
())
{
for
(
Table
each
:
sqlContext
.
getTables
())
{
tableNames
.
add
(
each
.
getName
());
}
limit
=
sqlContext
.
getLimitContext
();
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/router/ParsingSQLRouter.java
浏览文件 @
a4eb6219
...
...
@@ -26,7 +26,7 @@ import com.dangdang.ddframe.rdb.sharding.parsing.SQLParsingEngine;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.GeneratedKeyContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.InsertSQLContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.SQLContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Table
Context
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Table
;
import
com.dangdang.ddframe.rdb.sharding.rewrite.SQLBuilder
;
import
com.dangdang.ddframe.rdb.sharding.rewrite.SQLRewriteEngine
;
import
com.dangdang.ddframe.rdb.sharding.routing.RoutingResult
;
...
...
@@ -108,10 +108,10 @@ public final class ParsingSQLRouter implements SQLRouter {
}
private
RoutingResult
route
(
final
List
<
Object
>
parameters
,
final
SQLContext
sqlContext
)
{
Set
<
String
>
logicTables
=
Sets
.
newLinkedHashSet
(
Collections2
.
transform
(
sqlContext
.
getTables
(),
new
Function
<
Table
Context
,
String
>()
{
Set
<
String
>
logicTables
=
Sets
.
newLinkedHashSet
(
Collections2
.
transform
(
sqlContext
.
getTables
(),
new
Function
<
Table
,
String
>()
{
@Override
public
String
apply
(
final
Table
Context
input
)
{
public
String
apply
(
final
Table
input
)
{
return
input
.
getName
();
}
}));
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/type/single/SingleRouterUtil.java
浏览文件 @
a4eb6219
...
...
@@ -47,11 +47,11 @@ public final class SingleRouterUtil {
case
EQUAL:
case
IN:
if
(
1
==
conditionValues
.
size
())
{
return
new
ShardingValue
<
Comparable
<?>>(
condition
.
getShardingColumn
Context
().
getTableName
(),
condition
.
getShardingColumnContext
().
getColumnName
(),
conditionValues
.
get
(
0
));
return
new
ShardingValue
<
Comparable
<?>>(
condition
.
getShardingColumn
().
getTableName
(),
condition
.
getShardingColumn
().
getColumnName
(),
conditionValues
.
get
(
0
));
}
return
new
ShardingValue
<>(
condition
.
getShardingColumn
Context
().
getTableName
(),
condition
.
getShardingColumnContext
().
getColumnName
(),
conditionValues
);
return
new
ShardingValue
<>(
condition
.
getShardingColumn
().
getTableName
(),
condition
.
getShardingColumn
().
getColumnName
(),
conditionValues
);
case
BETWEEN:
return
new
ShardingValue
<>(
condition
.
getShardingColumn
Context
().
getTableName
(),
condition
.
getShardingColumnContext
().
getColumnName
(),
return
new
ShardingValue
<>(
condition
.
getShardingColumn
().
getTableName
(),
condition
.
getShardingColumn
().
getColumnName
(),
Range
.
range
(
conditionValues
.
get
(
0
),
BoundType
.
CLOSED
,
conditionValues
.
get
(
1
),
BoundType
.
CLOSED
));
default
:
throw
new
UnsupportedOperationException
(
condition
.
getOperator
().
getExpression
());
...
...
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/api/rule/ShardingRuleTest.java
浏览文件 @
a4eb6219
...
...
@@ -21,7 +21,7 @@ import com.dangdang.ddframe.rdb.sharding.api.strategy.database.DatabaseShardingS
import
com.dangdang.ddframe.rdb.sharding.api.strategy.database.NoneDatabaseShardingAlgorithm
;
import
com.dangdang.ddframe.rdb.sharding.api.strategy.table.NoneTableShardingAlgorithm
;
import
com.dangdang.ddframe.rdb.sharding.api.strategy.table.TableShardingStrategy
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ShardingColumn
Context
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ShardingColumn
;
import
org.junit.Test
;
import
javax.sql.DataSource
;
...
...
@@ -195,31 +195,31 @@ public final class ShardingRuleTest {
@Test
public
void
assertIsShardingColumnForDefaultDatabaseShardingStrategy
()
{
assertTrue
(
ShardingRule
.
builder
().
databaseShardingStrategy
(
createDatabaseShardingStrategy
()).
dataSourceRule
(
createDataSourceRule
())
.
tableRules
(
Collections
.
singletonList
(
createTableRuleWithAllStrategies
())).
build
().
isShardingColumn
(
new
ShardingColumn
Context
(
"column"
,
""
)));
.
tableRules
(
Collections
.
singletonList
(
createTableRuleWithAllStrategies
())).
build
().
isShardingColumn
(
new
ShardingColumn
(
"column"
,
""
)));
}
@Test
public
void
assertIsShardingColumnForDefaultTableShardingStrategy
()
{
assertTrue
(
ShardingRule
.
builder
().
tableShardingStrategy
(
createTableShardingStrategy
()).
dataSourceRule
(
createDataSourceRule
())
.
tableRules
(
Collections
.
singletonList
(
createTableRuleWithAllStrategies
())).
build
().
isShardingColumn
(
new
ShardingColumn
Context
(
"column"
,
""
)));
.
tableRules
(
Collections
.
singletonList
(
createTableRuleWithAllStrategies
())).
build
().
isShardingColumn
(
new
ShardingColumn
(
"column"
,
""
)));
}
@Test
public
void
assertIsShardingColumnForDatabaseShardingStrategy
()
{
assertTrue
(
ShardingRule
.
builder
().
dataSourceRule
(
createDataSourceRule
())
.
tableRules
(
Collections
.
singletonList
(
createTableRuleWithAllStrategies
())).
build
().
isShardingColumn
(
new
ShardingColumn
Context
(
"column"
,
"logicTable"
)));
.
tableRules
(
Collections
.
singletonList
(
createTableRuleWithAllStrategies
())).
build
().
isShardingColumn
(
new
ShardingColumn
(
"column"
,
"logicTable"
)));
}
@Test
public
void
assertIsShardingColumnForTableShardingStrategy
()
{
assertTrue
(
ShardingRule
.
builder
().
dataSourceRule
(
createDataSourceRule
())
.
tableRules
(
Collections
.
singletonList
(
createTableRuleWithTableStrategies
())).
build
().
isShardingColumn
(
new
ShardingColumn
Context
(
"column"
,
"logicTable"
)));
.
tableRules
(
Collections
.
singletonList
(
createTableRuleWithTableStrategies
())).
build
().
isShardingColumn
(
new
ShardingColumn
(
"column"
,
"logicTable"
)));
}
@Test
public
void
assertIsNotShardingColumn
()
{
assertFalse
(
ShardingRule
.
builder
().
dataSourceRule
(
createDataSourceRule
())
.
tableRules
(
Collections
.
singletonList
(
createTableRuleWithAllStrategies
())).
build
().
isShardingColumn
(
new
ShardingColumn
Context
(
"column"
,
"otherTable"
)));
.
tableRules
(
Collections
.
singletonList
(
createTableRuleWithAllStrategies
())).
build
().
isShardingColumn
(
new
ShardingColumn
(
"column"
,
"otherTable"
)));
}
private
ShardingRule
createShardingRule
()
{
...
...
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/merger/AllMergerTests.java
浏览文件 @
a4eb6219
...
...
@@ -50,7 +50,7 @@ import org.junit.runners.Suite;
ComparableAggregationUnitTest
.
class
,
AccumulationAggregationUnitTest
.
class
,
AverageAggregationUnitTest
.
class
,
UnsupportedOperationDerivedShardingColumn
Context
ResultSetTest
.
class
,
UnsupportedOperationDerivedShardingColumnResultSetTest
.
class
,
MemoryResultSetTest
.
class
,
ResultSetUtilTest
.
class
})
...
...
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/merger/UnsupportedOperationDerivedShardingColumn
Context
ResultSetTest.java
→
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/merger/UnsupportedOperationDerivedShardingColumnResultSetTest.java
浏览文件 @
a4eb6219
...
...
@@ -27,7 +27,7 @@ import java.sql.SQLException;
import
java.sql.SQLFeatureNotSupportedException
;
import
java.util.HashMap
;
public
class
UnsupportedOperationDerivedShardingColumn
Context
ResultSetTest
extends
AbstractShardingDataBasesOnlyDBUnitTest
{
public
class
UnsupportedOperationDerivedShardingColumnResultSetTest
extends
AbstractShardingDataBasesOnlyDBUnitTest
{
private
ResultSet
actual
;
...
...
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/AbstractBaseParseTest.java
浏览文件 @
a4eb6219
...
...
@@ -30,8 +30,8 @@ import com.dangdang.ddframe.rdb.sharding.parsing.parser.context.LimitContext;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.OrderByContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.SQLContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.SelectSQLContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ShardingColumn
Context
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Table
Context
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ShardingColumn
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Table
;
import
com.google.common.base.Function
;
import
com.google.common.base.Optional
;
import
com.google.common.base.Strings
;
...
...
@@ -58,7 +58,7 @@ public abstract class AbstractBaseParseTest {
private
final
String
expectedSQL
;
private
final
Iterator
<
Table
Context
>
expectedTables
;
private
final
Iterator
<
Table
>
expectedTables
;
private
final
Iterator
<
ConditionContext
>
expectedConditionContexts
;
...
...
@@ -71,7 +71,7 @@ public abstract class AbstractBaseParseTest {
private
final
LimitContext
limit
;
protected
AbstractBaseParseTest
(
final
String
testCaseName
,
final
String
sql
,
final
String
expectedSQL
,
final
Collection
<
TableContext
>
expectedTables
,
final
Collection
<
ConditionContext
>
expectedConditionContext
,
final
SQLContext
expectedSQLContext
)
{
final
Collection
<
Table
>
expectedTables
,
final
Collection
<
ConditionContext
>
expectedConditionContext
,
final
SQLContext
expectedSQLContext
)
{
this
.
testCaseName
=
testCaseName
;
this
.
sql
=
sql
;
this
.
expectedSQL
=
expectedSQL
;
...
...
@@ -113,11 +113,11 @@ public abstract class AbstractBaseParseTest {
result
[
0
]
=
assertObj
.
getId
();
result
[
1
]
=
assertObj
.
getSql
();
result
[
2
]
=
assertObj
.
getExpectedSQL
();
result
[
3
]
=
Lists
.
transform
(
assertObj
.
getTables
(),
new
Function
<
com
.
dangdang
.
ddframe
.
rdb
.
sharding
.
parsing
.
jaxb
.
Table
,
Table
Context
>()
{
result
[
3
]
=
Lists
.
transform
(
assertObj
.
getTables
(),
new
Function
<
com
.
dangdang
.
ddframe
.
rdb
.
sharding
.
parsing
.
jaxb
.
Table
,
Table
>()
{
@Override
public
Table
Context
apply
(
final
com
.
dangdang
.
ddframe
.
rdb
.
sharding
.
parsing
.
jaxb
.
Table
input
)
{
return
new
Table
Context
(
input
.
getName
(),
Optional
.
of
(
input
.
getAlias
()));
public
Table
apply
(
final
com
.
dangdang
.
ddframe
.
rdb
.
sharding
.
parsing
.
jaxb
.
Table
input
)
{
return
new
Table
(
input
.
getName
(),
Optional
.
of
(
input
.
getAlias
()));
}
});
if
(
null
==
assertObj
.
getConditionContexts
())
{
...
...
@@ -133,7 +133,7 @@ public abstract class AbstractBaseParseTest {
}
for
(
com
.
dangdang
.
ddframe
.
rdb
.
sharding
.
parsing
.
jaxb
.
Condition
each
:
input
.
getConditions
())
{
ConditionContext
.
Condition
condition
=
new
ConditionContext
.
Condition
(
new
ShardingColumn
Context
(
each
.
getColumnName
(),
each
.
getTableName
()),
ShardingOperator
.
valueOf
(
each
.
getOperator
().
toUpperCase
()));
new
ShardingColumn
(
each
.
getColumnName
(),
each
.
getTableName
()),
ShardingOperator
.
valueOf
(
each
.
getOperator
().
toUpperCase
()));
condition
.
getValues
().
addAll
(
Lists
.
transform
(
each
.
getValues
(),
new
Function
<
Value
,
Comparable
<?>>()
{
@Override
...
...
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/mysql/MySQLPreparedStatementForOneParameterTest.java
浏览文件 @
a4eb6219
...
...
@@ -23,7 +23,7 @@ import com.dangdang.ddframe.rdb.sharding.parsing.AbstractBaseParseTest;
import
com.dangdang.ddframe.rdb.sharding.parsing.SQLParsingEngine
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ConditionContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.SQLContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Table
Context
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Table
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.junit.runners.Parameterized
;
...
...
@@ -34,7 +34,7 @@ import java.util.Collection;
@RunWith
(
Parameterized
.
class
)
public
final
class
MySQLPreparedStatementForOneParameterTest
extends
AbstractBaseParseTest
{
public
MySQLPreparedStatementForOneParameterTest
(
final
String
testCaseName
,
final
String
sql
,
final
String
expectedSQL
,
final
Collection
<
Table
Context
>
expectedTables
,
public
MySQLPreparedStatementForOneParameterTest
(
final
String
testCaseName
,
final
String
sql
,
final
String
expectedSQL
,
final
Collection
<
Table
>
expectedTables
,
final
Collection
<
ConditionContext
>
expectedConditionContext
,
final
SQLContext
expectedSQLContext
)
{
super
(
testCaseName
,
sql
,
expectedSQL
,
expectedTables
,
expectedConditionContext
,
expectedSQLContext
);
}
...
...
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/mysql/MySQLPreparedStatementForTowParametersTest.java
浏览文件 @
a4eb6219
...
...
@@ -23,7 +23,7 @@ import com.dangdang.ddframe.rdb.sharding.parsing.AbstractBaseParseTest;
import
com.dangdang.ddframe.rdb.sharding.parsing.SQLParsingEngine
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ConditionContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.SQLContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Table
Context
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Table
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.junit.runners.Parameterized
;
...
...
@@ -35,8 +35,8 @@ import java.util.Collection;
public
final
class
MySQLPreparedStatementForTowParametersTest
extends
AbstractBaseParseTest
{
public
MySQLPreparedStatementForTowParametersTest
(
final
String
testCaseName
,
final
String
sql
,
final
String
expectedSQL
,
final
Collection
<
Table
Context
>
expectedTables
,
final
Collection
<
ConditionContext
>
expectedConditionContext
,
final
SQLContext
expectedSQLContext
)
{
final
String
testCaseName
,
final
String
sql
,
final
String
expectedSQL
,
final
Collection
<
Table
>
expectedTables
,
final
Collection
<
ConditionContext
>
expectedConditionContext
,
final
SQLContext
expectedSQLContext
)
{
super
(
testCaseName
,
sql
,
expectedSQL
,
expectedTables
,
expectedConditionContext
,
expectedSQLContext
);
}
...
...
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/mysql/MySQLStatementTest.java
浏览文件 @
a4eb6219
...
...
@@ -23,7 +23,7 @@ import com.dangdang.ddframe.rdb.sharding.parsing.AbstractBaseParseTest;
import
com.dangdang.ddframe.rdb.sharding.parsing.SQLParsingEngine
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ConditionContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.SQLContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Table
Context
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Table
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.junit.runners.Parameterized
;
...
...
@@ -35,8 +35,8 @@ import java.util.Collection;
public
final
class
MySQLStatementTest
extends
AbstractBaseParseTest
{
public
MySQLStatementTest
(
final
String
testCaseName
,
final
String
sql
,
final
String
expectedSQL
,
final
Collection
<
Table
Context
>
expectedTables
,
final
Collection
<
ConditionContext
>
expectedConditionContext
,
final
SQLContext
expectedSQLContext
)
{
final
String
testCaseName
,
final
String
sql
,
final
String
expectedSQL
,
final
Collection
<
Table
>
expectedTables
,
final
Collection
<
ConditionContext
>
expectedConditionContext
,
final
SQLContext
expectedSQLContext
)
{
super
(
testCaseName
,
sql
,
expectedSQL
,
expectedTables
,
expectedConditionContext
,
expectedSQLContext
);
}
...
...
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/parsing/mysql/OrParseTest.java
浏览文件 @
a4eb6219
...
...
@@ -23,7 +23,7 @@ import com.dangdang.ddframe.rdb.sharding.parsing.AbstractBaseParseTest;
import
com.dangdang.ddframe.rdb.sharding.parsing.SQLParsingEngine
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ConditionContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.SQLContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Table
Context
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Table
;
import
org.junit.Ignore
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
...
...
@@ -36,8 +36,8 @@ import java.util.Collection;
public
final
class
OrParseTest
extends
AbstractBaseParseTest
{
public
OrParseTest
(
final
String
testCaseName
,
final
String
sql
,
final
String
expectedSQL
,
final
Collection
<
Table
Context
>
expectedTables
,
final
Collection
<
ConditionContext
>
expectedConditionContext
,
final
SQLContext
expectedSQLContext
)
{
final
String
testCaseName
,
final
String
sql
,
final
String
expectedSQL
,
final
Collection
<
Table
>
expectedTables
,
final
Collection
<
ConditionContext
>
expectedConditionContext
,
final
SQLContext
expectedSQLContext
)
{
super
(
testCaseName
,
sql
,
expectedSQL
,
expectedTables
,
expectedConditionContext
,
expectedSQLContext
);
}
...
...
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/routing/type/single/SingleRouterUtilTest.java
浏览文件 @
a4eb6219
...
...
@@ -20,7 +20,7 @@ package com.dangdang.ddframe.rdb.sharding.routing.type.single;
import
com.dangdang.ddframe.rdb.sharding.api.ShardingValue
;
import
com.dangdang.ddframe.rdb.sharding.constant.ShardingOperator
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ConditionContext
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ShardingColumn
Context
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.ShardingColumn
;
import
org.junit.Test
;
import
java.util.Collections
;
...
...
@@ -33,12 +33,12 @@ public class SingleRouterUtilTest {
@Test
public
void
testConvertConditionToShardingValue
()
throws
Exception
{
ConditionContext
.
Condition
condition
=
new
ConditionContext
.
Condition
(
new
ShardingColumn
Context
(
"test"
,
"test"
),
ShardingOperator
.
EQUAL
);
ConditionContext
.
Condition
condition
=
new
ConditionContext
.
Condition
(
new
ShardingColumn
(
"test"
,
"test"
),
ShardingOperator
.
EQUAL
);
condition
.
getValues
().
add
(
1
);
ShardingValue
<?>
shardingValue
=
SingleRouterUtil
.
convertConditionToShardingValue
(
condition
,
Collections
.
emptyList
());
assertThat
(
shardingValue
.
getType
(),
is
(
ShardingValue
.
ShardingValueType
.
SINGLE
));
assertThat
((
Integer
)
shardingValue
.
getValue
(),
is
(
1
));
condition
=
new
ConditionContext
.
Condition
(
new
ShardingColumn
Context
(
"test"
,
"test"
),
ShardingOperator
.
IN
);
condition
=
new
ConditionContext
.
Condition
(
new
ShardingColumn
(
"test"
,
"test"
),
ShardingOperator
.
IN
);
condition
.
getValues
().
add
(
1
);
condition
.
getValues
().
add
(
2
);
shardingValue
=
SingleRouterUtil
.
convertConditionToShardingValue
(
condition
,
Collections
.
emptyList
());
...
...
@@ -46,7 +46,7 @@ public class SingleRouterUtilTest {
Iterator
<?>
iterator
=
shardingValue
.
getValues
().
iterator
();
assertThat
((
Integer
)
iterator
.
next
(),
is
(
1
));
assertThat
((
Integer
)
iterator
.
next
(),
is
(
2
));
condition
=
new
ConditionContext
.
Condition
(
new
ShardingColumn
Context
(
"test"
,
"test"
),
ShardingOperator
.
BETWEEN
);
condition
=
new
ConditionContext
.
Condition
(
new
ShardingColumn
(
"test"
,
"test"
),
ShardingOperator
.
BETWEEN
);
condition
.
getValues
().
add
(
1
);
condition
.
getValues
().
add
(
2
);
shardingValue
=
SingleRouterUtil
.
convertConditionToShardingValue
(
condition
,
Collections
.
emptyList
());
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录