Skip to content

Commit 303aa92

Browse files
committed
move orchestration out of ArrowFlightMetaImpl
1 parent 41acbdc commit 303aa92

7 files changed

Lines changed: 249 additions & 184 deletions

File tree

flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/ArrowFlightConnection.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import static org.apache.arrow.driver.jdbc.utils.ArrowFlightConnectionConfigImpl.ArrowFlightConnectionProperty.replaceSemiColons;
2020

2121
import io.netty.util.concurrent.DefaultThreadFactory;
22+
import java.sql.PreparedStatement;
23+
import java.sql.ResultSet;
2224
import java.sql.SQLException;
2325
import java.util.ArrayList;
2426
import java.util.HashMap;
@@ -257,4 +259,30 @@ BufferAllocator getBufferAllocator() {
257259
public ArrowFlightMetaImpl getMeta() {
258260
return (ArrowFlightMetaImpl) this.meta;
259261
}
262+
263+
@Override
264+
public PreparedStatement prepareStatement(final String sql) throws SQLException {
265+
checkOpen();
266+
return prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
267+
}
268+
269+
@Override
270+
public PreparedStatement prepareStatement(
271+
final String sql, final int resultSetType, final int resultSetConcurrency)
272+
throws SQLException {
273+
checkOpen();
274+
return prepareStatement(sql, resultSetType, resultSetConcurrency, getHoldability());
275+
}
276+
277+
@Override
278+
public PreparedStatement prepareStatement(
279+
final String sql,
280+
final int resultSetType,
281+
final int resultSetConcurrency,
282+
final int resultSetHoldability)
283+
throws SQLException {
284+
checkOpen();
285+
return getMeta()
286+
.createPreparedStatement(sql, resultSetType, resultSetConcurrency, resultSetHoldability);
287+
}
260288
}

flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/ArrowFlightJdbcFactory.java

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import java.sql.SQLException;
2121
import java.util.Properties;
2222
import java.util.TimeZone;
23-
import org.apache.arrow.driver.jdbc.client.ArrowFlightSqlClientHandler;
2423
import org.apache.arrow.memory.RootAllocator;
2524
import org.apache.calcite.avatica.AvaticaConnection;
2625
import org.apache.calcite.avatica.AvaticaFactory;
@@ -79,20 +78,20 @@ public ArrowFlightPreparedStatement newPreparedStatement(
7978
final Meta.Signature signature,
8079
final int resultType,
8180
final int resultSetConcurrency,
82-
final int resultSetHoldability)
83-
throws SQLException {
81+
final int resultSetHoldability) {
8482
final ArrowFlightConnection flightConnection = (ArrowFlightConnection) connection;
85-
ArrowFlightSqlClientHandler.PreparedStatement preparedStatement =
86-
flightConnection.getMeta().getPreparedStatement(statementHandle);
83+
final AvaticaStatement existingStatement =
84+
flightConnection.statementMap.get(statementHandle.id);
85+
if (existingStatement instanceof ArrowFlightPreparedStatement) {
86+
return (ArrowFlightPreparedStatement) existingStatement;
87+
}
88+
if (existingStatement != null) {
89+
throw new IllegalStateException(
90+
"Unexpected statement type found for prepared statement handle: " + statementHandle);
91+
}
8792

88-
return ArrowFlightPreparedStatement.newPreparedStatement(
89-
flightConnection,
90-
preparedStatement,
91-
statementHandle,
92-
signature,
93-
resultType,
94-
resultSetConcurrency,
95-
resultSetHoldability);
93+
throw new IllegalStateException(
94+
"PreparedStatement was not pre-created for handle: " + statementHandle);
9695
}
9796

9897
@Override

flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/ArrowFlightJdbcFlightStreamResultSet.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ static ArrowFlightJdbcFlightStreamResultSet fromFlightInfo(
106106
final TimeZone timeZone = TimeZone.getDefault();
107107
final QueryState state = new QueryState();
108108

109-
final Meta.Signature signature = ArrowFlightMetaImpl.newSignature(null, null, null);
109+
final Meta.Signature signature = ArrowFlightMetaImpl.buildDefaultSignature();
110110

111111
final AvaticaResultSetMetaData resultSetMetaData =
112112
new AvaticaResultSetMetaData(null, null, signature);

flight/flight-sql-jdbc-core/src/main/java/org/apache/arrow/driver/jdbc/ArrowFlightJdbcVectorSchemaRootResultSet.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public static ArrowFlightJdbcVectorSchemaRootResultSet fromVectorSchemaRoot(
7373
final TimeZone timeZone = TimeZone.getDefault();
7474
final QueryState state = new QueryState();
7575

76-
final Meta.Signature signature = ArrowFlightMetaImpl.newSignature(null, null, null);
76+
final Meta.Signature signature = ArrowFlightMetaImpl.buildDefaultSignature();
7777

7878
final AvaticaResultSetMetaData resultSetMetaData =
7979
new AvaticaResultSetMetaData(null, null, signature);

0 commit comments

Comments
 (0)