Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
981b8442
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 搜索 >>
提交
981b8442
编写于
4月 25, 2016
作者:
T
terrymanu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor
上级
487df317
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
45 addition
and
23 deletion
+45
-23
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/api/strategy/common/ShardingStrategy.java
...me/rdb/sharding/api/strategy/common/ShardingStrategy.java
+8
-9
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/result/router/SQLStatementType.java
...e/rdb/sharding/parser/result/router/SQLStatementType.java
+1
-0
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/AllTests.java
...core/src/test/java/com/dangdang/ddframe/rdb/AllTests.java
+2
-0
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/api/AllApiTest.java
...ava/com/dangdang/ddframe/rdb/sharding/api/AllApiTest.java
+0
-2
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/api/rule/fixture/TestDataSource.java
...ddframe/rdb/sharding/api/rule/fixture/TestDataSource.java
+3
-6
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/constants/AllConstantsTest.java
...dang/ddframe/rdb/sharding/constants/AllConstantsTest.java
+26
-0
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/router/DMLTest.java
...ava/com/dangdang/ddframe/rdb/sharding/router/DMLTest.java
+5
-6
未找到文件。
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/api/strategy/common/ShardingStrategy.java
浏览文件 @
981b8442
...
...
@@ -18,8 +18,8 @@
package
com.dangdang.ddframe.rdb.sharding.api.strategy.common
;
import
com.dangdang.ddframe.rdb.sharding.api.ShardingValue
;
import
com.dangdang.ddframe.rdb.sharding.exception.ShardingJdbcException
;
import
com.dangdang.ddframe.rdb.sharding.parser.result.router.SQLStatementType
;
import
com.google.common.base.Preconditions
;
import
lombok.Getter
;
import
lombok.RequiredArgsConstructor
;
...
...
@@ -46,21 +46,16 @@ public class ShardingStrategy {
/**
* 根据分片值计算数据源名称集合.
*
*
* @param sqlStatementType SQL语句的类型
* @param availableTargetNames 所有的可用数据源名称集合
* @param shardingValues 分库片值集合
* @return 分库后指向的数据源名称集合
*/
@SuppressWarnings
({
"unchecked"
,
"rawtypes"
})
public
Collection
<
String
>
doSharding
(
final
SQLStatementType
sqlStatementType
,
final
Collection
<
String
>
availableTargetNames
,
final
Collection
<
ShardingValue
<?>>
shardingValues
)
{
public
Collection
<
String
>
doSharding
(
final
SQLStatementType
sqlStatementType
,
final
Collection
<
String
>
availableTargetNames
,
final
Collection
<
ShardingValue
<?>>
shardingValues
)
{
if
(
shardingValues
.
isEmpty
())
{
if
(
SQLStatementType
.
INSERT
.
equals
(
sqlStatementType
)
&&
availableTargetNames
.
size
()
>
1
)
{
throw
new
ShardingJdbcException
(
"INSERT statement must contains sharding value"
);
}
else
{
return
availableTargetNames
;
}
Preconditions
.
checkState
(!
isInsertMultiple
(
sqlStatementType
,
availableTargetNames
),
"INSERT statement should contain sharding value."
);
return
availableTargetNames
;
}
if
(
shardingAlgorithm
instanceof
SingleKeyShardingAlgorithm
)
{
SingleKeyShardingAlgorithm
<?>
singleKeyShardingAlgorithm
=
(
SingleKeyShardingAlgorithm
<?>)
shardingAlgorithm
;
...
...
@@ -81,4 +76,8 @@ public class ShardingStrategy {
}
throw
new
UnsupportedOperationException
(
shardingAlgorithm
.
getClass
().
getName
());
}
private
boolean
isInsertMultiple
(
final
SQLStatementType
sqlStatementType
,
final
Collection
<
String
>
availableTargetNames
)
{
return
SQLStatementType
.
INSERT
.
equals
(
sqlStatementType
)
&&
availableTargetNames
.
size
()
>
1
;
}
}
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/result/router/SQLStatementType.java
浏览文件 @
981b8442
...
...
@@ -23,5 +23,6 @@ package com.dangdang.ddframe.rdb.sharding.parser.result.router;
* @author gaohongtao
*/
public
enum
SQLStatementType
{
INSERT
,
DELETE
,
UPDATE
,
SELECT
}
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/AllTests.java
浏览文件 @
981b8442
...
...
@@ -19,6 +19,7 @@ package com.dangdang.ddframe.rdb;
import
com.dangdang.ddframe.rdb.integrate.AllIntegrateTests
;
import
com.dangdang.ddframe.rdb.sharding.api.AllApiTest
;
import
com.dangdang.ddframe.rdb.sharding.constants.AllConstantsTest
;
import
com.dangdang.ddframe.rdb.sharding.hint.AllHintTest
;
import
com.dangdang.ddframe.rdb.sharding.jdbc.AllJDBCTest
;
import
com.dangdang.ddframe.rdb.sharding.merger.AllMergerTest
;
...
...
@@ -32,6 +33,7 @@ import org.junit.runners.Suite.SuiteClasses;
@RunWith
(
Suite
.
class
)
@SuiteClasses
({
AllConstantsTest
.
class
,
AllApiTest
.
class
,
AllParserTest
.
class
,
AllRouterTest
.
class
,
...
...
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/api/AllApiTest.java
浏览文件 @
981b8442
...
...
@@ -29,13 +29,11 @@ import com.dangdang.ddframe.rdb.sharding.api.strategy.database.DatabaseShardingS
import
com.dangdang.ddframe.rdb.sharding.api.strategy.database.NoneDatabaseShardingAlgorithmTest
;
import
com.dangdang.ddframe.rdb.sharding.api.strategy.table.NoneTableShardingAlgorithmTest
;
import
com.dangdang.ddframe.rdb.sharding.api.strategy.table.TableShardingStrategyTest
;
import
com.dangdang.ddframe.rdb.sharding.constants.DatabaseTypeTest
;
import
org.junit.runner.RunWith
;
import
org.junit.runners.Suite
;
@RunWith
(
Suite
.
class
)
@Suite
.
SuiteClasses
({
DatabaseTypeTest
.
class
,
ShardingPropertiesTest
.
class
,
ShardingPropertiesConstantTest
.
class
,
ShardingDataSourceTest
.
class
,
...
...
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/api/rule/fixture/TestDataSource.java
浏览文件 @
981b8442
package
com.dangdang.ddframe.rdb.sharding.api.rule.fixture
;
import
java.sql.Connection
;
import
java.sql.SQLException
;
import
com.dangdang.ddframe.rdb.sharding.jdbc.adapter.AbstractDataSourceAdapter
;
import
lombok.EqualsAndHashCode
;
import
lombok.RequiredArgsConstructor
;
import
lombok.ToString
;
import
java.sql.Connection
;
import
java.sql.SQLException
;
@RequiredArgsConstructor
@EqualsAndHashCode
(
callSuper
=
false
)
@ToString
public
final
class
TestDataSource
extends
AbstractDataSourceAdapter
{
private
final
String
name
;
...
...
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/constants/AllConstantsTest.java
0 → 100644
浏览文件 @
981b8442
/**
* Copyright 1999-2015 dangdang.com.
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* </p>
*/
package
com.dangdang.ddframe.rdb.sharding.constants
;
import
org.junit.runner.RunWith
;
import
org.junit.runners.Suite
;
@RunWith
(
Suite
.
class
)
@Suite
.
SuiteClasses
(
DatabaseTypeTest
.
class
)
public
class
AllConstantsTest
{
}
sharding-jdbc-core/src/test/java/com/dangdang/ddframe/rdb/sharding/router/DMLTest.java
浏览文件 @
981b8442
...
...
@@ -17,16 +17,15 @@
package
com.dangdang.ddframe.rdb.sharding.router
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
com.dangdang.ddframe.rdb.sharding.exception.SQLParserException
;
import
com.dangdang.ddframe.rdb.sharding.exception.ShardingJdbcException
;
import
com.google.common.collect.Lists
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.rules.ExpectedException
;
import
java.util.Arrays
;
import
java.util.Collections
;
public
final
class
DMLTest
extends
AbstractDynamicRouteSqlTest
{
@Rule
...
...
@@ -42,8 +41,8 @@ public final class DMLTest extends AbstractDynamicRouteSqlTest {
@Test
public
void
assertInsertError
()
{
expectedException
.
expect
(
ShardingJdbc
Exception
.
class
);
expectedException
.
expectMessage
(
"INSERT statement
must contains sharding value
"
);
expectedException
.
expect
(
IllegalState
Exception
.
class
);
expectedException
.
expectMessage
(
"INSERT statement
should contain sharding value.
"
);
assertSingleTarget
(
"insert into `order` value (1,'test')"
,
null
,
null
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录