Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion service-rpc/if/TCLIService.thrift
Original file line number Diff line number Diff line change
Expand Up @@ -539,7 +539,7 @@ struct TOperationHandle {
// does not generate a result set, and calling
// GetResultSetMetadata or FetchResults against
// this OperationHandle will generate an error.
3: required bool hasResultSet
3: optional bool hasResultSet

// For operations that don't generate result sets,
// modifiedRowCount is either:
Expand Down
17 changes: 8 additions & 9 deletions service-rpc/src/gen/thrift/gen-cpp/TCLIService_types.cpp

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 5 additions & 2 deletions service-rpc/src/gen/thrift/gen-cpp/TCLIService_types.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions service-rpc/src/gen/thrift/gen-py/TCLIService/ttypes.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions service-rpc/src/gen/thrift/gen-rb/t_c_l_i_service_types.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 11 additions & 4 deletions service/src/java/org/apache/hive/service/cli/OperationHandle.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public class OperationHandle extends Handle {

private final OperationType opType;
private final TProtocolVersion protocol;
private boolean hasResultSet = false;
private Boolean hasResultSet = null;

public OperationHandle(OperationType opType, TProtocolVersion protocol) {
super();
Expand All @@ -40,7 +40,7 @@ public OperationHandle(TOperationHandle tOperationHandle) {
public OperationHandle(TOperationHandle tOperationHandle, TProtocolVersion protocol) {
super(tOperationHandle.getOperationId());
this.opType = OperationType.getOperationType(tOperationHandle.getOperationType());
this.hasResultSet = tOperationHandle.isHasResultSet();
this.hasResultSet = tOperationHandle.isSetHasResultSet() ? tOperationHandle.isHasResultSet() : null;
this.protocol = protocol;
}

Expand All @@ -53,14 +53,21 @@ public void setHasResultSet(boolean hasResultSet) {
}

public boolean hasResultSet() {
return hasResultSet;
// null check to retain the old behavior
return hasResultSet == null ? false : hasResultSet;
}

public boolean isHasResultSetIsSet() {
return hasResultSet != null;
}

public TOperationHandle toTOperationHandle() {
TOperationHandle tOperationHandle = new TOperationHandle();
tOperationHandle.setOperationId(getHandleIdentifier().toTHandleIdentifier());
tOperationHandle.setOperationType(opType.toTOperationType());
tOperationHandle.setHasResultSet(hasResultSet);
if (hasResultSet != null) {
tOperationHandle.setHasResultSet(hasResultSet);
}
return tOperationHandle;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,18 @@ public class OperationStatus {
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, boolean hasResultSetIsSet) {
this.state = state;
this.taskStatus = taskStatus;
this.operationStarted = operationStarted;
this.operationCompleted = operationCompleted;
this.hasResultSet = hasResultSet;
this.hasResultSet = hasResultSetIsSet ? hasResultSet : null;
this.operationException = operationException;
}

Expand All @@ -59,7 +60,7 @@ public long getOperationCompleted() {
}

public boolean getHasResultSet() {
return hasResultSet;
return hasResultSet == null ? false : hasResultSet;
}

public HiveSQLException getOperationException() {
Expand All @@ -81,4 +82,8 @@ public long getNumModifiedRows() {
void setNumModifiedRows(long numRows) {
this.numModifiedRows = numRows;
}

public boolean isHasResultSetIsSet() {
return hasResultSet != null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public abstract class Operation {
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;
Expand Down Expand Up @@ -139,11 +139,12 @@ public OperationStatus getStatus() {
} catch (HiveSQLException sqlException) {
LOG.error("Error getting task status for " + opHandle.toString(), sqlException);
}
return new OperationStatus(state, taskStatus, operationStart, operationComplete, hasResultSet, operationException);
return new OperationStatus(state, taskStatus, operationStart, operationComplete, hasResultSet(),
operationException, hasResultSet != null);
}

public boolean hasResultSet() {
return hasResultSet;
return hasResultSet == null ? false : hasResultSet;
}

protected void setHasResultSet(boolean hasResultSet) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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))) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.isHasResultSet(), opException, resp.isSetHasResultSet());
} catch (HiveSQLException e) {
throw e;
} catch (Exception e) {
Expand Down