diff --git a/service/src/java/org/apache/hive/service/cli/OperationStatus.java b/service/src/java/org/apache/hive/service/cli/OperationStatus.java index 581bf92..8c1d036 100644 --- a/service/src/java/org/apache/hive/service/cli/OperationStatus.java +++ b/service/src/java/org/apache/hive/service/cli/OperationStatus.java @@ -28,12 +28,13 @@ private final String taskStatus; private final long operationStarted; private final long operationCompleted; - private final boolean hasResultSet; + private final Boolean hasResultSet; private final HiveSQLException operationException; private JobProgressUpdate jobProgressUpdate; private long numModifiedRows; - public OperationStatus(OperationState state, String taskStatus, long operationStarted, long operationCompleted, boolean hasResultSet, HiveSQLException operationException) { + public OperationStatus(OperationState state, String taskStatus, long operationStarted, long operationCompleted, + Boolean hasResultSet, HiveSQLException operationException) { this.state = state; this.taskStatus = taskStatus; this.operationStarted = operationStarted; @@ -59,7 +60,7 @@ public long getOperationCompleted() { } public boolean getHasResultSet() { - return hasResultSet; + return hasResultSet == null ? false : hasResultSet; } public HiveSQLException getOperationException() { @@ -81,4 +82,8 @@ public long getNumModifiedRows() { void setNumModifiedRows(long numRows) { this.numModifiedRows = numRows; } + + public boolean isHasResultSetIsSet() { + return hasResultSet != null; + } } diff --git a/service/src/java/org/apache/hive/service/cli/operation/Operation.java b/service/src/java/org/apache/hive/service/cli/operation/Operation.java index cb995de..32c24e8 100644 --- a/service/src/java/org/apache/hive/service/cli/operation/Operation.java +++ b/service/src/java/org/apache/hive/service/cli/operation/Operation.java @@ -61,7 +61,7 @@ private final OperationHandle opHandle; public static final FetchOrientation DEFAULT_FETCH_ORIENTATION = FetchOrientation.FETCH_NEXT; public static final Logger LOG = LoggerFactory.getLogger(Operation.class.getName()); - protected boolean hasResultSet; + protected Boolean hasResultSet = null; protected volatile HiveSQLException operationException; protected volatile Future backgroundHandle; protected OperationLog operationLog; @@ -143,7 +143,7 @@ public OperationStatus getStatus() { } public boolean hasResultSet() { - return hasResultSet; + return hasResultSet == null ? false : hasResultSet; } protected void setHasResultSet(boolean hasResultSet) { diff --git a/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIService.java b/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIService.java index 059e4c9..085604b 100644 --- a/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIService.java +++ b/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIService.java @@ -706,7 +706,9 @@ public TGetOperationStatusResp GetOperationStatus(TGetOperationStatusReq req) th resp.setTaskStatus(operationStatus.getTaskStatus()); resp.setOperationStarted(operationStatus.getOperationStarted()); resp.setOperationCompleted(operationStatus.getOperationCompleted()); - resp.setHasResultSet(operationStatus.getHasResultSet()); + if (operationStatus.isHasResultSetIsSet()) { + resp.setHasResultSet(operationStatus.getHasResultSet()); + } JobProgressUpdate progressUpdate = operationStatus.jobProgressUpdate(); ProgressMonitorStatusMapper mapper = ProgressMonitorStatusMapper.DEFAULT; if ("tez".equals(hiveConf.getVar(ConfVars.HIVE_EXECUTION_ENGINE))) { diff --git a/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIServiceClient.java b/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIServiceClient.java index df16b64..078eff0 100644 --- a/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIServiceClient.java +++ b/service/src/java/org/apache/hive/service/cli/thrift/ThriftCLIServiceClient.java @@ -384,7 +384,7 @@ public OperationStatus getOperationStatus(OperationHandle opHandle, boolean getP opException = new HiveSQLException(resp.getErrorMessage(), resp.getSqlState(), resp.getErrorCode()); } return new OperationStatus(opState, resp.getTaskStatus(), resp.getOperationStarted(), - resp.getOperationCompleted(), resp.isHasResultSet(), opException); + resp.getOperationCompleted(), resp.isSetHasResultSet() ? resp.isHasResultSet() : null, opException); } catch (HiveSQLException e) { throw e; } catch (Exception e) {