Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
b1c8e4af
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 搜索 >>
提交
b1c8e4af
编写于
3月 06, 2019
作者:
T
terrymanu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
for #1941, remove generic for CommandExecutor
上级
ca9f5a65
变更
24
隐藏空白更改
内联
并排
Showing
24 changed file
with
107 addition
and
115 deletion
+107
-115
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/MySQLFrontendEngine.java
...ere/shardingproxy/frontend/mysql/MySQLFrontendEngine.java
+12
-13
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/MySQLCommandExecutorFactory.java
.../frontend/mysql/executor/MySQLCommandExecutorFactory.java
+1
-2
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/admin/initdb/MySQLComInitDbExecutor.java
...d/mysql/executor/admin/initdb/MySQLComInitDbExecutor.java
+5
-5
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/admin/ping/MySQLComPingExecutor.java
...ntend/mysql/executor/admin/ping/MySQLComPingExecutor.java
+4
-6
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/admin/quit/MySQLComQuitExecutor.java
...ntend/mysql/executor/admin/quit/MySQLComQuitExecutor.java
+4
-6
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/generic/MySQLUnsupportedCommandExecutor.java
...sql/executor/generic/MySQLUnsupportedCommandExecutor.java
+4
-4
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/query/binary/close/MySQLComStmtCloseExecutor.java
...xecutor/query/binary/close/MySQLComStmtCloseExecutor.java
+3
-3
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/query/binary/execute/MySQLQueryComStmtExecuteExecutor.java
...uery/binary/execute/MySQLQueryComStmtExecuteExecutor.java
+8
-7
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/query/binary/prepare/MySQLComStmtPrepareExecutor.java
...tor/query/binary/prepare/MySQLComStmtPrepareExecutor.java
+4
-4
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/query/text/fieldlist/MySQLComFieldListPacketExecutor.java
...query/text/fieldlist/MySQLComFieldListPacketExecutor.java
+6
-6
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/query/text/query/MySQLComQueryPacketExecutor.java
...xecutor/query/text/query/MySQLComQueryPacketExecutor.java
+8
-7
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/PostgreSQLFrontendEngine.java
...ngproxy/frontend/postgresql/PostgreSQLFrontendEngine.java
+8
-9
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/executor/PostgreSQLCommandExecutorFactory.java
...postgresql/executor/PostgreSQLCommandExecutorFactory.java
+1
-3
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/executor/generic/PostgreSQLComTerminationExecutor.java
...ql/executor/generic/PostgreSQLComTerminationExecutor.java
+3
-3
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/executor/generic/PostgreSQLUnsupportedCommandExecutor.java
...xecutor/generic/PostgreSQLUnsupportedCommandExecutor.java
+4
-4
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/executor/query/binary/bind/PostgreSQLComBindExecutor.java
...executor/query/binary/bind/PostgreSQLComBindExecutor.java
+5
-4
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/executor/query/binary/describe/PostgreSQLComDescribeExecutor.java
.../query/binary/describe/PostgreSQLComDescribeExecutor.java
+3
-3
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/executor/query/binary/execute/PostgreSQLComExecuteExecutor.java
...or/query/binary/execute/PostgreSQLComExecuteExecutor.java
+3
-3
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/executor/query/binary/parse/PostgreSQLComParseExecutor.java
...ecutor/query/binary/parse/PostgreSQLComParseExecutor.java
+4
-4
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/executor/query/binary/sync/PostgreSQLComSyncExecutor.java
...executor/query/binary/sync/PostgreSQLComSyncExecutor.java
+3
-3
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/executor/query/text/PostgreSQLComQueryExecutor.java
...resql/executor/query/text/PostgreSQLComQueryExecutor.java
+7
-6
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-spi/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/api/CommandExecutor.java
...ingsphere/shardingproxy/frontend/api/CommandExecutor.java
+2
-4
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-spi/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/api/QueryCommandExecutor.java
...here/shardingproxy/frontend/api/QueryCommandExecutor.java
+2
-4
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-spi/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/spi/DatabaseFrontendEngine.java
...re/shardingproxy/frontend/spi/DatabaseFrontendEngine.java
+3
-2
未找到文件。
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/MySQLFrontendEngine.java
浏览文件 @
b1c8e4af
...
...
@@ -37,7 +37,6 @@ import org.apache.shardingsphere.shardingproxy.transport.api.packet.CommandPacke
import
org.apache.shardingsphere.shardingproxy.transport.api.packet.DatabasePacket
;
import
org.apache.shardingsphere.shardingproxy.transport.api.payload.PacketPayload
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.constant.MySQLServerErrorCode
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.MySQLPacket
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.MySQLCommandPacket
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.MySQLCommandPacketFactory
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.MySQLCommandPacketType
;
...
...
@@ -67,7 +66,7 @@ import java.util.Collection;
@Slf4j
public
final
class
MySQLFrontendEngine
implements
DatabaseFrontendEngine
{
private
final
MySQLAuthenticationHandler
mysqlA
uthenticationHandler
=
new
MySQLAuthenticationHandler
();
private
final
MySQLAuthenticationHandler
a
uthenticationHandler
=
new
MySQLAuthenticationHandler
();
@Override
public
PacketPayload
createPacketPayload
(
final
ByteBuf
message
)
{
...
...
@@ -88,14 +87,14 @@ public final class MySQLFrontendEngine implements DatabaseFrontendEngine {
public
void
handshake
(
final
ChannelHandlerContext
context
,
final
BackendConnection
backendConnection
)
{
int
connectionId
=
MySQLConnectionIdGenerator
.
getInstance
().
nextId
();
backendConnection
.
setConnectionId
(
connectionId
);
context
.
writeAndFlush
(
new
MySQLHandshakePacket
(
connectionId
,
mysqlA
uthenticationHandler
.
getAuthPluginData
()));
context
.
writeAndFlush
(
new
MySQLHandshakePacket
(
connectionId
,
a
uthenticationHandler
.
getAuthPluginData
()));
}
@Override
public
boolean
auth
(
final
ChannelHandlerContext
context
,
final
ByteBuf
message
,
final
BackendConnection
backendConnection
)
{
try
(
MySQLPacketPayload
payload
=
new
MySQLPacketPayload
(
message
))
{
MySQLHandshakeResponse41Packet
response41
=
new
MySQLHandshakeResponse41Packet
(
payload
);
if
(
mysqlA
uthenticationHandler
.
login
(
response41
.
getUsername
(),
response41
.
getAuthResponse
()))
{
if
(
a
uthenticationHandler
.
login
(
response41
.
getUsername
(),
response41
.
getAuthResponse
()))
{
if
(!
Strings
.
isNullOrEmpty
(
response41
.
getDatabase
())
&&
!
LogicSchemas
.
getInstance
().
schemaExists
(
response41
.
getDatabase
()))
{
context
.
writeAndFlush
(
new
MySQLErrPacket
(
response41
.
getSequenceId
()
+
1
,
MySQLServerErrorCode
.
ER_BAD_DB_ERROR
,
response41
.
getDatabase
()));
return
true
;
...
...
@@ -122,7 +121,7 @@ public final class MySQLFrontendEngine implements DatabaseFrontendEngine {
}
@Override
public
CommandExecutor
<
MySQLPacket
>
getCommandExecutor
(
final
CommandPacketType
type
,
final
CommandPacket
packet
,
final
BackendConnection
backendConnection
)
{
public
CommandExecutor
getCommandExecutor
(
final
CommandPacketType
type
,
final
CommandPacket
packet
,
final
BackendConnection
backendConnection
)
{
return
MySQLCommandExecutorFactory
.
newInstance
((
MySQLCommandPacketType
)
type
,
packet
,
backendConnection
);
}
...
...
@@ -144,24 +143,24 @@ public final class MySQLFrontendEngine implements DatabaseFrontendEngine {
}
private
void
writePackets
(
final
ChannelHandlerContext
context
,
final
MySQLPacketPayload
payload
,
final
BackendConnection
backendConnection
)
throws
SQLException
{
MySQL
CommandPacketType
type
=
getCommandPacketType
(
payload
);
MySQL
CommandPacket
commandPacket
=
getCommandPacket
(
payload
,
type
,
backendConnection
);
CommandExecutor
<
MySQLPacket
>
commandExecutor
=
getCommandExecutor
(
type
,
commandPacket
,
backendConnection
);
Collection
<
MySQL
Packet
>
responsePackets
=
commandExecutor
.
execute
();
CommandPacketType
type
=
getCommandPacketType
(
payload
);
CommandPacket
commandPacket
=
getCommandPacket
(
payload
,
type
,
backendConnection
);
CommandExecutor
commandExecutor
=
getCommandExecutor
(
type
,
commandPacket
,
backendConnection
);
Collection
<
Database
Packet
>
responsePackets
=
commandExecutor
.
execute
();
if
(
responsePackets
.
isEmpty
())
{
return
;
}
for
(
MySQL
Packet
each
:
responsePackets
)
{
for
(
Database
Packet
each
:
responsePackets
)
{
context
.
write
(
each
);
}
if
(
commandExecutor
instanceof
QueryCommandExecutor
)
{
writeQueryData
(
context
,
backendConnection
,
(
QueryCommandExecutor
<
MySQLPacket
>
)
commandExecutor
,
responsePackets
.
size
());
writeQueryData
(
context
,
backendConnection
,
(
QueryCommandExecutor
)
commandExecutor
,
responsePackets
.
size
());
}
}
@Override
public
void
writeQueryData
(
final
ChannelHandlerContext
context
,
final
BackendConnection
backendConnection
,
final
QueryCommandExecutor
<?>
queryCommandExecutor
,
final
int
sequenceIdOffse
t
)
throws
SQLException
{
final
BackendConnection
backendConnection
,
final
QueryCommandExecutor
queryCommandExecutor
,
final
int
headerPackagesCoun
t
)
throws
SQLException
{
if
(!
queryCommandExecutor
.
isQuery
()
||
!
context
.
channel
().
isActive
())
{
return
;
}
...
...
@@ -182,7 +181,7 @@ public final class MySQLFrontendEngine implements DatabaseFrontendEngine {
}
currentSequenceId
++;
}
context
.
write
(
new
MySQLEofPacket
(++
currentSequenceId
+
sequenceIdOffse
t
));
context
.
write
(
new
MySQLEofPacket
(++
currentSequenceId
+
headerPackagesCoun
t
));
}
@Override
...
...
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/MySQLCommandExecutorFactory.java
浏览文件 @
b1c8e4af
...
...
@@ -31,7 +31,6 @@ import org.apache.shardingsphere.shardingproxy.frontend.mysql.executor.query.bin
import
org.apache.shardingsphere.shardingproxy.frontend.mysql.executor.query.text.fieldlist.MySQLComFieldListPacketExecutor
;
import
org.apache.shardingsphere.shardingproxy.frontend.mysql.executor.query.text.query.MySQLComQueryPacketExecutor
;
import
org.apache.shardingsphere.shardingproxy.transport.api.packet.CommandPacket
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.MySQLPacket
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.MySQLCommandPacketType
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.admin.initdb.MySQLComInitDbPacket
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.query.binary.close.MySQLComStmtClosePacket
;
...
...
@@ -56,7 +55,7 @@ public final class MySQLCommandExecutorFactory {
* @param backendConnection backend connection
* @return command executor
*/
public
static
CommandExecutor
<
MySQLPacket
>
newInstance
(
final
MySQLCommandPacketType
commandPacketType
,
final
CommandPacket
commandPacket
,
final
BackendConnection
backendConnection
)
{
public
static
CommandExecutor
newInstance
(
final
MySQLCommandPacketType
commandPacketType
,
final
CommandPacket
commandPacket
,
final
BackendConnection
backendConnection
)
{
switch
(
commandPacketType
)
{
case
COM_QUIT:
return
new
MySQLComQuitExecutor
();
...
...
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/admin/initdb/MySQLComInitDbExecutor.java
浏览文件 @
b1c8e4af
...
...
@@ -21,8 +21,8 @@ import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.shardingproxy.backend.communication.jdbc.connection.BackendConnection
;
import
org.apache.shardingsphere.shardingproxy.backend.schema.LogicSchemas
;
import
org.apache.shardingsphere.shardingproxy.frontend.api.CommandExecutor
;
import
org.apache.shardingsphere.shardingproxy.transport.api.packet.DatabasePacket
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.constant.MySQLServerErrorCode
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.MySQLPacket
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.admin.initdb.MySQLComInitDbPacket
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.generic.MySQLErrPacket
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.generic.MySQLOKPacket
;
...
...
@@ -36,18 +36,18 @@ import java.util.Collections;
* @author zhangliang
*/
@RequiredArgsConstructor
public
final
class
MySQLComInitDbExecutor
implements
CommandExecutor
<
MySQLPacket
>
{
public
final
class
MySQLComInitDbExecutor
implements
CommandExecutor
{
private
final
MySQLComInitDbPacket
packet
;
private
final
BackendConnection
backendConnection
;
@Override
public
Collection
<
MySQL
Packet
>
execute
()
{
public
Collection
<
Database
Packet
>
execute
()
{
if
(
LogicSchemas
.
getInstance
().
schemaExists
(
packet
.
getSchema
()))
{
backendConnection
.
setCurrentSchema
(
packet
.
getSchema
());
return
Collections
.<
MySQL
Packet
>
singletonList
(
new
MySQLOKPacket
(
1
));
return
Collections
.<
Database
Packet
>
singletonList
(
new
MySQLOKPacket
(
1
));
}
return
Collections
.<
MySQL
Packet
>
singletonList
(
new
MySQLErrPacket
(
1
,
MySQLServerErrorCode
.
ER_BAD_DB_ERROR
,
packet
.
getSchema
()));
return
Collections
.<
Database
Packet
>
singletonList
(
new
MySQLErrPacket
(
1
,
MySQLServerErrorCode
.
ER_BAD_DB_ERROR
,
packet
.
getSchema
()));
}
}
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/admin/ping/MySQLComPingExecutor.java
浏览文件 @
b1c8e4af
...
...
@@ -17,9 +17,8 @@
package
org.apache.shardingsphere.shardingproxy.frontend.mysql.executor.admin.ping
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.shardingsphere.shardingproxy.frontend.api.CommandExecutor
;
import
org.apache.shardingsphere.shardingproxy.transport.
mysql.packet.MySQL
Packet
;
import
org.apache.shardingsphere.shardingproxy.transport.
api.packet.Database
Packet
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.generic.MySQLOKPacket
;
import
java.util.Collection
;
...
...
@@ -30,11 +29,10 @@ import java.util.Collections;
*
* @author zhangliang
*/
@RequiredArgsConstructor
public
final
class
MySQLComPingExecutor
implements
CommandExecutor
<
MySQLPacket
>
{
public
final
class
MySQLComPingExecutor
implements
CommandExecutor
{
@Override
public
Collection
<
MySQL
Packet
>
execute
()
{
return
Collections
.<
MySQL
Packet
>
singletonList
(
new
MySQLOKPacket
(
1
));
public
Collection
<
Database
Packet
>
execute
()
{
return
Collections
.<
Database
Packet
>
singletonList
(
new
MySQLOKPacket
(
1
));
}
}
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/admin/quit/MySQLComQuitExecutor.java
浏览文件 @
b1c8e4af
...
...
@@ -17,9 +17,8 @@
package
org.apache.shardingsphere.shardingproxy.frontend.mysql.executor.admin.quit
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.shardingsphere.shardingproxy.frontend.api.CommandExecutor
;
import
org.apache.shardingsphere.shardingproxy.transport.
mysql.packet.MySQL
Packet
;
import
org.apache.shardingsphere.shardingproxy.transport.
api.packet.Database
Packet
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.generic.MySQLOKPacket
;
import
java.util.Collection
;
...
...
@@ -30,11 +29,10 @@ import java.util.Collections;
*
* @author zhangliang
*/
@RequiredArgsConstructor
public
final
class
MySQLComQuitExecutor
implements
CommandExecutor
<
MySQLPacket
>
{
public
final
class
MySQLComQuitExecutor
implements
CommandExecutor
{
@Override
public
Collection
<
MySQL
Packet
>
execute
()
{
return
Collections
.<
MySQL
Packet
>
singletonList
(
new
MySQLOKPacket
(
1
));
public
Collection
<
Database
Packet
>
execute
()
{
return
Collections
.<
Database
Packet
>
singletonList
(
new
MySQLOKPacket
(
1
));
}
}
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/generic/MySQLUnsupportedCommandExecutor.java
浏览文件 @
b1c8e4af
...
...
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.shardingproxy.frontend.mysql.executor.generic;
import
lombok.RequiredArgsConstructor
;
import
org.apache.shardingsphere.shardingproxy.error.CommonErrorCode
;
import
org.apache.shardingsphere.shardingproxy.frontend.api.CommandExecutor
;
import
org.apache.shardingsphere.shardingproxy.transport.
mysql.packet.MySQL
Packet
;
import
org.apache.shardingsphere.shardingproxy.transport.
api.packet.Database
Packet
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.MySQLCommandPacketType
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.generic.MySQLErrPacket
;
...
...
@@ -33,12 +33,12 @@ import java.util.Collections;
* @author zhangliang
*/
@RequiredArgsConstructor
public
final
class
MySQLUnsupportedCommandExecutor
implements
CommandExecutor
<
MySQLPacket
>
{
public
final
class
MySQLUnsupportedCommandExecutor
implements
CommandExecutor
{
private
final
MySQLCommandPacketType
type
;
@Override
public
Collection
<
MySQL
Packet
>
execute
()
{
return
Collections
.<
MySQL
Packet
>
singletonList
(
new
MySQLErrPacket
(
1
,
CommonErrorCode
.
UNSUPPORTED_COMMAND
,
type
));
public
Collection
<
Database
Packet
>
execute
()
{
return
Collections
.<
Database
Packet
>
singletonList
(
new
MySQLErrPacket
(
1
,
CommonErrorCode
.
UNSUPPORTED_COMMAND
,
type
));
}
}
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/query/binary/close/MySQLComStmtCloseExecutor.java
浏览文件 @
b1c8e4af
...
...
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.shardingproxy.frontend.mysql.executor.query.bi
import
lombok.RequiredArgsConstructor
;
import
org.apache.shardingsphere.shardingproxy.frontend.api.CommandExecutor
;
import
org.apache.shardingsphere.shardingproxy.transport.
mysql.packet.MySQL
Packet
;
import
org.apache.shardingsphere.shardingproxy.transport.
api.packet.Database
Packet
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.query.binary.close.MySQLComStmtClosePacket
;
import
java.util.Collection
;
...
...
@@ -31,12 +31,12 @@ import java.util.Collections;
* @author zhangliang
*/
@RequiredArgsConstructor
public
final
class
MySQLComStmtCloseExecutor
implements
CommandExecutor
<
MySQLPacket
>
{
public
final
class
MySQLComStmtCloseExecutor
implements
CommandExecutor
{
private
final
MySQLComStmtClosePacket
packet
;
@Override
public
Collection
<
MySQL
Packet
>
execute
()
{
public
Collection
<
Database
Packet
>
execute
()
{
packet
.
removeCachedStatement
();
return
Collections
.
emptyList
();
}
...
...
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/query/binary/execute/MySQLQueryComStmtExecuteExecutor.java
浏览文件 @
b1c8e4af
...
...
@@ -29,6 +29,7 @@ import org.apache.shardingsphere.shardingproxy.backend.response.update.UpdateRes
import
org.apache.shardingsphere.shardingproxy.context.GlobalContext
;
import
org.apache.shardingsphere.shardingproxy.error.CommonErrorCode
;
import
org.apache.shardingsphere.shardingproxy.frontend.api.QueryCommandExecutor
;
import
org.apache.shardingsphere.shardingproxy.transport.api.packet.DatabasePacket
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.constant.MySQLColumnType
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.MySQLPacket
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.query.MySQLColumnDefinition41Packet
;
...
...
@@ -53,7 +54,7 @@ import java.util.List;
* @author zhangyonglun
* @author zhangliang
*/
public
final
class
MySQLQueryComStmtExecuteExecutor
implements
QueryCommandExecutor
<
MySQLPacket
>
{
public
final
class
MySQLQueryComStmtExecuteExecutor
implements
QueryCommandExecutor
{
private
final
DatabaseCommunicationEngine
databaseCommunicationEngine
;
...
...
@@ -67,16 +68,16 @@ public final class MySQLQueryComStmtExecuteExecutor implements QueryCommandExecu
}
@Override
public
Collection
<
MySQL
Packet
>
execute
()
{
public
Collection
<
Database
Packet
>
execute
()
{
if
(
GlobalContext
.
getInstance
().
isCircuitBreak
())
{
return
Collections
.<
MySQL
Packet
>
singletonList
(
new
MySQLErrPacket
(
1
,
CommonErrorCode
.
CIRCUIT_BREAK_MODE
));
return
Collections
.<
Database
Packet
>
singletonList
(
new
MySQLErrPacket
(
1
,
CommonErrorCode
.
CIRCUIT_BREAK_MODE
));
}
BackendResponse
backendResponse
=
databaseCommunicationEngine
.
execute
();
if
(
backendResponse
instanceof
ErrorResponse
)
{
return
Collections
.<
MySQL
Packet
>
singletonList
(
createErrorPacket
(((
ErrorResponse
)
backendResponse
).
getCause
()));
return
Collections
.<
Database
Packet
>
singletonList
(
createErrorPacket
(((
ErrorResponse
)
backendResponse
).
getCause
()));
}
if
(
backendResponse
instanceof
UpdateResponse
)
{
return
Collections
.<
MySQL
Packet
>
singletonList
(
createUpdatePacket
((
UpdateResponse
)
backendResponse
));
return
Collections
.<
Database
Packet
>
singletonList
(
createUpdatePacket
((
UpdateResponse
)
backendResponse
));
}
isQuery
=
true
;
return
createQueryPacket
((
QueryResponse
)
backendResponse
);
...
...
@@ -90,8 +91,8 @@ public final class MySQLQueryComStmtExecuteExecutor implements QueryCommandExecu
return
new
MySQLOKPacket
(
1
,
updateResponse
.
getUpdateCount
(),
updateResponse
.
getLastInsertId
());
}
private
Collection
<
MySQL
Packet
>
createQueryPacket
(
final
QueryResponse
backendResponse
)
{
Collection
<
MySQL
Packet
>
result
=
new
LinkedList
<>();
private
Collection
<
Database
Packet
>
createQueryPacket
(
final
QueryResponse
backendResponse
)
{
Collection
<
Database
Packet
>
result
=
new
LinkedList
<>();
List
<
QueryHeader
>
queryHeader
=
backendResponse
.
getQueryHeaders
();
result
.
add
(
new
MySQLFieldCountPacket
(++
currentSequenceId
,
queryHeader
.
size
()));
for
(
QueryHeader
each
:
queryHeader
)
{
...
...
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/query/binary/prepare/MySQLComStmtPrepareExecutor.java
浏览文件 @
b1c8e4af
...
...
@@ -28,8 +28,8 @@ import org.apache.shardingsphere.shardingproxy.backend.schema.LogicSchemas;
import
org.apache.shardingsphere.shardingproxy.backend.schema.MasterSlaveSchema
;
import
org.apache.shardingsphere.shardingproxy.backend.schema.ShardingSchema
;
import
org.apache.shardingsphere.shardingproxy.frontend.api.CommandExecutor
;
import
org.apache.shardingsphere.shardingproxy.transport.api.packet.DatabasePacket
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.constant.MySQLColumnType
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.MySQLPacket
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.query.MySQLColumnDefinition41Packet
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.query.binary.MySQLBinaryStatementRegistry
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.query.binary.prepare.MySQLComStmtPrepareOKPacket
;
...
...
@@ -45,7 +45,7 @@ import java.util.LinkedList;
* @author zhangyonglun
* @author zhangliang
*/
public
final
class
MySQLComStmtPrepareExecutor
implements
CommandExecutor
<
MySQLPacket
>
{
public
final
class
MySQLComStmtPrepareExecutor
implements
CommandExecutor
{
private
static
final
MySQLBinaryStatementRegistry
PREPARED_STATEMENT_REGISTRY
=
MySQLBinaryStatementRegistry
.
getInstance
();
...
...
@@ -62,11 +62,11 @@ public final class MySQLComStmtPrepareExecutor implements CommandExecutor<MySQLP
}
@Override
public
Collection
<
MySQL
Packet
>
execute
()
{
public
Collection
<
Database
Packet
>
execute
()
{
// TODO we should use none-sharding parsing engine in future.
SQLParsingEngine
sqlParsingEngine
=
new
SQLParsingEngine
(
LogicSchemas
.
getInstance
().
getDatabaseType
(),
packet
.
getSql
(),
getShardingRule
(
logicSchema
),
logicSchema
.
getMetaData
().
getTable
());
Collection
<
MySQL
Packet
>
result
=
new
LinkedList
<>();
Collection
<
Database
Packet
>
result
=
new
LinkedList
<>();
int
currentSequenceId
=
0
;
SQLStatement
sqlStatement
=
sqlParsingEngine
.
parse
(
true
);
int
parametersIndex
=
sqlStatement
.
getParametersIndex
();
...
...
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/query/text/fieldlist/MySQLComFieldListPacketExecutor.java
浏览文件 @
b1c8e4af
...
...
@@ -23,8 +23,8 @@ import org.apache.shardingsphere.shardingproxy.backend.communication.jdbc.connec
import
org.apache.shardingsphere.shardingproxy.backend.response.BackendResponse
;
import
org.apache.shardingsphere.shardingproxy.backend.response.error.ErrorResponse
;
import
org.apache.shardingsphere.shardingproxy.frontend.api.CommandExecutor
;
import
org.apache.shardingsphere.shardingproxy.transport.api.packet.DatabasePacket
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.constant.MySQLColumnType
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.MySQLPacket
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.query.MySQLColumnDefinition41Packet
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.query.text.fieldlist.MySQLComFieldListPacket
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.generic.MySQLEofPacket
;
...
...
@@ -40,7 +40,7 @@ import java.util.LinkedList;
*
* @author zhangliang
*/
public
final
class
MySQLComFieldListPacketExecutor
implements
CommandExecutor
<
MySQLPacket
>
{
public
final
class
MySQLComFieldListPacketExecutor
implements
CommandExecutor
{
private
static
final
String
SQL
=
"SHOW COLUMNS FROM %s FROM %s"
;
...
...
@@ -57,9 +57,9 @@ public final class MySQLComFieldListPacketExecutor implements CommandExecutor<My
}
@Override
public
Collection
<
MySQL
Packet
>
execute
()
throws
SQLException
{
public
Collection
<
Database
Packet
>
execute
()
throws
SQLException
{
BackendResponse
backendResponse
=
databaseCommunicationEngine
.
execute
();
return
backendResponse
instanceof
ErrorResponse
?
Collections
.<
MySQL
Packet
>
singletonList
(
MySQLErrPacketFactory
.
newInstance
(
1
,
((
ErrorResponse
)
backendResponse
).
getCause
()))
return
backendResponse
instanceof
ErrorResponse
?
Collections
.<
Database
Packet
>
singletonList
(
MySQLErrPacketFactory
.
newInstance
(
1
,
((
ErrorResponse
)
backendResponse
).
getCause
()))
:
getColumnDefinition41Packets
();
}
...
...
@@ -67,8 +67,8 @@ public final class MySQLComFieldListPacketExecutor implements CommandExecutor<My
return
String
.
format
(
SQL
,
packet
.
getTable
(),
schemaName
);
}
private
Collection
<
MySQL
Packet
>
getColumnDefinition41Packets
()
throws
SQLException
{
Collection
<
MySQL
Packet
>
result
=
new
LinkedList
<>();
private
Collection
<
Database
Packet
>
getColumnDefinition41Packets
()
throws
SQLException
{
Collection
<
Database
Packet
>
result
=
new
LinkedList
<>();
int
currentSequenceId
=
0
;
while
(
databaseCommunicationEngine
.
next
())
{
String
columnName
=
databaseCommunicationEngine
.
getQueryData
().
getData
().
get
(
0
).
toString
();
...
...
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/mysql/executor/query/text/query/MySQLComQueryPacketExecutor.java
浏览文件 @
b1c8e4af
...
...
@@ -28,6 +28,7 @@ import org.apache.shardingsphere.shardingproxy.backend.text.TextProtocolBackendH
import
org.apache.shardingsphere.shardingproxy.context.GlobalContext
;
import
org.apache.shardingsphere.shardingproxy.error.CommonErrorCode
;
import
org.apache.shardingsphere.shardingproxy.frontend.api.QueryCommandExecutor
;
import
org.apache.shardingsphere.shardingproxy.transport.api.packet.DatabasePacket
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.MySQLPacket
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.query.MySQLColumnDefinition41Packet
;
import
org.apache.shardingsphere.shardingproxy.transport.mysql.packet.command.query.MySQLFieldCountPacket
;
...
...
@@ -49,7 +50,7 @@ import java.util.List;
*
* @author zhangliang
*/
public
final
class
MySQLComQueryPacketExecutor
implements
QueryCommandExecutor
<
MySQLPacket
>
{
public
final
class
MySQLComQueryPacketExecutor
implements
QueryCommandExecutor
{
private
final
TextProtocolBackendHandler
textProtocolBackendHandler
;
...
...
@@ -62,16 +63,16 @@ public final class MySQLComQueryPacketExecutor implements QueryCommandExecutor<M
}
@Override
public
Collection
<
MySQL
Packet
>
execute
()
{
public
Collection
<
Database
Packet
>
execute
()
{
if
(
GlobalContext
.
getInstance
().
isCircuitBreak
())
{
return
Collections
.<
MySQL
Packet
>
singletonList
(
new
MySQLErrPacket
(
1
,
CommonErrorCode
.
CIRCUIT_BREAK_MODE
));
return
Collections
.<
Database
Packet
>
singletonList
(
new
MySQLErrPacket
(
1
,
CommonErrorCode
.
CIRCUIT_BREAK_MODE
));
}
BackendResponse
backendResponse
=
textProtocolBackendHandler
.
execute
();
if
(
backendResponse
instanceof
ErrorResponse
)
{
return
Collections
.<
MySQL
Packet
>
singletonList
(
createErrorPacket
(((
ErrorResponse
)
backendResponse
).
getCause
()));
return
Collections
.<
Database
Packet
>
singletonList
(
createErrorPacket
(((
ErrorResponse
)
backendResponse
).
getCause
()));
}
if
(
backendResponse
instanceof
UpdateResponse
)
{
return
Collections
.<
MySQL
Packet
>
singletonList
(
createUpdatePacket
((
UpdateResponse
)
backendResponse
));
return
Collections
.<
Database
Packet
>
singletonList
(
createUpdatePacket
((
UpdateResponse
)
backendResponse
));
}
isQuery
=
true
;
return
createQueryPackets
((
QueryResponse
)
backendResponse
);
...
...
@@ -85,8 +86,8 @@ public final class MySQLComQueryPacketExecutor implements QueryCommandExecutor<M
return
new
MySQLOKPacket
(
1
,
updateResponse
.
getUpdateCount
(),
updateResponse
.
getLastInsertId
());
}
private
Collection
<
MySQL
Packet
>
createQueryPackets
(
final
QueryResponse
backendResponse
)
{
Collection
<
MySQL
Packet
>
result
=
new
LinkedList
<>();
private
Collection
<
Database
Packet
>
createQueryPackets
(
final
QueryResponse
backendResponse
)
{
Collection
<
Database
Packet
>
result
=
new
LinkedList
<>();
List
<
QueryHeader
>
queryHeader
=
backendResponse
.
getQueryHeaders
();
result
.
add
(
new
MySQLFieldCountPacket
(++
currentSequenceId
,
queryHeader
.
size
()));
for
(
QueryHeader
each
:
queryHeader
)
{
...
...
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/PostgreSQLFrontendEngine.java
浏览文件 @
b1c8e4af
...
...
@@ -35,7 +35,6 @@ import org.apache.shardingsphere.shardingproxy.transport.api.packet.CommandPacke
import
org.apache.shardingsphere.shardingproxy.transport.api.packet.CommandPacketType
;
import
org.apache.shardingsphere.shardingproxy.transport.api.packet.DatabasePacket
;
import
org.apache.shardingsphere.shardingproxy.transport.api.payload.PacketPayload
;
import
org.apache.shardingsphere.shardingproxy.transport.postgresql.packet.PostgreSQLPacket
;
import
org.apache.shardingsphere.shardingproxy.transport.postgresql.packet.command.PostgreSQLCommandPacket
;
import
org.apache.shardingsphere.shardingproxy.transport.postgresql.packet.command.PostgreSQLCommandPacketFactory
;
import
org.apache.shardingsphere.shardingproxy.transport.postgresql.packet.command.PostgreSQLCommandPacketType
;
...
...
@@ -129,7 +128,7 @@ public final class PostgreSQLFrontendEngine implements DatabaseFrontendEngine {
}
@Override
public
CommandExecutor
<
PostgreSQLPacket
>
getCommandExecutor
(
final
CommandPacketType
type
,
final
CommandPacket
packet
,
final
BackendConnection
backendConnection
)
{
public
CommandExecutor
getCommandExecutor
(
final
CommandPacketType
type
,
final
CommandPacket
packet
,
final
BackendConnection
backendConnection
)
{
return
PostgreSQLCommandExecutorFactory
.
newInstance
((
PostgreSQLCommandPacketType
)
type
,
(
PostgreSQLCommandPacket
)
packet
,
backendConnection
);
}
...
...
@@ -148,10 +147,10 @@ public final class PostgreSQLFrontendEngine implements DatabaseFrontendEngine {
}
private
void
writePackets
(
final
ChannelHandlerContext
context
,
final
PostgreSQLPacketPayload
payload
,
final
BackendConnection
backendConnection
)
throws
SQLException
{
PostgreSQL
CommandPacketType
type
=
getCommandPacketType
(
payload
);
PostgreSQL
CommandPacket
commandPacket
=
getCommandPacket
(
payload
,
type
,
backendConnection
);
CommandExecutor
<
PostgreSQLPacket
>
commandExecutor
=
getCommandExecutor
(
type
,
commandPacket
,
backendConnection
);
Collection
<
PostgreSQL
Packet
>
responsePackets
=
commandExecutor
.
execute
();
CommandPacketType
type
=
getCommandPacketType
(
payload
);
CommandPacket
commandPacket
=
getCommandPacket
(
payload
,
type
,
backendConnection
);
CommandExecutor
commandExecutor
=
getCommandExecutor
(
type
,
commandPacket
,
backendConnection
);
Collection
<
Database
Packet
>
responsePackets
=
commandExecutor
.
execute
();
if
(
commandPacket
instanceof
PostgreSQLComSyncPacket
)
{
context
.
write
(
new
PostgreSQLCommandCompletePacket
());
context
.
writeAndFlush
(
new
PostgreSQLReadyForQueryPacket
());
...
...
@@ -160,11 +159,11 @@ public final class PostgreSQLFrontendEngine implements DatabaseFrontendEngine {
if
(
responsePackets
.
isEmpty
())
{
return
;
}
for
(
PostgreSQL
Packet
each
:
responsePackets
)
{
for
(
Database
Packet
each
:
responsePackets
)
{
context
.
write
(
each
);
}
if
(
commandExecutor
instanceof
QueryCommandExecutor
)
{
writeQueryData
(
context
,
backendConnection
,
(
QueryCommandExecutor
<
PostgreSQLPacket
>)
commandExecutor
,
0
);
writeQueryData
(
context
,
backendConnection
,
(
QueryCommandExecutor
)
commandExecutor
,
responsePackets
.
size
()
);
}
if
(
commandPacket
instanceof
PostgreSQLComQueryPacket
)
{
context
.
write
(
new
PostgreSQLCommandCompletePacket
());
...
...
@@ -174,7 +173,7 @@ public final class PostgreSQLFrontendEngine implements DatabaseFrontendEngine {
@Override
public
void
writeQueryData
(
final
ChannelHandlerContext
context
,
final
BackendConnection
backendConnection
,
final
QueryCommandExecutor
<?>
queryCommandExecutor
,
final
int
sequenceIdOffse
t
)
throws
SQLException
{
final
BackendConnection
backendConnection
,
final
QueryCommandExecutor
queryCommandExecutor
,
final
int
headerPackagesCoun
t
)
throws
SQLException
{
if
(
queryCommandExecutor
.
isQuery
()
&&
!
context
.
channel
().
isActive
())
{
return
;
}
...
...
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/executor/PostgreSQLCommandExecutorFactory.java
浏览文件 @
b1c8e4af
...
...
@@ -29,7 +29,6 @@ import org.apache.shardingsphere.shardingproxy.frontend.postgresql.executor.quer
import
org.apache.shardingsphere.shardingproxy.frontend.postgresql.executor.query.binary.parse.PostgreSQLComParseExecutor
;
import
org.apache.shardingsphere.shardingproxy.frontend.postgresql.executor.query.binary.sync.PostgreSQLComSyncExecutor
;
import
org.apache.shardingsphere.shardingproxy.frontend.postgresql.executor.query.text.PostgreSQLComQueryExecutor
;
import
org.apache.shardingsphere.shardingproxy.transport.postgresql.packet.PostgreSQLPacket
;
import
org.apache.shardingsphere.shardingproxy.transport.postgresql.packet.command.PostgreSQLCommandPacket
;
import
org.apache.shardingsphere.shardingproxy.transport.postgresql.packet.command.PostgreSQLCommandPacketType
;
import
org.apache.shardingsphere.shardingproxy.transport.postgresql.packet.command.query.binary.bind.PostgreSQLComBindPacket
;
...
...
@@ -52,8 +51,7 @@ public final class PostgreSQLCommandExecutorFactory {
* @param backendConnection backend connection
* @return command executor
*/
public
static
CommandExecutor
<
PostgreSQLPacket
>
newInstance
(
final
PostgreSQLCommandPacketType
commandPacketType
,
final
PostgreSQLCommandPacket
commandPacket
,
final
BackendConnection
backendConnection
)
{
public
static
CommandExecutor
newInstance
(
final
PostgreSQLCommandPacketType
commandPacketType
,
final
PostgreSQLCommandPacket
commandPacket
,
final
BackendConnection
backendConnection
)
{
switch
(
commandPacketType
)
{
case
QUERY:
return
new
PostgreSQLComQueryExecutor
((
PostgreSQLComQueryPacket
)
commandPacket
,
backendConnection
);
...
...
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/executor/generic/PostgreSQLComTerminationExecutor.java
浏览文件 @
b1c8e4af
...
...
@@ -18,7 +18,7 @@
package
org.apache.shardingsphere.shardingproxy.frontend.postgresql.executor.generic
;
import
org.apache.shardingsphere.shardingproxy.frontend.api.CommandExecutor
;
import
org.apache.shardingsphere.shardingproxy.transport.
postgresql.packet.PostgreSQL
Packet
;
import
org.apache.shardingsphere.shardingproxy.transport.
api.packet.Database
Packet
;
import
java.util.Collection
;
import
java.util.Collections
;
...
...
@@ -28,10 +28,10 @@ import java.util.Collections;
*
* @author zhangliang
*/
public
final
class
PostgreSQLComTerminationExecutor
implements
CommandExecutor
<
PostgreSQLPacket
>
{
public
final
class
PostgreSQLComTerminationExecutor
implements
CommandExecutor
{
@Override
public
Collection
<
PostgreSQL
Packet
>
execute
()
{
public
Collection
<
Database
Packet
>
execute
()
{
return
Collections
.
emptyList
();
}
}
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/executor/generic/PostgreSQLUnsupportedCommandExecutor.java
浏览文件 @
b1c8e4af
...
...
@@ -18,7 +18,7 @@
package
org.apache.shardingsphere.shardingproxy.frontend.postgresql.executor.generic
;
import
org.apache.shardingsphere.shardingproxy.frontend.api.CommandExecutor
;
import
org.apache.shardingsphere.shardingproxy.transport.
postgresql.packet.PostgreSQL
Packet
;
import
org.apache.shardingsphere.shardingproxy.transport.
api.packet.Database
Packet
;
import
org.apache.shardingsphere.shardingproxy.transport.postgresql.packet.generic.PostgreSQLErrorResponsePacket
;
import
java.util.Collection
;
...
...
@@ -30,10 +30,10 @@ import java.util.Collections;
* @author zhangyonglun
* @author zhangliang
*/
public
final
class
PostgreSQLUnsupportedCommandExecutor
implements
CommandExecutor
<
PostgreSQLPacket
>
{
public
final
class
PostgreSQLUnsupportedCommandExecutor
implements
CommandExecutor
{
@Override
public
Collection
<
PostgreSQL
Packet
>
execute
()
{
return
Collections
.<
PostgreSQL
Packet
>
singletonList
(
new
PostgreSQLErrorResponsePacket
());
public
Collection
<
Database
Packet
>
execute
()
{
return
Collections
.<
Database
Packet
>
singletonList
(
new
PostgreSQLErrorResponsePacket
());
}
}
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/executor/query/binary/bind/PostgreSQLComBindExecutor.java
浏览文件 @
b1c8e4af
...
...
@@ -29,6 +29,7 @@ import org.apache.shardingsphere.shardingproxy.backend.response.query.QueryRespo
import
org.apache.shardingsphere.shardingproxy.backend.response.update.UpdateResponse
;
import
org.apache.shardingsphere.shardingproxy.context.GlobalContext
;
import
org.apache.shardingsphere.shardingproxy.frontend.api.QueryCommandExecutor
;
import
org.apache.shardingsphere.shardingproxy.transport.api.packet.DatabasePacket
;
import
org.apache.shardingsphere.shardingproxy.transport.postgresql.constant.PostgreSQLColumnType
;
import
org.apache.shardingsphere.shardingproxy.transport.postgresql.packet.PostgreSQLPacket
;
import
org.apache.shardingsphere.shardingproxy.transport.postgresql.packet.command.query.PostgreSQLColumnDescription
;
...
...
@@ -53,7 +54,7 @@ import java.util.List;
* @author zhangyonglun
* @author zhangliang
*/
public
final
class
PostgreSQLComBindExecutor
implements
QueryCommandExecutor
<
PostgreSQLPacket
>
{
public
final
class
PostgreSQLComBindExecutor
implements
QueryCommandExecutor
{
private
final
PostgreSQLComBindPacket
packet
;
...
...
@@ -68,11 +69,11 @@ public final class PostgreSQLComBindExecutor implements QueryCommandExecutor<Pos
}
@Override
public
Collection
<
PostgreSQL
Packet
>
execute
()
{
public
Collection
<
Database
Packet
>
execute
()
{
if
(
GlobalContext
.
getInstance
().
isCircuitBreak
())
{
return
Collections
.<
PostgreSQL
Packet
>
singletonList
(
new
PostgreSQLErrorResponsePacket
());
return
Collections
.<
Database
Packet
>
singletonList
(
new
PostgreSQLErrorResponsePacket
());
}
List
<
PostgreSQL
Packet
>
result
=
new
LinkedList
<>();
List
<
Database
Packet
>
result
=
new
LinkedList
<>();
result
.
add
(
new
PostgreSQLBindCompletePacket
());
if
(
null
==
databaseCommunicationEngine
)
{
return
result
;
...
...
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/executor/query/binary/describe/PostgreSQLComDescribeExecutor.java
浏览文件 @
b1c8e4af
...
...
@@ -18,7 +18,7 @@
package
org.apache.shardingsphere.shardingproxy.frontend.postgresql.executor.query.binary.describe
;
import
org.apache.shardingsphere.shardingproxy.frontend.api.CommandExecutor
;
import
org.apache.shardingsphere.shardingproxy.transport.
postgresql.packet.PostgreSQL
Packet
;
import
org.apache.shardingsphere.shardingproxy.transport.
api.packet.Database
Packet
;
import
java.util.Collection
;
import
java.util.Collections
;
...
...
@@ -29,10 +29,10 @@ import java.util.Collections;
* @author zhangyonglun
* @author zhangliang
*/
public
final
class
PostgreSQLComDescribeExecutor
implements
CommandExecutor
<
PostgreSQLPacket
>
{
public
final
class
PostgreSQLComDescribeExecutor
implements
CommandExecutor
{
@Override
public
Collection
<
PostgreSQL
Packet
>
execute
()
{
public
Collection
<
Database
Packet
>
execute
()
{
return
Collections
.
emptyList
();
}
}
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/executor/query/binary/execute/PostgreSQLComExecuteExecutor.java
浏览文件 @
b1c8e4af
...
...
@@ -18,7 +18,7 @@
package
org.apache.shardingsphere.shardingproxy.frontend.postgresql.executor.query.binary.execute
;
import
org.apache.shardingsphere.shardingproxy.frontend.api.CommandExecutor
;
import
org.apache.shardingsphere.shardingproxy.transport.
postgresql.packet.PostgreSQL
Packet
;
import
org.apache.shardingsphere.shardingproxy.transport.
api.packet.Database
Packet
;
import
java.util.Collection
;
import
java.util.Collections
;
...
...
@@ -29,10 +29,10 @@ import java.util.Collections;
* @author zhangyonglun
* @author zhangliang
*/
public
final
class
PostgreSQLComExecuteExecutor
implements
CommandExecutor
<
PostgreSQLPacket
>
{
public
final
class
PostgreSQLComExecuteExecutor
implements
CommandExecutor
{
@Override
public
Collection
<
PostgreSQL
Packet
>
execute
()
{
public
Collection
<
Database
Packet
>
execute
()
{
return
Collections
.
emptyList
();
}
}
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/executor/query/binary/parse/PostgreSQLComParseExecutor.java
浏览文件 @
b1c8e4af
...
...
@@ -26,7 +26,7 @@ import org.apache.shardingsphere.shardingproxy.backend.schema.LogicSchema;
import
org.apache.shardingsphere.shardingproxy.backend.schema.MasterSlaveSchema
;
import
org.apache.shardingsphere.shardingproxy.backend.schema.ShardingSchema
;
import
org.apache.shardingsphere.shardingproxy.frontend.api.CommandExecutor
;
import
org.apache.shardingsphere.shardingproxy.transport.
postgresql.packet.PostgreSQL
Packet
;
import
org.apache.shardingsphere.shardingproxy.transport.
api.packet.Database
Packet
;
import
org.apache.shardingsphere.shardingproxy.transport.postgresql.packet.command.query.binary.BinaryStatementRegistry
;
import
org.apache.shardingsphere.shardingproxy.transport.postgresql.packet.command.query.binary.ConnectionScopeBinaryStatementRegistry
;
import
org.apache.shardingsphere.shardingproxy.transport.postgresql.packet.command.query.binary.parse.PostgreSQLComParsePacket
;
...
...
@@ -41,7 +41,7 @@ import java.util.Collections;
* @author zhangyonglun
* @author zhangliang
*/
public
final
class
PostgreSQLComParseExecutor
implements
CommandExecutor
<
PostgreSQLPacket
>
{
public
final
class
PostgreSQLComParseExecutor
implements
CommandExecutor
{
private
final
PostgreSQLComParsePacket
packet
;
...
...
@@ -56,7 +56,7 @@ public final class PostgreSQLComParseExecutor implements CommandExecutor<Postgre
}
@Override
public
Collection
<
PostgreSQL
Packet
>
execute
()
{
public
Collection
<
Database
Packet
>
execute
()
{
// TODO we should use none-sharding parsing engine in future.
SQLParsingEngine
sqlParsingEngine
=
new
SQLParsingEngine
(
DatabaseType
.
PostgreSQL
,
packet
.
getSql
(),
getShardingRule
(
logicSchema
),
logicSchema
.
getMetaData
().
getTable
());
if
(!
packet
.
getSql
().
isEmpty
())
{
...
...
@@ -64,7 +64,7 @@ public final class PostgreSQLComParseExecutor implements CommandExecutor<Postgre
int
parametersIndex
=
sqlStatement
.
getParametersIndex
();
binaryStatementRegistry
.
register
(
packet
.
getStatementId
(),
packet
.
getSql
(),
parametersIndex
,
packet
.
getBinaryStatementParameterTypes
());
}
return
Collections
.<
PostgreSQL
Packet
>
singletonList
(
new
PostgreSQLParseCompletePacket
());
return
Collections
.<
Database
Packet
>
singletonList
(
new
PostgreSQLParseCompletePacket
());
}
private
ShardingRule
getShardingRule
(
final
LogicSchema
logicSchema
)
{
...
...
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/executor/query/binary/sync/PostgreSQLComSyncExecutor.java
浏览文件 @
b1c8e4af
...
...
@@ -18,7 +18,7 @@
package
org.apache.shardingsphere.shardingproxy.frontend.postgresql.executor.query.binary.sync
;
import
org.apache.shardingsphere.shardingproxy.frontend.api.CommandExecutor
;
import
org.apache.shardingsphere.shardingproxy.transport.
postgresql.packet.PostgreSQL
Packet
;
import
org.apache.shardingsphere.shardingproxy.transport.
api.packet.Database
Packet
;
import
java.util.Collection
;
import
java.util.Collections
;
...
...
@@ -29,10 +29,10 @@ import java.util.Collections;
* @author zhangyonglun
* @author zhangliang
*/
public
final
class
PostgreSQLComSyncExecutor
implements
CommandExecutor
<
PostgreSQLPacket
>
{
public
final
class
PostgreSQLComSyncExecutor
implements
CommandExecutor
{
@Override
public
Collection
<
PostgreSQL
Packet
>
execute
()
{
public
Collection
<
Database
Packet
>
execute
()
{
return
Collections
.
emptyList
();
}
}
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/postgresql/executor/query/text/PostgreSQLComQueryExecutor.java
浏览文件 @
b1c8e4af
...
...
@@ -28,6 +28,7 @@ import org.apache.shardingsphere.shardingproxy.backend.text.TextProtocolBackendH
import
org.apache.shardingsphere.shardingproxy.backend.text.TextProtocolBackendHandlerFactory
;
import
org.apache.shardingsphere.shardingproxy.context.GlobalContext
;
import
org.apache.shardingsphere.shardingproxy.frontend.api.QueryCommandExecutor
;
import
org.apache.shardingsphere.shardingproxy.transport.api.packet.DatabasePacket
;
import
org.apache.shardingsphere.shardingproxy.transport.postgresql.packet.PostgreSQLPacket
;
import
org.apache.shardingsphere.shardingproxy.transport.postgresql.packet.command.query.PostgreSQLColumnDescription
;
import
org.apache.shardingsphere.shardingproxy.transport.postgresql.packet.command.query.PostgreSQLRowDescriptionPacket
;
...
...
@@ -48,7 +49,7 @@ import java.util.List;
* @author zhangyonglun
* @author zhangliang
*/
public
final
class
PostgreSQLComQueryExecutor
implements
QueryCommandExecutor
<
PostgreSQLPacket
>
{
public
final
class
PostgreSQLComQueryExecutor
implements
QueryCommandExecutor
{
private
final
TextProtocolBackendHandler
textProtocolBackendHandler
;
...
...
@@ -59,19 +60,19 @@ public final class PostgreSQLComQueryExecutor implements QueryCommandExecutor<Po
}
@Override
public
Collection
<
PostgreSQL
Packet
>
execute
()
{
public
Collection
<
Database
Packet
>
execute
()
{
if
(
GlobalContext
.
getInstance
().
isCircuitBreak
())
{
return
Collections
.<
PostgreSQL
Packet
>
singletonList
(
new
PostgreSQLErrorResponsePacket
());
return
Collections
.<
Database
Packet
>
singletonList
(
new
PostgreSQLErrorResponsePacket
());
}
BackendResponse
backendResponse
=
textProtocolBackendHandler
.
execute
();
if
(
backendResponse
instanceof
ErrorResponse
)
{
return
Collections
.<
PostgreSQL
Packet
>
singletonList
(
createErrorPacket
((
ErrorResponse
)
backendResponse
));
return
Collections
.<
Database
Packet
>
singletonList
(
createErrorPacket
((
ErrorResponse
)
backendResponse
));
}
if
(
backendResponse
instanceof
UpdateResponse
)
{
return
Collections
.<
PostgreSQL
Packet
>
singletonList
(
createUpdatePacket
((
UpdateResponse
)
backendResponse
));
return
Collections
.<
Database
Packet
>
singletonList
(
createUpdatePacket
((
UpdateResponse
)
backendResponse
));
}
Optional
<
PostgreSQLRowDescriptionPacket
>
result
=
createQueryPacket
((
QueryResponse
)
backendResponse
);
return
result
.
isPresent
()
?
Collections
.<
PostgreSQLPacket
>
singletonList
(
result
.
get
())
:
Collections
.<
PostgreSQL
Packet
>
emptyList
();
return
result
.
isPresent
()
?
Collections
.<
DatabasePacket
>
singletonList
(
result
.
get
())
:
Collections
.<
Database
Packet
>
emptyList
();
}
private
PostgreSQLErrorResponsePacket
createErrorPacket
(
final
ErrorResponse
errorResponse
)
{
...
...
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-spi/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/api/CommandExecutor.java
浏览文件 @
b1c8e4af
...
...
@@ -26,10 +26,8 @@ import java.util.Collection;
* Command executor.
*
* @author zhangliang
*
* @param <T> type of database packet
*/
public
interface
CommandExecutor
<
T
extends
DatabasePacket
>
{
public
interface
CommandExecutor
{
/**
* Execute command.
...
...
@@ -37,5 +35,5 @@ public interface CommandExecutor<T extends DatabasePacket> {
* @return database packets to be sent
* @throws SQLException SQL exception
*/
Collection
<
T
>
execute
()
throws
SQLException
;
Collection
<
DatabasePacket
>
execute
()
throws
SQLException
;
}
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-spi/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/api/QueryCommandExecutor.java
浏览文件 @
b1c8e4af
...
...
@@ -25,10 +25,8 @@ import java.sql.SQLException;
* Query command executor.
*
* @author zhangliang
*
* @param <T> type of database packet
*/
public
interface
QueryCommandExecutor
<
T
extends
DatabasePacket
>
extends
CommandExecutor
<
T
>
{
public
interface
QueryCommandExecutor
extends
CommandExecutor
{
/**
* Judge is query SQL or not.
...
...
@@ -51,5 +49,5 @@ public interface QueryCommandExecutor<T extends DatabasePacket> extends CommandE
* @return database packet of query data
* @throws SQLException SQL exception
*/
T
getQueryData
()
throws
SQLException
;
DatabasePacket
getQueryData
()
throws
SQLException
;
}
sharding-proxy/sharding-proxy-frontend/sharding-proxy-frontend-spi/src/main/java/org/apache/shardingsphere/shardingproxy/frontend/spi/DatabaseFrontendEngine.java
浏览文件 @
b1c8e4af
...
...
@@ -115,13 +115,14 @@ public interface DatabaseFrontendEngine {
/**
* Write query data.
*
* @param context channel handler context
* @param backendConnection backend connection
* @param queryCommandExecutor query command executor
* @param
sequenceIdOffset sequence ID offset
* @param
headerPackagesCount count of header packages
* @throws SQLException SQL exception
*/
void
writeQueryData
(
ChannelHandlerContext
context
,
BackendConnection
backendConnection
,
QueryCommandExecutor
<?>
queryCommandExecutor
,
int
sequenceIdOffse
t
)
throws
SQLException
;
void
writeQueryData
(
ChannelHandlerContext
context
,
BackendConnection
backendConnection
,
QueryCommandExecutor
queryCommandExecutor
,
int
headerPackagesCoun
t
)
throws
SQLException
;
/**
* Release resource.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录