Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
f57ab04c
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,发现更多精彩内容 >>
提交
f57ab04c
编写于
6月 05, 2019
作者:
T
terrymanu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
for #2457, refactor SQLRewriteEngine.init()
上级
cb489bd3
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
47 addition
and
32 deletion
+47
-32
sharding-core/sharding-core-entry/src/main/java/org/apache/shardingsphere/core/BaseShardingEngine.java
...va/org/apache/shardingsphere/core/BaseShardingEngine.java
+4
-1
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/SQLRewriteEngine.java
.../apache/shardingsphere/core/rewrite/SQLRewriteEngine.java
+5
-4
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/rewriter/parameter/ShardingParameterRewriter.java
...rewrite/rewriter/parameter/ShardingParameterRewriter.java
+7
-10
sharding-core/sharding-core-rewrite/src/test/java/org/apache/shardingsphere/core/rewrite/rewriter/EncryptSQLRewriterTest.java
...gsphere/core/rewrite/rewriter/EncryptSQLRewriterTest.java
+4
-1
sharding-core/sharding-core-rewrite/src/test/java/org/apache/shardingsphere/core/rewrite/rewriter/ShardingSQLRewriterTest.java
...sphere/core/rewrite/rewriter/ShardingSQLRewriterTest.java
+7
-6
sharding-core/sharding-core-route/src/main/java/org/apache/shardingsphere/core/route/limit/Limit.java
...ava/org/apache/shardingsphere/core/route/limit/Limit.java
+0
-4
sharding-jdbc/sharding-jdbc-core/src/main/java/org/apache/shardingsphere/shardingjdbc/jdbc/core/statement/EncryptPreparedStatement.java
...ingjdbc/jdbc/core/statement/EncryptPreparedStatement.java
+5
-1
sharding-jdbc/sharding-jdbc-core/src/main/java/org/apache/shardingsphere/shardingjdbc/jdbc/core/statement/EncryptStatement.java
...re/shardingjdbc/jdbc/core/statement/EncryptStatement.java
+4
-1
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/wrapper/PreparedStatementExecutorWrapper.java
...cation/jdbc/wrapper/PreparedStatementExecutorWrapper.java
+6
-2
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/wrapper/StatementExecutorWrapper.java
.../communication/jdbc/wrapper/StatementExecutorWrapper.java
+5
-2
未找到文件。
sharding-core/sharding-core-entry/src/main/java/org/apache/shardingsphere/core/BaseShardingEngine.java
浏览文件 @
f57ab04c
...
...
@@ -24,6 +24,7 @@ import org.apache.shardingsphere.core.constant.properties.ShardingProperties;
import
org.apache.shardingsphere.core.constant.properties.ShardingPropertiesConstant
;
import
org.apache.shardingsphere.core.metadata.ShardingMetaData
;
import
org.apache.shardingsphere.core.rewrite.SQLRewriteEngine
;
import
org.apache.shardingsphere.core.rewrite.rewriter.parameter.ParameterRewriter
;
import
org.apache.shardingsphere.core.rewrite.rewriter.parameter.ShardingParameterRewriter
;
import
org.apache.shardingsphere.core.rewrite.rewriter.sql.EncryptSQLRewriter
;
import
org.apache.shardingsphere.core.rewrite.rewriter.sql.ShardingSQLRewriter
;
...
...
@@ -35,7 +36,9 @@ import org.apache.shardingsphere.core.route.hook.SPIRoutingHook;
import
org.apache.shardingsphere.core.route.type.RoutingUnit
;
import
org.apache.shardingsphere.core.rule.ShardingRule
;
import
java.util.Arrays
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.LinkedHashSet
;
import
java.util.List
;
...
...
@@ -107,7 +110,7 @@ public abstract class BaseShardingEngine {
ShardingParameterRewriter
shardingParameterRewriter
=
new
ShardingParameterRewriter
(
databaseType
,
sqlRouteResult
);
ShardingSQLRewriter
shardingSQLRewriter
=
new
ShardingSQLRewriter
(
shardingRule
,
databaseType
,
sqlRouteResult
,
sqlRouteResult
.
getOptimizeResult
());
EncryptSQLRewriter
encryptSQLRewriter
=
new
EncryptSQLRewriter
(
shardingRule
.
getEncryptRule
().
getEncryptorEngine
(),
sqlRouteResult
.
getSqlStatement
(),
sqlRouteResult
.
getOptimizeResult
());
rewriteEngine
.
init
(
shardingParameterRewriter
,
shardingSQLRewriter
,
encryptSQLRewriter
);
rewriteEngine
.
init
(
Collections
.<
ParameterRewriter
>
singletonList
(
shardingParameterRewriter
),
Arrays
.
asList
(
shardingSQLRewriter
,
encryptSQLRewriter
)
);
Collection
<
RouteUnit
>
result
=
new
LinkedHashSet
<>();
for
(
RoutingUnit
each
:
sqlRouteResult
.
getRoutingResult
().
getRoutingUnits
())
{
result
.
add
(
new
RouteUnit
(
each
.
getDataSourceName
(),
rewriteEngine
.
generateSQL
(
each
)));
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/SQLRewriteEngine.java
浏览文件 @
f57ab04c
...
...
@@ -37,6 +37,7 @@ import org.apache.shardingsphere.core.rule.BindingTableRule;
import
org.apache.shardingsphere.core.rule.EncryptRule
;
import
org.apache.shardingsphere.core.rule.ShardingRule
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.LinkedList
;
...
...
@@ -109,12 +110,12 @@ public final class SQLRewriteEngine {
/**
* Initialize SQL rewrite engine.
*
* @param parameterRewriter
parameter rewriter
* @param parameterRewriter
s parameter rewriters
* @param sqlRewriters SQL rewriters
*/
public
void
init
(
final
ParameterRewriter
parameterRewriter
,
final
SQLRewriter
...
sqlRewriters
)
{
if
(
null
!=
parameterRewriter
)
{
parameterRewriter
.
rewrite
(
parameterBuilder
);
public
void
init
(
final
Collection
<
ParameterRewriter
>
parameterRewriters
,
final
Collection
<
SQLRewriter
>
sqlRewriters
)
{
for
(
ParameterRewriter
each
:
parameterRewriters
)
{
each
.
rewrite
(
parameterBuilder
);
}
if
(
sqlTokens
.
isEmpty
())
{
baseSQLRewriter
.
appendWholeSQL
(
sqlBuilder
);
...
...
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/rewriter/parameter/ShardingParameterRewriter.java
浏览文件 @
f57ab04c
...
...
@@ -23,8 +23,6 @@ import org.apache.shardingsphere.core.parse.sql.statement.dml.SelectStatement;
import
org.apache.shardingsphere.core.rewrite.builder.ParameterBuilder
;
import
org.apache.shardingsphere.core.route.SQLRouteResult
;
import
java.util.Map
;
/**
* Parameter rewriter for sharding.
*
...
...
@@ -39,14 +37,13 @@ public final class ShardingParameterRewriter implements ParameterRewriter {
@Override
public
void
rewrite
(
final
ParameterBuilder
parameterBuilder
)
{
if
(
sqlRouteResult
.
getSqlStatement
()
instanceof
SelectStatement
)
{
SelectStatement
selectStatement
=
(
SelectStatement
)
sqlRouteResult
.
getSqlStatement
();
if
(
null
==
selectStatement
.
getLimit
())
{
return
;
}
boolean
isNeedFetchAll
=
(!
selectStatement
.
getGroupByItems
().
isEmpty
()
||
!
selectStatement
.
getAggregationSelectItems
().
isEmpty
())
&&
!
selectStatement
.
isSameGroupByAndOrderByItems
();
Map
<
Integer
,
Object
>
revisedIndexAndParameters
=
sqlRouteResult
.
getLimit
().
getRevisedIndexAndParameters
(
isNeedFetchAll
,
databaseType
.
name
());
parameterBuilder
.
getReplacedIndexAndParameters
().
putAll
(
revisedIndexAndParameters
);
if
(
sqlRouteResult
.
getSqlStatement
()
instanceof
SelectStatement
&&
null
!=
sqlRouteResult
.
getLimit
())
{
rewriteLimit
((
SelectStatement
)
sqlRouteResult
.
getSqlStatement
(),
parameterBuilder
);
}
}
private
void
rewriteLimit
(
final
SelectStatement
selectStatement
,
final
ParameterBuilder
parameterBuilder
)
{
boolean
isNeedFetchAll
=
(!
selectStatement
.
getGroupByItems
().
isEmpty
()
||
!
selectStatement
.
getAggregationSelectItems
().
isEmpty
())
&&
!
selectStatement
.
isSameGroupByAndOrderByItems
();
parameterBuilder
.
getReplacedIndexAndParameters
().
putAll
(
sqlRouteResult
.
getLimit
().
getRevisedIndexAndParameters
(
isNeedFetchAll
,
databaseType
.
name
()));
}
}
sharding-core/sharding-core-rewrite/src/test/java/org/apache/shardingsphere/core/rewrite/rewriter/EncryptSQLRewriterTest.java
浏览文件 @
f57ab04c
...
...
@@ -28,7 +28,9 @@ import org.apache.shardingsphere.core.optimize.result.OptimizeResult;
import
org.apache.shardingsphere.core.parse.entry.EncryptSQLParseEntry
;
import
org.apache.shardingsphere.core.parse.sql.statement.SQLStatement
;
import
org.apache.shardingsphere.core.rewrite.SQLRewriteEngine
;
import
org.apache.shardingsphere.core.rewrite.rewriter.parameter.ParameterRewriter
;
import
org.apache.shardingsphere.core.rewrite.rewriter.sql.EncryptSQLRewriter
;
import
org.apache.shardingsphere.core.rewrite.rewriter.sql.SQLRewriter
;
import
org.apache.shardingsphere.core.route.SQLUnit
;
import
org.apache.shardingsphere.core.rule.EncryptRule
;
import
org.junit.Before
;
...
...
@@ -186,7 +188,8 @@ public final class EncryptSQLRewriterTest {
SQLStatement
sqlStatement
=
encryptSQLParseEngine
.
parse
(
sql
,
false
);
SQLRewriteEngine
sqlRewriteEngine
=
new
SQLRewriteEngine
(
encryptRule
,
sqlStatement
,
parameters
);
OptimizeResult
optimizeResult
=
OptimizeEngineFactory
.
newInstance
(
encryptRule
,
sqlStatement
,
parameters
).
optimize
();
sqlRewriteEngine
.
init
(
null
,
new
EncryptSQLRewriter
(
encryptRule
.
getEncryptorEngine
(),
sqlStatement
,
optimizeResult
));
sqlRewriteEngine
.
init
(
Collections
.<
ParameterRewriter
>
emptyList
(),
Collections
.<
SQLRewriter
>
singletonList
(
new
EncryptSQLRewriter
(
encryptRule
.
getEncryptorEngine
(),
sqlStatement
,
optimizeResult
)));
return
sqlRewriteEngine
.
generateSQL
();
}
}
sharding-core/sharding-core-rewrite/src/test/java/org/apache/shardingsphere/core/rewrite/rewriter/ShardingSQLRewriterTest.java
浏览文件 @
f57ab04c
...
...
@@ -53,6 +53,7 @@ import org.apache.shardingsphere.core.parse.sql.statement.dml.UpdateStatement;
import
org.apache.shardingsphere.core.rewrite.SQLRewriteEngine
;
import
org.apache.shardingsphere.core.rewrite.builder.ParameterBuilder
;
import
org.apache.shardingsphere.core.rewrite.builder.SQLBuilder
;
import
org.apache.shardingsphere.core.rewrite.rewriter.parameter.ParameterRewriter
;
import
org.apache.shardingsphere.core.rewrite.rewriter.parameter.ShardingParameterRewriter
;
import
org.apache.shardingsphere.core.rewrite.rewriter.sql.EncryptSQLRewriter
;
import
org.apache.shardingsphere.core.rewrite.rewriter.sql.ShardingSQLRewriter
;
...
...
@@ -542,9 +543,9 @@ public final class ShardingSQLRewriterTest {
routeResult
.
setRoutingResult
(
new
RoutingResult
());
selectStatement
.
setLogicSQL
(
"SELECT table_x.id, x.name FROM table_x x, table_y y WHERE table_x.id=? AND x.name=?"
);
SQLRewriteEngine
rewriteEngine
=
new
SQLRewriteEngine
(
shardingRule
,
routeResult
.
getSqlStatement
(),
parameters
,
routeResult
.
getRoutingResult
().
isSingleRouting
());
rewriteEngine
.
init
(
new
ShardingParameterRewriter
(
DatabaseType
.
MySQL
,
routeResult
),
new
ShardingSQLRewriter
(
shardingRule
,
DatabaseType
.
MySQL
,
routeResult
,
null
),
new
EncryptSQLRewriter
(
shardingRule
.
getEncryptRule
().
getEncryptorEngine
(),
routeResult
.
getSqlStatement
(),
routeResult
.
getOptimizeResult
(
)));
rewriteEngine
.
init
(
Collections
.<
ParameterRewriter
>
singletonList
(
new
ShardingParameterRewriter
(
DatabaseType
.
MySQL
,
routeResult
)
),
Arrays
.
asList
(
new
ShardingSQLRewriter
(
shardingRule
,
DatabaseType
.
MySQL
,
routeResult
,
null
),
new
EncryptSQLRewriter
(
shardingRule
.
getEncryptRule
().
getEncryptorEngine
(),
routeResult
.
getSqlStatement
(),
routeResult
.
getOptimizeResult
()
)));
RoutingUnit
routingUnit
=
new
RoutingUnit
(
"db0"
);
routingUnit
.
getTableUnits
().
add
(
new
TableUnit
(
"table_x"
,
"table_x"
));
assertThat
(
rewriteEngine
.
generateSQL
(
routingUnit
).
getSql
(),
is
(
"SELECT table_x.id, x.name FROM table_x x, table_y y WHERE table_x.id=? AND x.name=?"
));
...
...
@@ -905,9 +906,9 @@ public final class ShardingSQLRewriterTest {
private
SQLRewriteEngine
createSQLRewriteEngine
(
final
DatabaseType
databaseType
,
final
List
<
Object
>
parameters
)
{
SQLRewriteEngine
result
=
new
SQLRewriteEngine
(
shardingRule
,
routeResult
.
getSqlStatement
(),
parameters
,
routeResult
.
getRoutingResult
().
isSingleRouting
());
result
.
init
(
new
ShardingParameterRewriter
(
DatabaseType
.
MySQL
,
routeResult
),
new
ShardingSQLRewriter
(
shardingRule
,
databaseType
,
routeResult
,
routeResult
.
getOptimizeResult
()),
new
EncryptSQLRewriter
(
shardingRule
.
getEncryptRule
().
getEncryptorEngine
(),
routeResult
.
getSqlStatement
(),
routeResult
.
getOptimizeResult
()));
result
.
init
(
Collections
.<
ParameterRewriter
>
singletonList
(
new
ShardingParameterRewriter
(
DatabaseType
.
MySQL
,
routeResult
)
),
Arrays
.
asList
(
new
ShardingSQLRewriter
(
shardingRule
,
databaseType
,
routeResult
,
routeResult
.
getOptimizeResult
()),
new
EncryptSQLRewriter
(
shardingRule
.
getEncryptRule
().
getEncryptorEngine
(),
routeResult
.
getSqlStatement
(),
routeResult
.
getOptimizeResult
()))
)
;
return
result
;
}
}
sharding-core/sharding-core-route/src/main/java/org/apache/shardingsphere/core/route/limit/Limit.java
浏览文件 @
f57ab04c
...
...
@@ -67,10 +67,6 @@ public final class Limit {
* @param parameters SQL parameters
*/
public
void
fillParameters
(
final
List
<
Object
>
parameters
)
{
fill
(
parameters
);
}
private
void
fill
(
final
List
<
Object
>
parameters
)
{
int
offset
=
0
;
if
(
null
!=
this
.
offset
)
{
offset
=
-
1
==
this
.
offset
.
getIndex
()
?
getOffsetValue
()
:
NumberUtil
.
roundHalfUp
(
parameters
.
get
(
this
.
offset
.
getIndex
()));
...
...
sharding-jdbc/sharding-jdbc-core/src/main/java/org/apache/shardingsphere/shardingjdbc/jdbc/core/statement/EncryptPreparedStatement.java
浏览文件 @
f57ab04c
...
...
@@ -23,7 +23,9 @@ import org.apache.shardingsphere.core.optimize.OptimizeEngineFactory;
import
org.apache.shardingsphere.core.optimize.result.OptimizeResult
;
import
org.apache.shardingsphere.core.parse.sql.statement.SQLStatement
;
import
org.apache.shardingsphere.core.rewrite.SQLRewriteEngine
;
import
org.apache.shardingsphere.core.rewrite.rewriter.parameter.ParameterRewriter
;
import
org.apache.shardingsphere.core.rewrite.rewriter.sql.EncryptSQLRewriter
;
import
org.apache.shardingsphere.core.rewrite.rewriter.sql.SQLRewriter
;
import
org.apache.shardingsphere.core.route.SQLUnit
;
import
org.apache.shardingsphere.shardingjdbc.jdbc.adapter.AbstractShardingPreparedStatementAdapter
;
import
org.apache.shardingsphere.shardingjdbc.jdbc.core.connection.EncryptConnection
;
...
...
@@ -35,6 +37,7 @@ import java.sql.ResultSet;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.LinkedList
;
/**
...
...
@@ -149,7 +152,8 @@ public final class EncryptPreparedStatement extends AbstractShardingPreparedStat
SQLStatement
sqlStatement
=
connection
.
getParseEngine
().
parse
(
sql
,
true
);
SQLRewriteEngine
encryptSQLRewriteEngine
=
new
SQLRewriteEngine
(
connection
.
getEncryptRule
(),
sqlStatement
,
getParameters
());
OptimizeResult
optimizeResult
=
OptimizeEngineFactory
.
newInstance
(
connection
.
getEncryptRule
(),
sqlStatement
,
getParameters
()).
optimize
();
encryptSQLRewriteEngine
.
init
(
null
,
new
EncryptSQLRewriter
(
connection
.
getEncryptRule
().
getEncryptorEngine
(),
sqlStatement
,
optimizeResult
));
encryptSQLRewriteEngine
.
init
(
Collections
.<
ParameterRewriter
>
emptyList
(),
Collections
.<
SQLRewriter
>
singletonList
(
new
EncryptSQLRewriter
(
connection
.
getEncryptRule
().
getEncryptorEngine
(),
sqlStatement
,
optimizeResult
)));
return
encryptSQLRewriteEngine
.
generateSQL
();
}
...
...
sharding-jdbc/sharding-jdbc-core/src/main/java/org/apache/shardingsphere/shardingjdbc/jdbc/core/statement/EncryptStatement.java
浏览文件 @
f57ab04c
...
...
@@ -22,7 +22,9 @@ import org.apache.shardingsphere.core.optimize.OptimizeEngineFactory;
import
org.apache.shardingsphere.core.optimize.result.OptimizeResult
;
import
org.apache.shardingsphere.core.parse.sql.statement.SQLStatement
;
import
org.apache.shardingsphere.core.rewrite.SQLRewriteEngine
;
import
org.apache.shardingsphere.core.rewrite.rewriter.parameter.ParameterRewriter
;
import
org.apache.shardingsphere.core.rewrite.rewriter.sql.EncryptSQLRewriter
;
import
org.apache.shardingsphere.core.rewrite.rewriter.sql.SQLRewriter
;
import
org.apache.shardingsphere.shardingjdbc.jdbc.core.connection.EncryptConnection
;
import
org.apache.shardingsphere.shardingjdbc.jdbc.core.resultset.EncryptResultSet
;
import
org.apache.shardingsphere.shardingjdbc.jdbc.unsupported.AbstractUnsupportedOperationStatement
;
...
...
@@ -81,7 +83,8 @@ public final class EncryptStatement extends AbstractUnsupportedOperationStatemen
SQLStatement
sqlStatement
=
connection
.
getParseEngine
().
parse
(
sql
,
false
);
SQLRewriteEngine
encryptSQLRewriteEngine
=
new
SQLRewriteEngine
(
connection
.
getEncryptRule
(),
sqlStatement
,
Collections
.
emptyList
());
OptimizeResult
optimizeResult
=
OptimizeEngineFactory
.
newInstance
(
connection
.
getEncryptRule
(),
sqlStatement
,
Collections
.
emptyList
()).
optimize
();
encryptSQLRewriteEngine
.
init
(
null
,
new
EncryptSQLRewriter
(
connection
.
getEncryptRule
().
getEncryptorEngine
(),
sqlStatement
,
optimizeResult
));
encryptSQLRewriteEngine
.
init
(
Collections
.<
ParameterRewriter
>
emptyList
(),
Collections
.<
SQLRewriter
>
singletonList
(
new
EncryptSQLRewriter
(
connection
.
getEncryptRule
().
getEncryptorEngine
(),
sqlStatement
,
optimizeResult
)));
return
encryptSQLRewriteEngine
.
generateSQL
().
getSql
();
}
...
...
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/wrapper/PreparedStatementExecutorWrapper.java
浏览文件 @
f57ab04c
...
...
@@ -25,7 +25,9 @@ import org.apache.shardingsphere.core.optimize.OptimizeEngineFactory;
import
org.apache.shardingsphere.core.optimize.result.OptimizeResult
;
import
org.apache.shardingsphere.core.parse.sql.statement.SQLStatement
;
import
org.apache.shardingsphere.core.rewrite.SQLRewriteEngine
;
import
org.apache.shardingsphere.core.rewrite.rewriter.parameter.ParameterRewriter
;
import
org.apache.shardingsphere.core.rewrite.rewriter.sql.EncryptSQLRewriter
;
import
org.apache.shardingsphere.core.rewrite.rewriter.sql.SQLRewriter
;
import
org.apache.shardingsphere.core.route.RouteUnit
;
import
org.apache.shardingsphere.core.route.SQLRouteResult
;
import
org.apache.shardingsphere.core.route.SQLUnit
;
...
...
@@ -40,6 +42,7 @@ import java.sql.Connection;
import
java.sql.PreparedStatement
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
java.util.Collections
;
import
java.util.List
;
/**
...
...
@@ -77,7 +80,7 @@ public final class PreparedStatementExecutorWrapper implements JDBCExecutorWrapp
private
SQLRouteResult
doMasterSlaveRoute
(
final
String
sql
)
{
SQLStatement
sqlStatement
=
((
MasterSlaveSchema
)
logicSchema
).
getParseEngine
().
parse
(
sql
,
true
);
SQLRewriteEngine
sqlRewriteEngine
=
new
SQLRewriteEngine
(
sqlStatement
);
sqlRewriteEngine
.
init
(
null
);
sqlRewriteEngine
.
init
(
Collections
.<
ParameterRewriter
>
emptyList
(),
Collections
.<
SQLRewriter
>
emptyList
()
);
String
rewriteSQL
=
sqlRewriteEngine
.
generateSQL
().
getSql
();
SQLRouteResult
result
=
new
SQLRouteResult
(
sqlStatement
);
for
(
String
each
:
new
MasterSlaveRouter
(((
MasterSlaveSchema
)
logicSchema
).
getMasterSlaveRule
(),
((
MasterSlaveSchema
)
logicSchema
).
getParseEngine
(),
...
...
@@ -92,7 +95,8 @@ public final class PreparedStatementExecutorWrapper implements JDBCExecutorWrapp
SQLStatement
sqlStatement
=
encryptSchema
.
getEncryptSQLParseEntry
().
parse
(
sql
,
true
);
SQLRewriteEngine
sqlRewriteEngine
=
new
SQLRewriteEngine
(
encryptSchema
.
getEncryptRule
(),
sqlStatement
,
parameters
);
OptimizeResult
optimizeResult
=
OptimizeEngineFactory
.
newInstance
(
encryptSchema
.
getEncryptRule
(),
sqlStatement
,
parameters
).
optimize
();
sqlRewriteEngine
.
init
(
null
,
new
EncryptSQLRewriter
(
encryptSchema
.
getEncryptRule
().
getEncryptorEngine
(),
sqlStatement
,
optimizeResult
));
sqlRewriteEngine
.
init
(
Collections
.<
ParameterRewriter
>
emptyList
(),
Collections
.<
SQLRewriter
>
singletonList
(
new
EncryptSQLRewriter
(
encryptSchema
.
getEncryptRule
().
getEncryptorEngine
(),
sqlStatement
,
optimizeResult
)));
SQLRouteResult
result
=
new
SQLRouteResult
(
sqlStatement
);
result
.
getRouteUnits
().
add
(
new
RouteUnit
(
logicSchema
.
getDataSources
().
keySet
().
iterator
().
next
(),
new
SQLUnit
(
sqlRewriteEngine
.
generateSQL
().
getSql
(),
parameters
)));
return
result
;
...
...
sharding-proxy/sharding-proxy-backend/src/main/java/org/apache/shardingsphere/shardingproxy/backend/communication/jdbc/wrapper/StatementExecutorWrapper.java
浏览文件 @
f57ab04c
...
...
@@ -25,7 +25,9 @@ import org.apache.shardingsphere.core.optimize.OptimizeEngineFactory;
import
org.apache.shardingsphere.core.optimize.result.OptimizeResult
;
import
org.apache.shardingsphere.core.parse.sql.statement.SQLStatement
;
import
org.apache.shardingsphere.core.rewrite.SQLRewriteEngine
;
import
org.apache.shardingsphere.core.rewrite.rewriter.parameter.ParameterRewriter
;
import
org.apache.shardingsphere.core.rewrite.rewriter.sql.EncryptSQLRewriter
;
import
org.apache.shardingsphere.core.rewrite.rewriter.sql.SQLRewriter
;
import
org.apache.shardingsphere.core.route.RouteUnit
;
import
org.apache.shardingsphere.core.route.SQLRouteResult
;
import
org.apache.shardingsphere.core.route.SQLUnit
;
...
...
@@ -78,7 +80,7 @@ public final class StatementExecutorWrapper implements JDBCExecutorWrapper {
private
SQLRouteResult
doMasterSlaveRoute
(
final
String
sql
)
{
SQLStatement
sqlStatement
=
((
MasterSlaveSchema
)
logicSchema
).
getParseEngine
().
parse
(
sql
,
false
);
SQLRewriteEngine
sqlRewriteEngine
=
new
SQLRewriteEngine
(
sqlStatement
);
sqlRewriteEngine
.
init
(
null
);
sqlRewriteEngine
.
init
(
Collections
.<
ParameterRewriter
>
emptyList
(),
Collections
.<
SQLRewriter
>
emptyList
()
);
String
rewriteSQL
=
sqlRewriteEngine
.
generateSQL
().
getSql
();
SQLRouteResult
result
=
new
SQLRouteResult
(
sqlStatement
);
for
(
String
each
:
new
MasterSlaveRouter
(((
MasterSlaveSchema
)
logicSchema
).
getMasterSlaveRule
(),
((
MasterSlaveSchema
)
logicSchema
).
getParseEngine
(),
...
...
@@ -93,7 +95,8 @@ public final class StatementExecutorWrapper implements JDBCExecutorWrapper {
SQLStatement
sqlStatement
=
encryptSchema
.
getEncryptSQLParseEntry
().
parse
(
sql
,
false
);
SQLRewriteEngine
sqlRewriteEngine
=
new
SQLRewriteEngine
(
encryptSchema
.
getEncryptRule
(),
sqlStatement
,
Collections
.
emptyList
());
OptimizeResult
optimizeResult
=
OptimizeEngineFactory
.
newInstance
(
encryptSchema
.
getEncryptRule
(),
sqlStatement
,
new
LinkedList
<>()).
optimize
();
sqlRewriteEngine
.
init
(
null
,
new
EncryptSQLRewriter
(
encryptSchema
.
getEncryptRule
().
getEncryptorEngine
(),
sqlStatement
,
optimizeResult
));
sqlRewriteEngine
.
init
(
Collections
.<
ParameterRewriter
>
emptyList
(),
Collections
.<
SQLRewriter
>
singletonList
(
new
EncryptSQLRewriter
(
encryptSchema
.
getEncryptRule
().
getEncryptorEngine
(),
sqlStatement
,
optimizeResult
)));
SQLRouteResult
result
=
new
SQLRouteResult
(
sqlStatement
);
result
.
getRouteUnits
().
add
(
new
RouteUnit
(
logicSchema
.
getDataSources
().
keySet
().
iterator
().
next
(),
new
SQLUnit
(
sqlRewriteEngine
.
generateSQL
().
getSql
(),
Collections
.
emptyList
())));
return
result
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录