From 3681638b7fde17d9d217c1f92b895a7fa0bafbda Mon Sep 17 00:00:00 2001 From: Masha Basmanova Date: Fri, 31 May 2024 17:56:30 -0700 Subject: [PATCH] Do not store exceptions under TRY (#9994) Summary: Pull Request resolved: https://github.com/facebookincubator/velox/pull/9994 Do not store exceptions when EvalCtx::captureErrorDetails() is false. Reviewed By: xiaoxmeng, pedroerp Differential Revision: D58010139 fbshipit-source-id: b922def6bba7c40dbdfcd913789eedead2992216 --- velox/expression/CastExpr.cpp | 2 +- velox/expression/EvalCtx.cpp | 22 +++++++++++++++++----- velox/type/Conversions.h | 2 +- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/velox/expression/CastExpr.cpp b/velox/expression/CastExpr.cpp index 8a90081c4dfe..4314f4eea58e 100644 --- a/velox/expression/CastExpr.cpp +++ b/velox/expression/CastExpr.cpp @@ -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 { diff --git a/velox/expression/EvalCtx.cpp b/velox/expression/EvalCtx.cpp index b36c0f56f7c5..4e3346400aea 100644 --- a/velox/expression/EvalCtx.cpp +++ b/velox/expression/EvalCtx.cpp @@ -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 @@ -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( @@ -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( diff --git a/velox/type/Conversions.h b/velox/type/Conversions.h index ca5fce62d2ad..cf96d8669b06 100644 --- a/velox/type/Conversions.h +++ b/velox/type/Conversions.h @@ -71,7 +71,7 @@ Expected callFollyTo(const F& v) { const auto result = folly::tryTo(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()));