Skip to content

Commit

Permalink
Do not store exceptions under TRY (facebookincubator#9994)
Browse files Browse the repository at this point in the history
Summary:
Pull Request resolved: facebookincubator#9994

Do not store exceptions when EvalCtx::captureErrorDetails() is false.

Reviewed By: xiaoxmeng, pedroerp

Differential Revision: D58010139

fbshipit-source-id: b922def6bba7c40dbdfcd913789eedead2992216
  • Loading branch information
mbasmanova authored and facebook-github-bot committed Jun 1, 2024
1 parent baf6910 commit 3681638
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 7 deletions.
2 changes: 1 addition & 1 deletion velox/expression/CastExpr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ VectorPtr CastExpr::castToDate(
makeErrorMessage(input, row, DATE()),
result.error().message()));
} else {
context.setStatus(row, Status::UserError(""));
context.setStatus(row, Status::UserError());
}
}
} else {
Expand Down
22 changes: 17 additions & 5 deletions velox/expression/EvalCtx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,11 @@ void EvalCtx::setError(
throwError(exceptionPtr);
}

addError(index, toVeloxException(exceptionPtr), errors_);
if (captureErrorDetails_) {
addError(index, toVeloxException(exceptionPtr), errors_);
} else {
addError(index, errors_);
}
}

// This should be used onlly when exceptionPtr is guranteed to be a
Expand All @@ -234,7 +238,11 @@ void EvalCtx::setVeloxExceptionError(
std::rethrow_exception(exceptionPtr);
}

addError(index, exceptionPtr, errors_);
if (captureErrorDetails_) {
addError(index, exceptionPtr, errors_);
} else {
addError(index, errors_);
}
}

void EvalCtx::setErrors(
Expand All @@ -244,9 +252,13 @@ void EvalCtx::setErrors(
throwError(exceptionPtr);
}

auto veloxException = toVeloxException(exceptionPtr);
rows.applyToSelected(
[&](auto row) { addError(row, veloxException, errors_); });
if (captureErrorDetails_) {
auto veloxException = toVeloxException(exceptionPtr);
rows.applyToSelected(
[&](auto row) { addError(row, veloxException, errors_); });
} else {
rows.applyToSelected([&](auto row) { addError(row, errors_); });
}
}

void EvalCtx::addElementErrorsToTopLevel(
Expand Down
2 changes: 1 addition & 1 deletion velox/type/Conversions.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ Expected<T> callFollyTo(const F& v) {
const auto result = folly::tryTo<T>(v);
if (result.hasError()) {
if (threadSkipErrorDetails()) {
return folly::makeUnexpected(Status::UserError(""));
return folly::makeUnexpected(Status::UserError());
}
return folly::makeUnexpected(Status::UserError(
"{}", folly::makeConversionError(result.error(), "").what()));
Expand Down

0 comments on commit 3681638

Please sign in to comment.