shining created CALCITE-2939: -------------------------------- Summary: NPE Array Type serialToJdbc in TypedValue when executeBatch Key: CALCITE-2939 URL: https://issues.apache.org/jira/browse/CALCITE-2939 Project: Calcite Issue Type: Bug Components: avatica Affects Versions: 1.12.0 Reporter: shining
I am using phoenix QueryServer upsert data in batch,the code as follows: {code:java} @Test public void preparedStatementArrayTest() throws Exception { final String tableName = "TEST"; try (Connection conn = DriverManager.getConnection("jdbc:phoenix:thin:http://localhost:8765"); Statement stmt = conn.createStatement()) { conn.setAutoCommit(false); assertFalse(stmt.execute("DROP TABLE IF EXISTS " + tableName)); assertFalse(stmt.execute("CREATE TABLE " + tableName + " (" + "pk VARCHAR NOT NULL PRIMARY KEY, " + "histogram INTEGER[])") ); conn.commit(); int numRows = 10; int numEvenElements = 4; int numOddElements = 6; try (PreparedStatement pstmt = conn.prepareStatement("UPSERT INTO " + tableName + " values(?, ?)")) { for (int i = 0; i < numRows; i++) { pstmt.setString(1, Integer.toString(i)); int arrayLength = i % 2 == 0 ? numEvenElements : numOddElements; Object[] arrayData = new Object[arrayLength]; for (int arrayOffset = 0; arrayOffset < arrayLength; arrayOffset++) { arrayData[arrayOffset] = Integer.toString(getArrayValueForOffset(arrayOffset)); } pstmt.setArray(2, conn.createArrayOf("VARCHAR", arrayData)); pstmt.addBatch(); pstmt.executeBatch(); } conn.commit(); } } {code} When encounter Array type, I get an error NPE: {code:java} java.lang.NullPointerException at org.apache.calcite.avatica.remote.TypedValue.serialToJdbc(TypedValue.java:362) at org.apache.calcite.avatica.remote.TypedValue.protoToJdbc(TypedValue.java:895) at org.apache.calcite.avatica.jdbc.JdbcMeta.executeBatchProtobuf(JdbcMeta.java:986) at org.apache.calcite.avatica.remote.LocalService.apply(LocalService.java:363) at org.apache.calcite.avatica.remote.Service$ExecuteBatchRequest.accept(Service.java:2990) at org.apache.calcite.avatica.remote.Service$ExecuteBatchRequest.accept(Service.java:2942) at org.apache.calcite.avatica.remote.AbstractHandler.apply(AbstractHandler.java:94) {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)