Skip to content
This repository has been archived by the owner on Sep 18, 2023. It is now read-only.

Commit

Permalink
in Q72, it is possible that probe key is null in hashjoin, fix here
Browse files Browse the repository at this point in the history
Signed-off-by: Chendi Xue <[email protected]>
  • Loading branch information
xuechendi committed Feb 2, 2021
1 parent 5c00073 commit a37a11f
Showing 1 changed file with 26 additions and 16 deletions.
42 changes: 26 additions & 16 deletions cpp/src/codegen/arrow_compute/ext/conditioned_probe_kernel.cc
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,7 @@ class ConditionedProbeKernel::Impl {
// chendi: But we still use name unsafe_row_${id} to pass key data
prepare_ss << GetCTypeString(right_key_project_codegen_[0]->result()->type()) << " "
<< unsafe_row_name << ";" << std::endl;
prepare_ss << "bool " << unsafe_row_name << "_validity = false;" << std::endl;
do_unsafe_row = false;
} else {
std::stringstream unsafe_row_define_ss;
Expand Down Expand Up @@ -256,6 +257,7 @@ class ConditionedProbeKernel::Impl {
} else {
prepare_ss << "if (" << validity_name << ") {" << std::endl;
prepare_ss << unsafe_row_name << " = " << key_name << ";" << std::endl;
prepare_ss << unsafe_row_name << "_validity = true;" << std::endl;
prepare_ss << "}" << std::endl;
}

Expand Down Expand Up @@ -1450,8 +1452,9 @@ class ConditionedProbeKernel::Impl {
auto range_index_name = "range_" + std::to_string(hash_relation_id_) + "_i";
codes_ss << "int32_t " << index_name << ";" << std::endl;
if (key_hash_field_list_.size() == 1) {
codes_ss << index_name << " = " << hash_relation_name << "->Get(unsafe_row_"
<< hash_relation_id_ << ");" << std::endl;
codes_ss << index_name << " = unsafe_row_" << hash_relation_id_ << "_validity?"
<< hash_relation_name << "->Get(unsafe_row_" << hash_relation_id_
<< "):-1;" << std::endl;
} else {
codes_ss << index_name << " = " << hash_relation_name << "->Get(key_"
<< hash_relation_id_ << ", unsafe_row_" << hash_relation_id_ << ");"
Expand Down Expand Up @@ -1493,8 +1496,9 @@ class ConditionedProbeKernel::Impl {
codes_ss << "std::vector<ArrayItemIndex> " << item_index_list_name << ";"
<< std::endl;
if (key_hash_field_list_.size() == 1) {
codes_ss << index_name << " = " << hash_relation_name << "->Get(unsafe_row_"
<< hash_relation_id_ << ");" << std::endl;
codes_ss << index_name << " = unsafe_row_" << hash_relation_id_ << "_validity?"
<< hash_relation_name << "->Get(unsafe_row_" << hash_relation_id_
<< "):-1;" << std::endl;
} else {
codes_ss << index_name << " = " << hash_relation_name << "->Get(key_"
<< hash_relation_id_ << ", unsafe_row_" << hash_relation_id_ << ");"
Expand Down Expand Up @@ -1538,17 +1542,19 @@ class ConditionedProbeKernel::Impl {
codes_ss << "int32_t " << index_name << ";" << std::endl;
if (cond_check) {
if (key_hash_field_list_.size() == 1) {
codes_ss << index_name << " = " << hash_relation_name << "->Get(unsafe_row_"
<< hash_relation_id_ << ");" << std::endl;
codes_ss << index_name << " = unsafe_row_" << hash_relation_id_ << "_validity?"
<< hash_relation_name << "->Get(unsafe_row_" << hash_relation_id_
<< "):-1;" << std::endl;
} else {
codes_ss << index_name << " = " << hash_relation_name << "->Get(key_"
<< hash_relation_id_ << ", unsafe_row_" << hash_relation_id_ << ");"
<< std::endl;
}
} else {
if (key_hash_field_list_.size() == 1) {
codes_ss << index_name << " = " << hash_relation_name << "->IfExists(unsafe_row_"
<< hash_relation_id_ << ");" << std::endl;
codes_ss << index_name << " = unsafe_row_" << hash_relation_id_ << "_validity?"
<< hash_relation_name << "->IfExists(unsafe_row_" << hash_relation_id_
<< "):-1;" << std::endl;
} else {
codes_ss << index_name << " = " << hash_relation_name << "->IfExists(key_"
<< hash_relation_id_ << ", unsafe_row_" << hash_relation_id_ << ");"
Expand Down Expand Up @@ -1598,17 +1604,19 @@ class ConditionedProbeKernel::Impl {
codes_ss << "int32_t " << index_name << ";" << std::endl;
if (cond_check) {
if (key_hash_field_list_.size() == 1) {
codes_ss << index_name << " = " << hash_relation_name << "->Get(unsafe_row_"
<< hash_relation_id_ << ");" << std::endl;
codes_ss << index_name << " = unsafe_row_" << hash_relation_id_ << "_validity?"
<< hash_relation_name << "->Get(unsafe_row_" << hash_relation_id_
<< "):-1;" << std::endl;
} else {
codes_ss << index_name << " = " << hash_relation_name << "->Get(key_"
<< hash_relation_id_ << ", unsafe_row_" << hash_relation_id_ << ");"
<< std::endl;
}
} else {
if (key_hash_field_list_.size() == 1) {
codes_ss << index_name << " = " << hash_relation_name << "->IfExists(unsafe_row_"
<< hash_relation_id_ << ");" << std::endl;
codes_ss << index_name << " = unsafe_row_" << hash_relation_id_ << "_validity?"
<< hash_relation_name << "->IfExists(unsafe_row_" << hash_relation_id_
<< "):-1;" << std::endl;
} else {
codes_ss << index_name << " = " << hash_relation_name << "->IfExists(key_"
<< hash_relation_id_ << ", unsafe_row_" << hash_relation_id_ << ");"
Expand Down Expand Up @@ -1660,17 +1668,19 @@ class ConditionedProbeKernel::Impl {
codes_ss << "int32_t " << index_name << ";" << std::endl;
if (cond_check) {
if (key_hash_field_list_.size() == 1) {
codes_ss << index_name << " = " << hash_relation_name << "->Get(unsafe_row_"
<< hash_relation_id_ << ");" << std::endl;
codes_ss << index_name << " = unsafe_row_" << hash_relation_id_ << "_validity?"
<< hash_relation_name << "->Get(unsafe_row_" << hash_relation_id_
<< "):-1;" << std::endl;
} else {
codes_ss << index_name << " = " << hash_relation_name << "->Get(key_"
<< hash_relation_id_ << ", unsafe_row_" << hash_relation_id_ << ");"
<< std::endl;
}
} else {
if (key_hash_field_list_.size() == 1) {
codes_ss << index_name << " = " << hash_relation_name << "->IfExists(unsafe_row_"
<< hash_relation_id_ << ");" << std::endl;
codes_ss << index_name << " = unsafe_row_" << hash_relation_id_ << "_validity?"
<< hash_relation_name << "->IfExists(unsafe_row_" << hash_relation_id_
<< "):-1;" << std::endl;
} else {
codes_ss << index_name << " = " << hash_relation_name << "->IfExists(key_"
<< hash_relation_id_ << ", unsafe_row_" << hash_relation_id_ << ");"
Expand Down

0 comments on commit a37a11f

Please sign in to comment.