kiszk commented on code in PR #48166:
URL: https://github.com/apache/arrow/pull/48166#discussion_r2557476034


##########
cpp/src/arrow/acero/hash_join.cc:
##########
@@ -306,12 +307,33 @@ class HashJoinBasicImpl : public HashJoinImpl {
 
     size_t num_probed_rows = match.size() + no_match.size();
     if (mask.is_scalar()) {
-      const auto& mask_scalar = mask.scalar_as<BooleanScalar>();
-      if (mask_scalar.is_valid && mask_scalar.value) {
-        // All rows passed, nothing left to do
-        return Status::OK();
+#if ARROW_LITTLE_ENDIAN
+       const auto& mask_scalar = mask.scalar_as<BooleanScalar>();
+       if (mask_scalar.is_valid && mask_scalar.value) {
+         // All rows passed, nothing left to do
+         return Status::OK();
+#else
+      // Check if the scalar is a BooleanScalar before casting
+      if (mask.scalar()->type->id() == Type::BOOL) {

Review Comment:
   @Vishwanatha-HD I think that this change makes sense for both platforms: big 
and little endians. We do not need to use `#if ... #else ... #endif`. 
   
   Or, should we fix `BooleanScalar` to avoid throwing `std::bad_cast`?  cc 
@pitrou 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to