Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
8b786703
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 搜索 >>
提交
8b786703
编写于
5月 31, 2017
作者:
T
terrymanu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor Router parameters
上级
353a7ae5
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
10 addition
and
21 deletion
+10
-21
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/binding/BindingTablesRouter.java
...db/sharding/routing/type/binding/BindingTablesRouter.java
+2
-6
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/type/mixed/MixedTablesRouter.java
...me/rdb/sharding/routing/type/mixed/MixedTablesRouter.java
+2
-5
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/type/single/SingleTableRouter.java
...e/rdb/sharding/routing/type/single/SingleTableRouter.java
+3
-7
未找到文件。
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/router/ParsingSQLRouter.java
浏览文件 @
8b786703
...
...
@@ -106,13 +106,13 @@ public final class ParsingSQLRouter implements SQLRouter {
private
RoutingResult
route
(
final
List
<
Object
>
parameters
,
final
SQLStatement
sqlStatement
)
{
Collection
<
String
>
tableNames
=
sqlStatement
.
getTables
().
getTableNames
();
if
(
1
==
tableNames
.
size
())
{
return
new
SingleTableRouter
(
shardingRule
,
parameters
,
tableNames
.
iterator
().
next
(),
sqlStatement
,
sqlStatement
.
getType
()
).
route
();
return
new
SingleTableRouter
(
shardingRule
,
parameters
,
tableNames
.
iterator
().
next
(),
sqlStatement
).
route
();
}
if
(
shardingRule
.
isAllBindingTables
(
tableNames
))
{
return
new
BindingTablesRouter
(
shardingRule
,
parameters
,
tableNames
,
sqlStatement
,
sqlStatement
.
getType
()
).
route
();
return
new
BindingTablesRouter
(
shardingRule
,
parameters
,
tableNames
,
sqlStatement
).
route
();
}
// TODO 可配置是否执行笛卡尔积
return
new
MixedTablesRouter
(
shardingRule
,
parameters
,
tableNames
,
sqlStatement
,
sqlStatement
.
getType
()
).
route
();
return
new
MixedTablesRouter
(
shardingRule
,
parameters
,
tableNames
,
sqlStatement
).
route
();
}
private
void
logSQLRouteResult
(
final
SQLRouteResult
routeResult
,
final
List
<
Object
>
parameters
)
{
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/type/binding/BindingTablesRouter.java
浏览文件 @
8b786703
...
...
@@ -19,7 +19,6 @@ package com.dangdang.ddframe.rdb.sharding.routing.type.binding;
import
com.dangdang.ddframe.rdb.sharding.api.rule.BindingTableRule
;
import
com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule
;
import
com.dangdang.ddframe.rdb.sharding.constant.SQLType
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.SQLStatement
;
import
com.dangdang.ddframe.rdb.sharding.routing.type.single.SingleTableRouter
;
import
com.google.common.base.Optional
;
...
...
@@ -47,14 +46,11 @@ public final class BindingTablesRouter {
private
final
BindingTableRule
bindingTableRule
;
private
final
SQLType
sqlType
;
public
BindingTablesRouter
(
final
ShardingRule
shardingRule
,
final
List
<
Object
>
parameters
,
final
Collection
<
String
>
logicTables
,
final
SQLStatement
sqlStatement
,
final
SQLType
sqlType
)
{
public
BindingTablesRouter
(
final
ShardingRule
shardingRule
,
final
List
<
Object
>
parameters
,
final
Collection
<
String
>
logicTables
,
final
SQLStatement
sqlStatement
)
{
this
.
shardingRule
=
shardingRule
;
this
.
parameters
=
parameters
;
this
.
logicTables
=
logicTables
;
this
.
sqlStatement
=
sqlStatement
;
this
.
sqlType
=
sqlType
;
Optional
<
BindingTableRule
>
optionalBindingTableRule
=
shardingRule
.
findBindingTableRule
(
logicTables
.
iterator
().
next
());
Preconditions
.
checkState
(
optionalBindingTableRule
.
isPresent
());
bindingTableRule
=
optionalBindingTableRule
.
get
();
...
...
@@ -69,7 +65,7 @@ public final class BindingTablesRouter {
BindingRoutingResult
result
=
null
;
for
(
final
String
each
:
logicTables
)
{
if
(
null
==
result
)
{
result
=
new
BindingRoutingResult
(
new
SingleTableRouter
(
shardingRule
,
parameters
,
each
,
sqlStatement
,
sqlType
).
route
());
result
=
new
BindingRoutingResult
(
new
SingleTableRouter
(
shardingRule
,
parameters
,
each
,
sqlStatement
).
route
());
}
else
{
result
.
bind
(
bindingTableRule
,
each
);
}
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/type/mixed/MixedTablesRouter.java
浏览文件 @
8b786703
...
...
@@ -18,7 +18,6 @@
package
com.dangdang.ddframe.rdb.sharding.routing.type.mixed
;
import
com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule
;
import
com.dangdang.ddframe.rdb.sharding.constant.SQLType
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.SQLStatement
;
import
com.dangdang.ddframe.rdb.sharding.routing.RoutingResult
;
import
com.dangdang.ddframe.rdb.sharding.routing.type.binding.BindingTablesRouter
;
...
...
@@ -49,8 +48,6 @@ public final class MixedTablesRouter {
private
final
SQLStatement
sqlStatement
;
private
final
SQLType
sqlType
;
/**
* 路由.
*
...
...
@@ -62,11 +59,11 @@ public final class MixedTablesRouter {
Collection
<
String
>
remainingTables
=
new
ArrayList
<>(
logicTables
);
Collection
<
SingleRoutingResult
>
result
=
new
ArrayList
<>(
logicTables
.
size
());
if
(
1
<
bindingTables
.
size
())
{
result
.
add
(
new
BindingTablesRouter
(
shardingRule
,
parameters
,
bindingTables
,
sqlStatement
,
sqlType
).
route
());
result
.
add
(
new
BindingTablesRouter
(
shardingRule
,
parameters
,
bindingTables
,
sqlStatement
).
route
());
remainingTables
.
removeAll
(
bindingTables
);
}
for
(
String
each
:
remainingTables
)
{
SingleRoutingResult
routingResult
=
new
SingleTableRouter
(
shardingRule
,
parameters
,
each
,
sqlStatement
,
sqlType
).
route
();
SingleRoutingResult
routingResult
=
new
SingleTableRouter
(
shardingRule
,
parameters
,
each
,
sqlStatement
).
route
();
if
(
null
!=
routingResult
)
{
result
.
add
(
routingResult
);
}
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/routing/type/single/SingleTableRouter.java
浏览文件 @
8b786703
...
...
@@ -26,7 +26,6 @@ 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.constant.SQLType
;
import
com.dangdang.ddframe.rdb.sharding.hint.HintManagerHolder
;
import
com.dangdang.ddframe.rdb.sharding.hint.ShardingKey
;
import
com.dangdang.ddframe.rdb.sharding.parsing.parser.context.Column
;
...
...
@@ -63,14 +62,11 @@ public final class SingleTableRouter {
private
final
TableRule
tableRule
;
private
final
SQLType
sqlType
;
public
SingleTableRouter
(
final
ShardingRule
shardingRule
,
final
List
<
Object
>
parameters
,
final
String
logicTable
,
final
SQLStatement
sqlStatement
,
final
SQLType
sqlType
)
{
public
SingleTableRouter
(
final
ShardingRule
shardingRule
,
final
List
<
Object
>
parameters
,
final
String
logicTable
,
final
SQLStatement
sqlStatement
)
{
this
.
shardingRule
=
shardingRule
;
this
.
parameters
=
parameters
;
this
.
logicTable
=
logicTable
;
this
.
sqlStatement
=
sqlStatement
;
this
.
sqlType
=
sqlType
;
Optional
<
TableRule
>
tableRuleOptional
=
shardingRule
.
tryFindTableRule
(
logicTable
);
if
(
tableRuleOptional
.
isPresent
())
{
tableRule
=
tableRuleOptional
.
get
();
...
...
@@ -110,7 +106,7 @@ public final class SingleTableRouter {
shardingValues
=
getShardingValues
(
strategy
.
getShardingColumns
());
}
logBeforeRoute
(
"database"
,
logicTable
,
tableRule
.
getActualDatasourceNames
(),
strategy
.
getShardingColumns
(),
shardingValues
);
Collection
<
String
>
result
=
new
HashSet
<>(
strategy
.
doStaticSharding
(
sql
Type
,
tableRule
.
getActualDatasourceNames
(),
shardingValues
));
Collection
<
String
>
result
=
new
HashSet
<>(
strategy
.
doStaticSharding
(
sql
Statement
.
getType
()
,
tableRule
.
getActualDatasourceNames
(),
shardingValues
));
logAfterRoute
(
"database"
,
logicTable
,
result
);
Preconditions
.
checkState
(!
result
.
isEmpty
(),
"no database route info"
);
return
result
;
...
...
@@ -129,7 +125,7 @@ public final class SingleTableRouter {
if
(
tableRule
.
isDynamic
())
{
result
=
new
HashSet
<>(
strategy
.
doDynamicSharding
(
shardingValues
));
}
else
{
result
=
new
HashSet
<>(
strategy
.
doStaticSharding
(
sql
Type
,
tableRule
.
getActualTableNames
(
routedDataSources
),
shardingValues
));
result
=
new
HashSet
<>(
strategy
.
doStaticSharding
(
sql
Statement
.
getType
()
,
tableRule
.
getActualTableNames
(
routedDataSources
),
shardingValues
));
}
logAfterRoute
(
"table"
,
logicTable
,
result
);
Preconditions
.
checkState
(!
result
.
isEmpty
(),
"no table route info"
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录