1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.db.protocol.postgresql.packet.generic;
19
20 import lombok.RequiredArgsConstructor;
21 import org.apache.shardingsphere.db.protocol.postgresql.packet.identifier.PostgreSQLIdentifierPacket;
22 import org.apache.shardingsphere.db.protocol.postgresql.packet.identifier.PostgreSQLIdentifierTag;
23 import org.apache.shardingsphere.db.protocol.postgresql.packet.identifier.PostgreSQLMessagePacketType;
24 import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacketPayload;
25
26 import java.util.Arrays;
27 import java.util.Collection;
28 import java.util.HashSet;
29
30
31
32
33 @RequiredArgsConstructor
34 public final class PostgreSQLCommandCompletePacket extends PostgreSQLIdentifierPacket {
35
36 private static final Collection<String> TAGS_WITH_COUNT = new HashSet<>(Arrays.asList("INSERT", "SELECT", "UPDATE", "DELETE", "MOVE"));
37
38 private final String sqlCommand;
39
40 private final long rowCount;
41
42 @Override
43 protected void write(final PostgreSQLPacketPayload payload) {
44 if (!TAGS_WITH_COUNT.contains(sqlCommand)) {
45 payload.writeStringNul(sqlCommand);
46 return;
47 }
48 String delimiter = "INSERT".equals(sqlCommand) ? " 0 " : " ";
49 payload.writeStringNul(sqlCommand + delimiter + rowCount);
50 }
51
52 @Override
53 public PostgreSQLIdentifierTag getIdentifier() {
54 return PostgreSQLMessagePacketType.COMMAND_COMPLETE;
55 }
56 }