This is an automated email from the ASF dual-hosted git repository.
JkSelf pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gluten.git
The following commit(s) were added to refs/heads/main by this push:
new 7f5ff0def7 [VL] Disable useHashTableCache if the hash table is not
pre-built during HashJoinNode creation (#12487)
7f5ff0def7 is described below
commit 7f5ff0def7916ad9d7504ac07b0f093c32409052
Author: JiaKe <[email protected]>
AuthorDate: Fri Jul 10 12:30:01 2026 +0100
[VL] Disable useHashTableCache if the hash table is not pre-built during
HashJoinNode creation (#12487)
---
cpp/velox/substrait/SubstraitToVeloxPlan.cc | 32 +++++++++++++++++++++++++++--
1 file changed, 30 insertions(+), 2 deletions(-)
diff --git a/cpp/velox/substrait/SubstraitToVeloxPlan.cc
b/cpp/velox/substrait/SubstraitToVeloxPlan.cc
index bdc6d35c29..2b68476abb 100644
--- a/cpp/velox/substrait/SubstraitToVeloxPlan.cc
+++ b/cpp/velox/substrait/SubstraitToVeloxPlan.cc
@@ -458,6 +458,34 @@ core::PlanNodePtr
SubstraitToVeloxPlanConverter::toVeloxPlan(const ::substrait::
} else if (
sJoin.has_advanced_extension() &&
SubstraitParser::configSetInOptimization(sJoin.advanced_extension(),
"isBHJ=")) {
+ const std::string hashTableId = sJoin.hashtableid();
+ bool useHashTableCache = false;
+ if (!hashTableId.empty()) {
+ try {
+ const auto handle = getJoin(hashTableId);
+ if (handle != 0) {
+ auto hashTableBuilder =
ObjectStore::retrieve<gluten::HashTableBuilder>(handle);
+ useHashTableCache = (hashTableBuilder != nullptr);
+ }
+ } catch (const std::exception& e) {
+ LOG(WARNING) << "Failed to retrieve pre-built HashTableBuilder for
cache key: " << hashTableId
+ << ", error: " << e.what() << ". Disable hash table cache
and build a new table.";
+ }
+ }
+
+ if (!useHashTableCache) {
+ return std::make_shared<core::HashJoinNode>(
+ nextPlanNodeId(),
+ joinType,
+ isNullAwareAntiJoin,
+ leftKeys,
+ rightKeys,
+ filter,
+ leftNode,
+ rightNode,
+ getJoinOutputType(leftNode, rightNode, joinType));
+ }
+
// Create HashJoinNode node
return std::make_shared<core::HashJoinNode>(
nextPlanNodeId(),
@@ -469,11 +497,11 @@ core::PlanNodePtr
SubstraitToVeloxPlanConverter::toVeloxPlan(const ::substrait::
leftNode,
rightNode,
getJoinOutputType(leftNode, rightNode, joinType),
- true,
+ useHashTableCache,
false,
false,
nullptr,
- sJoin.hashtableid());
+ hashTableId);
} else {
// Create HashJoinNode node
return std::make_shared<core::HashJoinNode>(
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]