[ https://issues.apache.org/jira/browse/HIVE-5089?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Julien Letrouit resolved HIVE-5089. ----------------------------------- Resolution: Fixed Fix Version/s: 0.12.0 Fixed on trunk. > Non query PreparedStatements are always failing on remote HiveServer2 > --------------------------------------------------------------------- > > Key: HIVE-5089 > URL: https://issues.apache.org/jira/browse/HIVE-5089 > Project: Hive > Issue Type: Bug > Components: JDBC > Affects Versions: 0.11.0 > Reporter: Julien Letrouit > Fix For: 0.12.0 > > > This is reproducing the issue systematically: > {noformat} > import org.apache.hive.jdbc.HiveDriver; > import java.sql.Connection; > import java.sql.DriverManager; > import java.sql.PreparedStatement; > public class Main { > public static void main(String[] args) throws Exception { > DriverManager.registerDriver(new HiveDriver()); > Connection conn = DriverManager.getConnection("jdbc:hive2://someserver"); > PreparedStatement smt = conn.prepareStatement("SET hivevar:test=1"); > smt.execute(); // Exception here > conn.close(); > } > } > {noformat} > It is producing the following stacktrace: > {noformat} > Exception in thread "main" java.sql.SQLException: Could not create ResultSet: > null > at > org.apache.hive.jdbc.HiveQueryResultSet.retrieveSchema(HiveQueryResultSet.java:183) > at > org.apache.hive.jdbc.HiveQueryResultSet.<init>(HiveQueryResultSet.java:134) > at > org.apache.hive.jdbc.HiveQueryResultSet$Builder.build(HiveQueryResultSet.java:122) > at > org.apache.hive.jdbc.HivePreparedStatement.executeImmediate(HivePreparedStatement.java:194) > at > org.apache.hive.jdbc.HivePreparedStatement.execute(HivePreparedStatement.java:137) > at Main.main(Main.java:12) > Caused by: org.apache.thrift.transport.TTransportException > at > org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132) > at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) > at > org.apache.thrift.transport.TSaslTransport.readLength(TSaslTransport.java:346) > at > org.apache.thrift.transport.TSaslTransport.readFrame(TSaslTransport.java:423) > at org.apache.thrift.transport.TSaslTransport.read(TSaslTransport.java:405) > at > org.apache.thrift.transport.TSaslClientTransport.read(TSaslClientTransport.java:37) > at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) > at > org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:378) > at > org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:297) > at > org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:204) > at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:69) > at > org.apache.hive.service.cli.thrift.TCLIService$Client.recv_GetResultSetMetadata(TCLIService.java:466) > at > org.apache.hive.service.cli.thrift.TCLIService$Client.GetResultSetMetadata(TCLIService.java:453) > at > org.apache.hive.jdbc.HiveQueryResultSet.retrieveSchema(HiveQueryResultSet.java:154) > ... 5 more > {noformat} > I tried to fix it, unfortunately, the standalone server used in unit tests do > not reproduce the issue. The following test added to TestJdbcDriver2 is > passing: > {noformat} > public void testNonQueryPrepareStatement() throws Exception { > try { > PreparedStatement ps = con.prepareStatement("SET hivevar:test=1"); > boolean hasResultSet = ps.execute(); > assertTrue(hasResultSet); > ps.close(); > } catch (Exception e) { > e.printStackTrace(); > fail(e.toString()); > } > } > {noformat} > Any guidance on how to reproduce it in tests would be appreciated. > Impact: the data analysis tools we are using are performing > PreparedStatements. The use of custom UDF is forcing us to add 'ADD JAR ...' > and 'CREATE TEMPORARY FUNCTION ...' statement to our query. Those statements > are failing when executed as PreparedStatements. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira