Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
1f2e8199
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 搜索 >>
提交
1f2e8199
编写于
4月 28, 2018
作者:
T
terrymanu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
for #768, remove getConnectionsForDDL
上级
f1512282
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
9 addition
and
77 deletion
+9
-77
sharding-jdbc-core/src/main/java/io/shardingjdbc/core/jdbc/core/connection/ShardingConnection.java
...ingjdbc/core/jdbc/core/connection/ShardingConnection.java
+0
-37
sharding-jdbc-core/src/main/java/io/shardingjdbc/core/jdbc/core/statement/ShardingPreparedStatement.java
...c/core/jdbc/core/statement/ShardingPreparedStatement.java
+4
-23
sharding-jdbc-core/src/main/java/io/shardingjdbc/core/jdbc/core/statement/ShardingStatement.java
...rdingjdbc/core/jdbc/core/statement/ShardingStatement.java
+5
-17
未找到文件。
sharding-jdbc-core/src/main/java/io/shardingjdbc/core/jdbc/core/connection/ShardingConnection.java
浏览文件 @
1f2e8199
...
...
@@ -21,7 +21,6 @@ import com.google.common.base.Preconditions;
import
io.shardingjdbc.core.hint.HintManagerHolder
;
import
io.shardingjdbc.core.jdbc.adapter.AbstractConnectionAdapter
;
import
io.shardingjdbc.core.jdbc.core.ShardingContext
;
import
io.shardingjdbc.core.jdbc.core.datasource.MasterSlaveDataSource
;
import
io.shardingjdbc.core.jdbc.core.statement.ShardingPreparedStatement
;
import
io.shardingjdbc.core.jdbc.core.statement.ShardingStatement
;
import
io.shardingjdbc.core.routing.router.masterslave.MasterVisitedManager
;
...
...
@@ -34,11 +33,6 @@ import java.sql.DatabaseMetaData;
import
java.sql.PreparedStatement
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
java.util.Collection
;
import
java.util.HashMap
;
import
java.util.LinkedList
;
import
java.util.Map
;
import
java.util.Map.Entry
;
/**
* Connection that support sharding.
...
...
@@ -52,37 +46,6 @@ public final class ShardingConnection extends AbstractConnectionAdapter {
@Getter
private
final
ShardingContext
shardingContext
;
/**
* Get database connections via data source name for DDL.
*
* <p>Non-Master-slave connection will return actual connection</p>
* <p>Master-slave connection will return actual master connections</p>
*
* @param dataSourceName data source name
* @return all database connections via data source name for DDL
* @throws SQLException SQL exception
*/
// TODO Return value is Connection because will support multiple master datasources in future.
public
Collection
<
Connection
>
getConnectionsForDDL
(
final
String
dataSourceName
)
throws
SQLException
{
DataSource
dataSource
=
shardingContext
.
getDataSourceMap
().
get
(
dataSourceName
);
Preconditions
.
checkState
(
null
!=
dataSource
,
"Missing the rule of %s in DataSourceRule"
,
dataSourceName
);
Map
<
String
,
DataSource
>
dataSources
;
if
(
dataSource
instanceof
MasterSlaveDataSource
)
{
dataSources
=
((
MasterSlaveDataSource
)
dataSource
).
getMasterDataSource
();
}
else
{
dataSources
=
new
HashMap
<>(
1
,
1
);
dataSources
.
put
(
dataSourceName
,
dataSource
);
}
Collection
<
Connection
>
result
=
new
LinkedList
<>();
for
(
Entry
<
String
,
DataSource
>
entry
:
dataSources
.
entrySet
())
{
Connection
connection
=
getCachedConnections
().
containsKey
(
entry
.
getKey
())
?
getCachedConnections
().
get
(
entry
.
getKey
())
:
entry
.
getValue
().
getConnection
();
replayMethodsInvocation
(
connection
);
getCachedConnections
().
put
(
entry
.
getKey
(),
connection
);
result
.
add
(
connection
);
}
return
result
;
}
/**
* Get database connection via data source name.
*
...
...
sharding-jdbc-core/src/main/java/io/shardingjdbc/core/jdbc/core/statement/ShardingPreparedStatement.java
浏览文件 @
1f2e8199
...
...
@@ -20,7 +20,6 @@ package io.shardingjdbc.core.jdbc.core.statement;
import
com.google.common.base.Optional
;
import
com.google.common.base.Predicate
;
import
com.google.common.collect.Iterators
;
import
io.shardingjdbc.core.constant.SQLType
;
import
io.shardingjdbc.core.executor.type.batch.BatchPreparedStatementExecutor
;
import
io.shardingjdbc.core.executor.type.batch.BatchPreparedStatementUnit
;
import
io.shardingjdbc.core.executor.type.prepared.PreparedStatementExecutor
;
...
...
@@ -52,7 +51,6 @@ import java.sql.SQLException;
import
java.sql.Statement
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Objects
;
...
...
@@ -164,27 +162,10 @@ public final class ShardingPreparedStatement extends AbstractShardingPreparedSta
Collection
<
PreparedStatementUnit
>
result
=
new
LinkedList
<>();
routeResult
=
routingEngine
.
route
(
getParameters
());
for
(
SQLExecutionUnit
each
:
routeResult
.
getExecutionUnits
())
{
SQLType
sqlType
=
routeResult
.
getSqlStatement
().
getType
();
Collection
<
PreparedStatement
>
preparedStatements
;
if
(
SQLType
.
DDL
==
sqlType
)
{
preparedStatements
=
generatePreparedStatementForDDL
(
each
);
}
else
{
preparedStatements
=
Collections
.
singletonList
(
generatePreparedStatement
(
each
));
}
routedStatements
.
addAll
(
preparedStatements
);
for
(
PreparedStatement
preparedStatement
:
preparedStatements
)
{
replaySetParameter
(
preparedStatement
,
each
.
getSqlUnit
().
getParameterSets
().
get
(
0
));
result
.
add
(
new
PreparedStatementUnit
(
each
,
preparedStatement
));
}
}
return
result
;
}
private
Collection
<
PreparedStatement
>
generatePreparedStatementForDDL
(
final
SQLExecutionUnit
sqlExecutionUnit
)
throws
SQLException
{
Collection
<
PreparedStatement
>
result
=
new
LinkedList
<>();
Collection
<
Connection
>
connections
=
getConnection
().
getConnectionsForDDL
(
sqlExecutionUnit
.
getDataSource
());
for
(
Connection
each
:
connections
)
{
result
.
add
(
each
.
prepareStatement
(
sqlExecutionUnit
.
getSqlUnit
().
getSql
(),
resultSetType
,
resultSetConcurrency
,
resultSetHoldability
));
PreparedStatement
preparedStatement
=
generatePreparedStatement
(
each
);
routedStatements
.
add
(
preparedStatement
);
replaySetParameter
(
preparedStatement
,
each
.
getSqlUnit
().
getParameterSets
().
get
(
0
));
result
.
add
(
new
PreparedStatementUnit
(
each
,
preparedStatement
));
}
return
result
;
}
...
...
sharding-jdbc-core/src/main/java/io/shardingjdbc/core/jdbc/core/statement/ShardingStatement.java
浏览文件 @
1f2e8199
...
...
@@ -18,7 +18,6 @@
package
io.shardingjdbc.core.jdbc.core.statement
;
import
com.google.common.base.Optional
;
import
io.shardingjdbc.core.constant.SQLType
;
import
io.shardingjdbc.core.executor.type.statement.StatementExecutor
;
import
io.shardingjdbc.core.executor.type.statement.StatementUnit
;
import
io.shardingjdbc.core.jdbc.adapter.AbstractStatementAdapter
;
...
...
@@ -34,20 +33,18 @@ import io.shardingjdbc.core.parsing.parser.sql.dal.DALStatement;
import
io.shardingjdbc.core.parsing.parser.sql.dml.insert.InsertStatement
;
import
io.shardingjdbc.core.parsing.parser.sql.dql.DQLStatement
;
import
io.shardingjdbc.core.parsing.parser.sql.dql.select.SelectStatement
;
import
io.shardingjdbc.core.routing.router.GeneratedKey
;
import
io.shardingjdbc.core.routing.SQLExecutionUnit
;
import
io.shardingjdbc.core.routing.SQLRouteResult
;
import
io.shardingjdbc.core.routing.StatementRoutingEngine
;
import
io.shardingjdbc.core.routing.router.GeneratedKey
;
import
lombok.AccessLevel
;
import
lombok.Getter
;
import
java.sql.Connection
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.LinkedList
;
import
java.util.List
;
...
...
@@ -202,19 +199,10 @@ public class ShardingStatement extends AbstractStatementAdapter {
routeResult
=
new
StatementRoutingEngine
(
shardingContext
.
getShardingRule
(),
shardingContext
.
getShardingMetaData
(),
shardingContext
.
getDatabaseType
(),
shardingContext
.
isShowSQL
()).
route
(
sql
);
Collection
<
StatementUnit
>
statementUnits
=
new
LinkedList
<>();
for
(
SQLExecutionUnit
each
:
routeResult
.
getExecutionUnits
())
{
Collection
<
Connection
>
connections
;
SQLType
sqlType
=
routeResult
.
getSqlStatement
().
getType
();
if
(
SQLType
.
DDL
==
sqlType
)
{
connections
=
connection
.
getConnectionsForDDL
(
each
.
getDataSource
());
}
else
{
connections
=
Collections
.
singletonList
(
connection
.
getConnection
(
each
.
getDataSource
()));
}
for
(
Connection
connection
:
connections
)
{
Statement
statement
=
connection
.
createStatement
(
resultSetType
,
resultSetConcurrency
,
resultSetHoldability
);
replayMethodsInvocation
(
statement
);
statementUnits
.
add
(
new
StatementUnit
(
each
,
statement
));
routedStatements
.
add
(
statement
);
}
Statement
statement
=
connection
.
getConnection
(
each
.
getDataSource
()).
createStatement
(
resultSetType
,
resultSetConcurrency
,
resultSetHoldability
);
replayMethodsInvocation
(
statement
);
statementUnits
.
add
(
new
StatementUnit
(
each
,
statement
));
routedStatements
.
add
(
statement
);
}
return
new
StatementExecutor
(
connection
.
getShardingContext
().
getExecutorEngine
(),
routeResult
.
getSqlStatement
().
getType
(),
statementUnits
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录