Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
9756aaba
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,发现更多精彩内容 >>
提交
9756aaba
编写于
1月 12, 2020
作者:
T
terrymanu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
decouple master-slave with PreparedQueryShardingEngine and SimpleQueryShardingEngine
上级
1921604a
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
53 addition
and
36 deletion
+53
-36
sharding-core/sharding-core-entry/src/main/java/org/apache/shardingsphere/core/shard/PreparedQueryShardingEngine.java
...hardingsphere/core/shard/PreparedQueryShardingEngine.java
+17
-9
sharding-core/sharding-core-entry/src/main/java/org/apache/shardingsphere/core/shard/SimpleQueryShardingEngine.java
.../shardingsphere/core/shard/SimpleQueryShardingEngine.java
+16
-7
sharding-core/sharding-core-entry/src/test/java/org/apache/shardingsphere/core/shard/PreparedQueryShardingEngineTest.java
...ingsphere/core/shard/PreparedQueryShardingEngineTest.java
+10
-10
sharding-core/sharding-core-entry/src/test/java/org/apache/shardingsphere/core/shard/SimpleQueryShardingEngineTest.java
...rdingsphere/core/shard/SimpleQueryShardingEngineTest.java
+8
-8
sharding-jdbc/sharding-jdbc-core/src/main/java/org/apache/shardingsphere/shardingjdbc/jdbc/core/statement/ShardingPreparedStatement.java
...ngjdbc/jdbc/core/statement/ShardingPreparedStatement.java
+1
-1
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/wrapper/PreparedStatementExecutorWrapper.java
...cation/jdbc/wrapper/PreparedStatementExecutorWrapper.java
+1
-1
未找到文件。
sharding-core/sharding-core-entry/src/main/java/org/apache/shardingsphere/core/shard/PreparedQueryShardingEngine.java
浏览文件 @
9756aaba
...
...
@@ -17,12 +17,14 @@
package
org.apache.shardingsphere.core.shard
;
import
org.apache.shardingsphere.underlying.common.constant.properties.ShardingSphereProperties
;
import
org.apache.shardingsphere.underlying.common.metadata.ShardingSphereMetaData
;
import
org.apache.shardingsphere.sql.parser.SQLParseEngine
;
import
org.apache.shardingsphere.core.route.PreparedStatementRoutingEngine
;
import
org.apache.shardingsphere.core.route.ShardingRouteContext
;
import
org.apache.shardingsphere.core.route.router.masterslave.MasterSlaveRouteDecorator
;
import
org.apache.shardingsphere.core.route.router.sharding.ShardingRouter
;
import
org.apache.shardingsphere.core.rule.MasterSlaveRule
;
import
org.apache.shardingsphere.core.rule.ShardingRule
;
import
org.apache.shardingsphere.sql.parser.SQLParseEngine
;
import
org.apache.shardingsphere.underlying.common.constant.properties.ShardingSphereProperties
;
import
org.apache.shardingsphere.underlying.common.metadata.ShardingSphereMetaData
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -41,12 +43,14 @@ import java.util.List;
*/
public
final
class
PreparedQueryShardingEngine
extends
BaseShardingEngine
{
private
final
PreparedStatementRoutingEngine
routingEngine
;
private
final
ShardingRule
shardingRule
;
private
final
ShardingRouter
shardingRouter
;
public
PreparedQueryShardingEngine
(
final
String
sql
,
final
ShardingRule
shardingRule
,
final
ShardingSphereProperties
properties
,
final
ShardingSphereMetaData
metaData
,
final
SQLParseEngine
sqlParseEngine
)
{
public
PreparedQueryShardingEngine
(
final
ShardingRule
shardingRule
,
final
ShardingSphereProperties
properties
,
final
ShardingSphereMetaData
metaData
,
final
SQLParseEngine
sqlParseEngine
)
{
super
(
shardingRule
,
properties
,
metaData
);
routingEngine
=
new
PreparedStatementRoutingEngine
(
sql
,
shardingRule
,
metaData
,
sqlParseEngine
);
this
.
shardingRule
=
shardingRule
;
shardingRouter
=
new
ShardingRouter
(
shardingRule
,
metaData
,
sqlParseEngine
);
}
@Override
...
...
@@ -56,6 +60,10 @@ public final class PreparedQueryShardingEngine extends BaseShardingEngine {
@Override
protected
ShardingRouteContext
route
(
final
String
sql
,
final
List
<
Object
>
parameters
)
{
return
routingEngine
.
route
(
parameters
);
ShardingRouteContext
result
=
shardingRouter
.
route
(
sql
,
parameters
,
true
);
for
(
MasterSlaveRule
each
:
shardingRule
.
getMasterSlaveRules
())
{
result
=
(
ShardingRouteContext
)
new
MasterSlaveRouteDecorator
(
each
).
decorate
(
result
);
}
return
result
;
}
}
sharding-core/sharding-core-entry/src/main/java/org/apache/shardingsphere/core/shard/SimpleQueryShardingEngine.java
浏览文件 @
9756aaba
...
...
@@ -17,12 +17,14 @@
package
org.apache.shardingsphere.core.shard
;
import
org.apache.shardingsphere.underlying.common.constant.properties.ShardingSphereProperties
;
import
org.apache.shardingsphere.underlying.common.metadata.ShardingSphereMetaData
;
import
org.apache.shardingsphere.sql.parser.SQLParseEngine
;
import
org.apache.shardingsphere.core.route.ShardingRouteContext
;
import
org.apache.shardingsphere.core.route.StatementRoutingEngine
;
import
org.apache.shardingsphere.core.route.router.masterslave.MasterSlaveRouteDecorator
;
import
org.apache.shardingsphere.core.route.router.sharding.ShardingRouter
;
import
org.apache.shardingsphere.core.rule.MasterSlaveRule
;
import
org.apache.shardingsphere.core.rule.ShardingRule
;
import
org.apache.shardingsphere.sql.parser.SQLParseEngine
;
import
org.apache.shardingsphere.underlying.common.constant.properties.ShardingSphereProperties
;
import
org.apache.shardingsphere.underlying.common.metadata.ShardingSphereMetaData
;
import
java.util.Collections
;
import
java.util.List
;
...
...
@@ -41,11 +43,14 @@ import java.util.List;
*/
public
final
class
SimpleQueryShardingEngine
extends
BaseShardingEngine
{
private
final
StatementRoutingEngine
routingEngine
;
private
final
ShardingRule
shardingRule
;
private
final
ShardingRouter
shardingRouter
;
public
SimpleQueryShardingEngine
(
final
ShardingRule
shardingRule
,
final
ShardingSphereProperties
properties
,
final
ShardingSphereMetaData
metaData
,
final
SQLParseEngine
sqlParseEngine
)
{
super
(
shardingRule
,
properties
,
metaData
);
routingEngine
=
new
StatementRoutingEngine
(
shardingRule
,
metaData
,
sqlParseEngine
);
this
.
shardingRule
=
shardingRule
;
shardingRouter
=
new
ShardingRouter
(
shardingRule
,
metaData
,
sqlParseEngine
);
}
@Override
...
...
@@ -55,6 +60,10 @@ public final class SimpleQueryShardingEngine extends BaseShardingEngine {
@Override
protected
ShardingRouteContext
route
(
final
String
sql
,
final
List
<
Object
>
parameters
)
{
return
routingEngine
.
route
(
sql
);
ShardingRouteContext
result
=
shardingRouter
.
route
(
sql
,
Collections
.
emptyList
(),
false
);
for
(
MasterSlaveRule
each
:
shardingRule
.
getMasterSlaveRules
())
{
result
=
(
ShardingRouteContext
)
new
MasterSlaveRouteDecorator
(
each
).
decorate
(
result
);
}
return
result
;
}
}
sharding-core/sharding-core-entry/src/test/java/org/apache/shardingsphere/core/shard/PreparedQueryShardingEngineTest.java
浏览文件 @
9756aaba
...
...
@@ -18,12 +18,12 @@
package
org.apache.shardingsphere.core.shard
;
import
lombok.SneakyThrows
;
import
org.apache.shardingsphere.underlying.common.metadata.ShardingSphereMetaData
;
import
org.apache.shardingsphere.underlying.common.metadata.table.TableMetas
;
import
org.apache.shardingsphere.core.route.PreparedStatementRoutingEngine
;
import
org.apache.shardingsphere.encrypt.rule.EncryptRule
;
import
org.apache.shardingsphere.core.route.router.sharding.ShardingRouter
;
import
org.apache.shardingsphere.core.rule.ShardingRule
;
import
org.apache.shardingsphere.encrypt.rule.EncryptRule
;
import
org.apache.shardingsphere.sql.parser.SQLParseEngine
;
import
org.apache.shardingsphere.underlying.common.metadata.ShardingSphereMetaData
;
import
org.apache.shardingsphere.underlying.common.metadata.table.TableMetas
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
...
...
@@ -41,7 +41,7 @@ import static org.mockito.Mockito.when;
public
final
class
PreparedQueryShardingEngineTest
extends
BaseShardingEngineTest
{
@Mock
private
PreparedStatementRoutingEngine
routingEngine
;
private
ShardingRouter
shardingRouter
;
private
PreparedQueryShardingEngine
shardingEngine
;
...
...
@@ -56,25 +56,25 @@ public final class PreparedQueryShardingEngineTest extends BaseShardingEngineTes
when
(
shardingRule
.
getEncryptRule
()).
thenReturn
(
encryptRule
);
ShardingSphereMetaData
shardingSphereMetaData
=
mock
(
ShardingSphereMetaData
.
class
);
when
(
shardingSphereMetaData
.
getTables
()).
thenReturn
(
mock
(
TableMetas
.
class
));
shardingEngine
=
new
PreparedQueryShardingEngine
(
getSql
(),
shardingRule
,
getProperties
(),
shardingSphereMetaData
,
mock
(
SQLParseEngine
.
class
));
shardingEngine
=
new
PreparedQueryShardingEngine
(
shardingRule
,
getProperties
(),
shardingSphereMetaData
,
mock
(
SQLParseEngine
.
class
));
setRoutingEngine
();
}
@SneakyThrows
private
void
setRoutingEngine
()
{
Field
field
=
PreparedQueryShardingEngine
.
class
.
getDeclaredField
(
"
routingEngine
"
);
Field
field
=
PreparedQueryShardingEngine
.
class
.
getDeclaredField
(
"
shardingRouter
"
);
field
.
setAccessible
(
true
);
field
.
set
(
shardingEngine
,
routingEngine
);
field
.
set
(
shardingEngine
,
shardingRouter
);
}
protected
void
assertShard
()
{
when
(
routingEngine
.
route
(
getParameters
()
)).
thenReturn
(
createSQLRouteContext
());
when
(
shardingRouter
.
route
(
getSql
(),
getParameters
(),
true
)).
thenReturn
(
createSQLRouteContext
());
assertExecutionContext
(
shardingEngine
.
shard
(
getSql
(),
getParameters
()));
}
@Test
(
expected
=
SQLException
.
class
)
public
void
assertWithRouteException
()
{
when
(
routingEngine
.
route
(
getParameters
()
)).
thenThrow
(
SQLException
.
class
);
when
(
shardingRouter
.
route
(
getSql
(),
getParameters
(),
true
)).
thenThrow
(
SQLException
.
class
);
shardingEngine
.
shard
(
getSql
(),
getParameters
());
}
}
sharding-core/sharding-core-entry/src/test/java/org/apache/shardingsphere/core/shard/SimpleQueryShardingEngineTest.java
浏览文件 @
9756aaba
...
...
@@ -18,12 +18,12 @@
package
org.apache.shardingsphere.core.shard
;
import
lombok.SneakyThrows
;
import
org.apache.shardingsphere.core.route.router.sharding.ShardingRouter
;
import
org.apache.shardingsphere.core.rule.ShardingRule
;
import
org.apache.shardingsphere.encrypt.rule.EncryptRule
;
import
org.apache.shardingsphere.sql.parser.SQLParseEngine
;
import
org.apache.shardingsphere.underlying.common.metadata.ShardingSphereMetaData
;
import
org.apache.shardingsphere.underlying.common.metadata.table.TableMetas
;
import
org.apache.shardingsphere.sql.parser.SQLParseEngine
;
import
org.apache.shardingsphere.core.route.StatementRoutingEngine
;
import
org.apache.shardingsphere.encrypt.rule.EncryptRule
;
import
org.apache.shardingsphere.core.rule.ShardingRule
;
import
org.junit.Before
;
import
org.junit.runner.RunWith
;
import
org.mockito.Mock
;
...
...
@@ -39,7 +39,7 @@ import static org.mockito.Mockito.when;
public
final
class
SimpleQueryShardingEngineTest
extends
BaseShardingEngineTest
{
@Mock
private
S
tatementRoutingEngine
routingEngine
;
private
S
hardingRouter
shardingRouter
;
private
SimpleQueryShardingEngine
shardingEngine
;
...
...
@@ -60,13 +60,13 @@ public final class SimpleQueryShardingEngineTest extends BaseShardingEngineTest
@SneakyThrows
private
void
setRoutingEngine
()
{
Field
field
=
SimpleQueryShardingEngine
.
class
.
getDeclaredField
(
"
routingEngine
"
);
Field
field
=
SimpleQueryShardingEngine
.
class
.
getDeclaredField
(
"
shardingRouter
"
);
field
.
setAccessible
(
true
);
field
.
set
(
shardingEngine
,
routingEngine
);
field
.
set
(
shardingEngine
,
shardingRouter
);
}
protected
void
assertShard
()
{
when
(
routingEngine
.
route
(
getSql
()
)).
thenReturn
(
createSQLRouteContext
());
when
(
shardingRouter
.
route
(
getSql
(),
Collections
.
emptyList
(),
false
)).
thenReturn
(
createSQLRouteContext
());
assertExecutionContext
(
shardingEngine
.
shard
(
getSql
(),
getParameters
()));
}
}
sharding-jdbc/sharding-jdbc-core/src/main/java/org/apache/shardingsphere/shardingjdbc/jdbc/core/statement/ShardingPreparedStatement.java
浏览文件 @
9756aaba
...
...
@@ -111,7 +111,7 @@ public final class ShardingPreparedStatement extends AbstractShardingPreparedSta
this
.
connection
=
connection
;
this
.
sql
=
sql
;
ShardingRuntimeContext
runtimeContext
=
connection
.
getRuntimeContext
();
shardingEngine
=
new
PreparedQueryShardingEngine
(
sql
,
runtimeContext
.
getRule
(),
runtimeContext
.
getProperties
(),
runtimeContext
.
getMetaData
(),
runtimeContext
.
getParseEngine
());
shardingEngine
=
new
PreparedQueryShardingEngine
(
runtimeContext
.
getRule
(),
runtimeContext
.
getProperties
(),
runtimeContext
.
getMetaData
(),
runtimeContext
.
getParseEngine
());
preparedStatementExecutor
=
new
PreparedStatementExecutor
(
resultSetType
,
resultSetConcurrency
,
resultSetHoldability
,
returnGeneratedKeys
,
connection
);
batchPreparedStatementExecutor
=
new
BatchPreparedStatementExecutor
(
resultSetType
,
resultSetConcurrency
,
resultSetHoldability
,
returnGeneratedKeys
,
connection
);
}
...
...
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/wrapper/PreparedStatementExecutorWrapper.java
浏览文件 @
9756aaba
...
...
@@ -84,7 +84,7 @@ public final class PreparedStatementExecutorWrapper implements JDBCExecutorWrapp
private
ExecutionContext
doShardingRoute
(
final
String
sql
)
{
PreparedQueryShardingEngine
shardingEngine
=
new
PreparedQueryShardingEngine
(
sql
,
logicSchema
.
getShardingRule
(),
ShardingProxyContext
.
getInstance
().
getProperties
(),
logicSchema
.
getMetaData
(),
logicSchema
.
getParseEngine
());
logicSchema
.
getShardingRule
(),
ShardingProxyContext
.
getInstance
().
getProperties
(),
logicSchema
.
getMetaData
(),
logicSchema
.
getParseEngine
());
return
shardingEngine
.
shard
(
sql
,
parameters
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录