mirror of
https://github.com/actiontech/dble.git
synced 2026-05-05 05:50:32 -05:00
[inner-2321] fix: explain statement contained in multiple-sql appears lost connection...
(cherry picked from commit 02f9ee6b60)
This commit is contained in:
@@ -205,25 +205,25 @@ public final class ExplainHandler {
|
||||
ByteBuffer buffer = service.allocate();
|
||||
// writeDirectly header
|
||||
ResultSetHeaderPacket header = PacketUtil.getHeader(FIELD_COUNT);
|
||||
byte packetId = header.getPacketId();
|
||||
header.setPacketId(service.nextPacketId());
|
||||
buffer = header.write(buffer, service, true);
|
||||
|
||||
// writeDirectly fields
|
||||
for (FieldPacket field : FIELDS) {
|
||||
field.setPacketId(++packetId);
|
||||
field.setPacketId(service.nextPacketId());
|
||||
buffer = field.write(buffer, service, true);
|
||||
}
|
||||
|
||||
// writeDirectly eof
|
||||
EOFPacket eof = new EOFPacket();
|
||||
eof.setPacketId(++packetId);
|
||||
eof.setPacketId(service.nextPacketId());
|
||||
buffer = eof.write(buffer, service, true);
|
||||
|
||||
if (!rrs.isNeedOptimizer()) {
|
||||
// writeDirectly rows
|
||||
for (RouteResultsetNode node : rrs.getNodes()) {
|
||||
RowDataPacket row = getRow(node, service.getCharset().getResults());
|
||||
row.setPacketId(++packetId);
|
||||
row.setPacketId(service.nextPacketId());
|
||||
buffer = row.write(buffer, service, true);
|
||||
}
|
||||
} else {
|
||||
@@ -239,7 +239,7 @@ public final class ExplainHandler {
|
||||
RouteResultsetNode[] nodes = {new RouteResultsetNode(routeNode, rrs.getSqlType(), builder.getNode().getSql())};
|
||||
for (RouteResultsetNode node : nodes) {
|
||||
RowDataPacket row = getRow(node, service.getCharset().getResults());
|
||||
row.setPacketId(++packetId);
|
||||
row.setPacketId(service.nextPacketId());
|
||||
buffer = row.write(buffer, service, true);
|
||||
}
|
||||
} else {
|
||||
@@ -249,14 +249,14 @@ public final class ExplainHandler {
|
||||
row.add(StringUtil.encode(result.getName(), service.getCharset().getResults()));
|
||||
row.add(StringUtil.encode(result.getType(), service.getCharset().getResults()));
|
||||
row.add(StringUtil.encode(result.getRefOrSQL(), service.getCharset().getResults()));
|
||||
row.setPacketId(++packetId);
|
||||
row.setPacketId(service.nextPacketId());
|
||||
buffer = row.write(buffer, service, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
// writeDirectly last eof
|
||||
EOFRowPacket lastEof = new EOFRowPacket();
|
||||
lastEof.setPacketId(++packetId);
|
||||
lastEof.setPacketId(service.nextPacketId());
|
||||
lastEof.write(buffer, service);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user