[ https://issues.apache.org/jira/browse/HIVE-5060?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13756847#comment-13756847 ]
Henry Robinson commented on HIVE-5060: -------------------------------------- [~vgumashta] - sorry about the delay, I've uploaded the patch to review board here: https://reviews.apache.org/r/13948/ The approach in HIVE-4569 will be more general, but this fixes an immediate issue for other implementations of the HS2 API at very little cost to Hive. BTW, I believe the test failures from the patch are unrelated. > JDBC driver assumes executeStatement is synchronous > --------------------------------------------------- > > Key: HIVE-5060 > URL: https://issues.apache.org/jira/browse/HIVE-5060 > Project: Hive > Issue Type: Bug > Components: JDBC > Affects Versions: 0.11.0 > Reporter: Henry Robinson > Fix For: 0.11.1, 0.12.0 > > Attachments: > 0001-HIVE-5060-JDBC-driver-assumes-executeStatement-is-sy.patch, > HIVE-5060.patch > > > The JDBC driver seems to assume that {{ExecuteStatement}} is a synchronous > call when performing updates via {{executeUpdate}}, where the following > comment on the RPC in the Thrift file indicates otherwise: > {code} > // ExecuteStatement() > // > // Execute a statement. > // The returned OperationHandle can be used to check on the > // status of the statement, and to fetch results once the > // statement has finished executing. > {code} > I understand that Hive's implementation of {{ExecuteStatement}} is blocking > (see https://issues.apache.org/jira/browse/HIVE-4569), but presumably other > implementations of the HiveServer2 API (and I'm talking specifically about > Impala here, but others might have a similar concern) should be free to > return a pollable {{OperationHandle}} per the specification. > The JDBC driver's {{executeUpdate}} is as follows: > {code} > public int executeUpdate(String sql) throws SQLException { > execute(sql); > return 0; > } > {code} > {{execute(sql)}} discards the {{OperationHandle}} that it gets from the > server after determining whether there are results to be fetched. > This is problematic for us, because Impala will cancel queries that are > running when a session executes, but there's no easy way to be sure that an > {{INSERT}} statement has completed before terminating a session on the client. -- 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