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.execute;
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.execute.PostgreSQLComExecutePacket;
23 import org.apache.shardingsphere.proxy.frontend.command.executor.CommandExecutor;
24 import org.apache.shardingsphere.proxy.frontend.postgresql.command.PortalContext;
25 import org.apache.shardingsphere.proxy.frontend.postgresql.command.query.extended.Portal;
26 import org.apache.shardingsphere.sql.parser.sql.common.statement.tcl.CommitStatement;
27 import org.apache.shardingsphere.sql.parser.sql.common.statement.tcl.RollbackStatement;
28
29 import java.sql.SQLException;
30 import java.util.List;
31
32
33
34
35 @RequiredArgsConstructor
36 public final class PostgreSQLComExecuteExecutor implements CommandExecutor {
37
38 private final PortalContext portalContext;
39
40 private final PostgreSQLComExecutePacket packet;
41
42 @Override
43 public List<DatabasePacket> execute() throws SQLException {
44 return portalContext.get(packet.getPortal()).execute(packet.getMaxRows());
45 }
46
47 @Override
48 public void close() throws SQLException {
49 Portal portal = portalContext.get(packet.getPortal());
50 if (portal.getSqlStatement() instanceof CommitStatement || portal.getSqlStatement() instanceof RollbackStatement) {
51 portalContext.closeAll();
52 }
53 }
54 }