1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.proxy.frontend.postgresql.command.query.extended.close;
19
20 import lombok.RequiredArgsConstructor;
21 import org.apache.shardingsphere.db.protocol.packet.DatabasePacket;
22 import org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.extended.close.PostgreSQLCloseCompletePacket;
23 import org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.extended.close.PostgreSQLComClosePacket;
24 import org.apache.shardingsphere.infra.exception.generic.UnsupportedSQLOperationException;
25 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
26 import org.apache.shardingsphere.proxy.frontend.command.executor.CommandExecutor;
27 import org.apache.shardingsphere.proxy.frontend.postgresql.command.PortalContext;
28
29 import java.sql.SQLException;
30 import java.util.Collection;
31 import java.util.Collections;
32
33
34
35
36 @RequiredArgsConstructor
37 public final class PostgreSQLComCloseExecutor implements CommandExecutor {
38
39 private final PortalContext portalContext;
40
41 private final PostgreSQLComClosePacket packet;
42
43 private final ConnectionSession connectionSession;
44
45 @Override
46 public Collection<DatabasePacket> execute() throws SQLException {
47 switch (packet.getType()) {
48 case PREPARED_STATEMENT:
49 connectionSession.getServerPreparedStatementRegistry().removePreparedStatement(packet.getName());
50 break;
51 case PORTAL:
52 portalContext.close(packet.getName());
53 break;
54 default:
55 throw new UnsupportedSQLOperationException(packet.getType().name());
56 }
57 return Collections.singleton(new PostgreSQLCloseCompletePacket());
58 }
59 }