This is an automated email from the ASF dual-hosted git repository.
felixybw pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-gluten.git
The following commit(s) were added to refs/heads/main by this push:
new 3ff9254d9c [GLUTEN-6887][VL] Daily Update Velox Version (2025_11_20)
(#11129)
3ff9254d9c is described below
commit 3ff9254d9cf72e1e0fa58942a4b3d2fd8dc7cb54
Author: Gluten Performance Bot
<[email protected]>
AuthorDate: Thu Nov 20 21:06:40 2025 +0000
[GLUTEN-6887][VL] Daily Update Velox Version (2025_11_20) (#11129)
* [GLUTEN-6887][VL] Daily Update Velox Version (dft-2025_11_20)
Upstream Velox's New Commits:
1944aab79 by Jake Jung, refactor(exception): Decouple line number logging
logic (#15521)
7eab76d4a by Masha Basmanova, refactor: Move toSubfieldFilter API to
PlanBuilder (#15556)
ecddafb76 by Masha Basmanova, refactor: Change leafCallToSubfieldFilter API
to return an optional pair (#15555)
f35d24c49 by Bikramjeet Vig, fix: Max length estimation in
DateTimeFormatter (#15532)
Signed-off-by: glutenperfbot <[email protected]>
* Update SparkExprToSubfieldFilterParser.h
* Remove toSubfieldFilter implementation
Removed the implementation of toSubfieldFilter function, which handled
logical 'or' and 'not' expressions.
* Update SparkExprToSubfieldFilterParser.h
* Refactor leafCallToSubfieldFilter to use std::nullopt
* Update types in leafCallToSubfieldFilter method
* Update combine function to use facebook::velox namespace
* fix compile, limit cache size
Signed-off-by: Yuan <[email protected]>
---------
Signed-off-by: glutenperfbot <[email protected]>
Signed-off-by: Yuan <[email protected]>
Co-authored-by: glutenperfbot <[email protected]>
Co-authored-by: BInwei Yang <[email protected]>
Co-authored-by: Yuan <[email protected]>
---
.github/workflows/velox_backend_cache.yml | 5 ++
.github/workflows/velox_backend_x86.yml | 2 +
.../functions/SparkExprToSubfieldFilterParser.cc | 76 ++++++++++------------
.../functions/SparkExprToSubfieldFilterParser.h | 8 +--
dev/ci-velox-buildstatic-centos-7.sh | 1 -
ep/build-velox/src/get-velox.sh | 4 +-
6 files changed, 46 insertions(+), 50 deletions(-)
diff --git a/.github/workflows/velox_backend_cache.yml
b/.github/workflows/velox_backend_cache.yml
index db17eadf9c..60ca54ecda 100644
--- a/.github/workflows/velox_backend_cache.yml
+++ b/.github/workflows/velox_backend_cache.yml
@@ -45,6 +45,7 @@ jobs:
run: |
docker run -v $GITHUB_WORKSPACE:/work -w /work
apache/gluten:vcpkg-centos-7 bash -c "
export CCACHE_DIR=/work/.ccache
+ export CCACHE_MAXSIZE=1G
mkdir -p /work/.ccache
bash dev/ci-velox-buildstatic-centos-7.sh
"
@@ -73,6 +74,7 @@ jobs:
ccache-centos8-release-default-${{runner.arch}}
- name: Build Gluten native libraries
run: |
+ export CCACHE_MAXSIZE=1G
bash dev/ci-velox-buildstatic-centos-9.sh
- name: Save Ccache
uses: actions/cache/save@v3
@@ -100,6 +102,7 @@ jobs:
- name: Build Gluten shared libraries
run: |
df -a
+ export CCACHE_MAXSIZE=1G
bash dev/ci-velox-buildshared-centos-8.sh
ccache -s
- name: Save Ccache
@@ -125,6 +128,7 @@ jobs:
run: |
docker run -v $GITHUB_WORKSPACE:/work -w /work
apache/gluten:vcpkg-centos-7 bash -c "
export CCACHE_DIR=/work/.ccache
+ export CCACHE_MAXSIZE=1G
mkdir -p /work/.ccache
bash dev/ci-velox-buildstatic-centos-7-enhanced-features.sh
"
@@ -154,6 +158,7 @@ jobs:
- name: Build Gluten shared libraries
run: |
df -a
+ export CCACHE_MAXSIZE=1G
bash dev/buildbundle-veloxbe.sh --run_setup_script=OFF
--build_arrow=OFF --spark_version=3.4 --enable_gpu=ON
ccache -s
- name: Save Ccache
diff --git a/.github/workflows/velox_backend_x86.yml
b/.github/workflows/velox_backend_x86.yml
index e87b822b3d..c200b79a62 100644
--- a/.github/workflows/velox_backend_x86.yml
+++ b/.github/workflows/velox_backend_x86.yml
@@ -73,7 +73,9 @@ jobs:
df -a
cd /work
export CCACHE_DIR=/work/.ccache
+ export CCACHE_MAXSIZE=1G
mkdir -p /work/.ccache
+ ccache -sz
bash dev/ci-velox-buildstatic-centos-7.sh
ccache -s
mkdir -p /work/.m2/repository/org/apache/arrow/
diff --git a/cpp/velox/operators/functions/SparkExprToSubfieldFilterParser.cc
b/cpp/velox/operators/functions/SparkExprToSubfieldFilterParser.cc
index c1bc452bd8..20baaa413e 100644
--- a/cpp/velox/operators/functions/SparkExprToSubfieldFilterParser.cc
+++ b/cpp/velox/operators/functions/SparkExprToSubfieldFilterParser.cc
@@ -20,87 +20,81 @@ namespace gluten {
using namespace facebook::velox;
-std::pair<common::Subfield, std::unique_ptr<common::Filter>>
SparkExprToSubfieldFilterParser::toSubfieldFilter(
- const core::TypedExprPtr& expr,
- core::ExpressionEvaluator* evaluator) {
- if (expr->isCallKind(); auto* call =
expr->asUnchecked<core::CallTypedExpr>()) {
- if (call->name() == "or") {
- auto left = toSubfieldFilter(call->inputs()[0], evaluator);
- auto right = toSubfieldFilter(call->inputs()[1], evaluator);
- VELOX_CHECK(left.first == right.first);
- return {std::move(left.first), makeOrFilter(std::move(left.second),
std::move(right.second))};
- }
- common::Subfield subfield;
- std::unique_ptr<common::Filter> filter;
- if (call->name() == "not") {
- if (auto* inner = call->inputs()[0]->asUnchecked<core::CallTypedExpr>())
{
- filter = leafCallToSubfieldFilter(*inner, subfield, evaluator, true);
- }
- } else {
- filter = leafCallToSubfieldFilter(*call, subfield, evaluator, false);
- }
- if (filter) {
- return std::make_pair(std::move(subfield), std::move(filter));
- }
+namespace {
+std::optional<std::pair<facebook::velox::common::Subfield,
std::unique_ptr<facebook::velox::common::Filter>>> combine(
+ facebook::velox::common::Subfield& subfield,
+ std::unique_ptr<facebook::velox::common::Filter>& filter) {
+ if (filter != nullptr) {
+ return std::make_pair(std::move(subfield), std::move(filter));
}
- VELOX_UNSUPPORTED("Unsupported expression for range filter: {}",
expr->toString());
+
+ return std::nullopt;
}
+} // namespace
-std::unique_ptr<common::Filter>
SparkExprToSubfieldFilterParser::leafCallToSubfieldFilter(
+std::optional<std::pair<facebook::velox::common::Subfield,
std::unique_ptr<facebook::velox::common::Filter>>>
+SparkExprToSubfieldFilterParser::leafCallToSubfieldFilter(
const core::CallTypedExpr& call,
- common::Subfield& subfield,
core::ExpressionEvaluator* evaluator,
bool negated) {
if (call.inputs().empty()) {
- return nullptr;
+ return std::nullopt;
}
const auto* leftSide = call.inputs()[0].get();
+ common::Subfield subfield;
if (call.name() == "equalto") {
if (toSubfield(leftSide, subfield)) {
- return negated ? makeNotEqualFilter(call.inputs()[1], evaluator) :
makeEqualFilter(call.inputs()[1], evaluator);
+ auto filter =
+ negated ? makeNotEqualFilter(call.inputs()[1], evaluator) :
makeEqualFilter(call.inputs()[1], evaluator);
+ return combine(subfield, filter);
}
} else if (call.name() == "lessthanorequal") {
if (toSubfield(leftSide, subfield)) {
- return negated ? makeGreaterThanFilter(call.inputs()[1], evaluator)
- : makeLessThanOrEqualFilter(call.inputs()[1], evaluator);
+ auto filter = negated ? makeGreaterThanFilter(call.inputs()[1],
evaluator)
+ : makeLessThanOrEqualFilter(call.inputs()[1],
evaluator);
+ return combine(subfield, filter);
}
} else if (call.name() == "lessthan") {
if (toSubfield(leftSide, subfield)) {
- return negated ? makeGreaterThanOrEqualFilter(call.inputs()[1],
evaluator)
- : makeLessThanFilter(call.inputs()[1], evaluator);
+ auto filter = negated ? makeGreaterThanOrEqualFilter(call.inputs()[1],
evaluator)
+ : makeLessThanFilter(call.inputs()[1], evaluator);
+ return combine(subfield, filter);
}
} else if (call.name() == "greaterthanorequal") {
if (toSubfield(leftSide, subfield)) {
- return negated ? makeLessThanFilter(call.inputs()[1], evaluator)
- : makeGreaterThanOrEqualFilter(call.inputs()[1],
evaluator);
+ auto filter = negated ? makeLessThanFilter(call.inputs()[1], evaluator)
+ : makeGreaterThanOrEqualFilter(call.inputs()[1],
evaluator);
+ return combine(subfield, filter);
}
} else if (call.name() == "greaterthan") {
if (toSubfield(leftSide, subfield)) {
- return negated ? makeLessThanOrEqualFilter(call.inputs()[1], evaluator)
- : makeGreaterThanFilter(call.inputs()[1], evaluator);
+ auto filter = negated ? makeLessThanOrEqualFilter(call.inputs()[1],
evaluator)
+ : makeGreaterThanFilter(call.inputs()[1],
evaluator);
+ return combine(subfield, filter);
}
} else if (call.name() == "in") {
if (toSubfield(leftSide, subfield)) {
- return makeInFilter(call.inputs()[1], evaluator, negated);
+ auto filter = makeInFilter(call.inputs()[1], evaluator, negated);
+ return combine(subfield, filter);
}
} else if (call.name() == "isnull") {
if (toSubfield(leftSide, subfield)) {
if (negated) {
- return exec::isNotNull();
+ return std::make_pair(std::move(subfield),
facebook::velox::exec::isNotNull());
}
- return exec::isNull();
+ return std::make_pair(std::move(subfield),
facebook::velox::exec::isNull());
}
} else if (call.name() == "isnotnull") {
if (toSubfield(leftSide, subfield)) {
if (negated) {
- return exec::isNull();
+ return std::make_pair(std::move(subfield),
facebook::velox::exec::isNull());
}
- return exec::isNotNull();
+ return std::make_pair(std::move(subfield),
facebook::velox::exec::isNotNull());
}
}
- return nullptr;
+ return std::nullopt;
}
} // namespace gluten
diff --git a/cpp/velox/operators/functions/SparkExprToSubfieldFilterParser.h
b/cpp/velox/operators/functions/SparkExprToSubfieldFilterParser.h
index 4b699fb172..0f7d826446 100644
--- a/cpp/velox/operators/functions/SparkExprToSubfieldFilterParser.h
+++ b/cpp/velox/operators/functions/SparkExprToSubfieldFilterParser.h
@@ -23,13 +23,9 @@ namespace gluten {
/// 2) The supported functions vary.
class SparkExprToSubfieldFilterParser : public
facebook::velox::exec::ExprToSubfieldFilterParser {
public:
- std::pair<facebook::velox::common::Subfield,
std::unique_ptr<facebook::velox::common::Filter>> toSubfieldFilter(
- const facebook::velox::core::TypedExprPtr& expr,
- facebook::velox::core::ExpressionEvaluator* evaluator) override;
-
- std::unique_ptr<facebook::velox::common::Filter> leafCallToSubfieldFilter(
+ std::optional<std::pair<facebook::velox::common::Subfield,
std::unique_ptr<facebook::velox::common::Filter>>>
+ leafCallToSubfieldFilter(
const facebook::velox::core::CallTypedExpr& call,
- facebook::velox::common::Subfield& subfield,
facebook::velox::core::ExpressionEvaluator* evaluator,
bool negated) override;
};
diff --git a/dev/ci-velox-buildstatic-centos-7.sh
b/dev/ci-velox-buildstatic-centos-7.sh
index 6737c6329c..29b707f035 100755
--- a/dev/ci-velox-buildstatic-centos-7.sh
+++ b/dev/ci-velox-buildstatic-centos-7.sh
@@ -19,6 +19,5 @@ set -e
source /opt/rh/devtoolset-11/enable
source /opt/rh/rh-git227/enable
-export NUM_THREADS=2
./dev/builddeps-veloxbe.sh --enable_vcpkg=ON --build_arrow=OFF
--build_tests=OFF --build_benchmarks=OFF \
--build_examples=OFF --enable_s3=ON --enable_gcs=ON
--enable_hdfs=ON --enable_abfs=ON
diff --git a/ep/build-velox/src/get-velox.sh b/ep/build-velox/src/get-velox.sh
index daed97b219..b71568bee5 100755
--- a/ep/build-velox/src/get-velox.sh
+++ b/ep/build-velox/src/get-velox.sh
@@ -18,8 +18,8 @@ set -exu
CURRENT_DIR=$(cd "$(dirname "$BASH_SOURCE")"; pwd)
VELOX_REPO=https://github.com/IBM/velox.git
-VELOX_BRANCH=dft-2025_11_19
-VELOX_ENHANCED_BRANCH=ibm-2025_11_19
+VELOX_BRANCH=dft-2025_11_20
+VELOX_ENHANCED_BRANCH=ibm-2025_11_20
VELOX_HOME=""
RUN_SETUP_SCRIPT=ON
ENABLE_ENHANCED_FEATURES=OFF
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]