in db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/PostgreSQLAggregatedCommandPacket.java [41:94]
public PostgreSQLAggregatedCommandPacket(final List<PostgreSQLCommandPacket> packets) {
this.packets = packets;
String firstStatementId = null;
String firstPortal = null;
int parsePacketCount = 0;
int bindPacketCountForFirstStatement = 0;
int executePacketCountForFirstStatement = 0;
int batchPacketBeginIndex = -1;
int batchPacketEndIndex = -1;
int index = 0;
for (PostgreSQLCommandPacket each : packets) {
if (each instanceof PostgreSQLComParsePacket) {
if (++parsePacketCount > 1) {
break;
}
if (null == firstStatementId) {
firstStatementId = ((PostgreSQLComParsePacket) each).getStatementId();
} else if (!firstStatementId.equals(((PostgreSQLComParsePacket) each).getStatementId())) {
break;
}
}
if (each instanceof PostgreSQLComBindPacket) {
if (-1 == batchPacketBeginIndex) {
batchPacketBeginIndex = index;
}
if (null == firstStatementId) {
firstStatementId = ((PostgreSQLComBindPacket) each).getStatementId();
} else if (!firstStatementId.equals(((PostgreSQLComBindPacket) each).getStatementId())) {
break;
}
if (null == firstPortal) {
firstPortal = ((PostgreSQLComBindPacket) each).getPortal();
} else if (!firstPortal.equals(((PostgreSQLComBindPacket) each).getPortal())) {
break;
}
bindPacketCountForFirstStatement++;
}
if (each instanceof PostgreSQLComExecutePacket) {
if (index > batchPacketEndIndex) {
batchPacketEndIndex = index;
}
if (null == firstPortal) {
firstPortal = ((PostgreSQLComExecutePacket) each).getPortal();
} else if (!firstPortal.equals(((PostgreSQLComExecutePacket) each).getPortal())) {
break;
}
executePacketCountForFirstStatement++;
}
index++;
}
this.batchPacketBeginIndex = batchPacketBeginIndex;
this.batchPacketEndIndex = batchPacketEndIndex;
containsBatchedStatements = bindPacketCountForFirstStatement == executePacketCountForFirstStatement && bindPacketCountForFirstStatement >= 3;
}