| 875 | } |
| 876 | |
| 877 | std::shared_ptr<Table> HashJoinSimple( |
| 878 | ExecContext* ctx, JoinType join_type, const std::vector<JoinKeyCmp>& cmp, |
| 879 | int num_key_fields, const std::vector<int32_t>& key_id_l, |
| 880 | const std::vector<int32_t>& key_id_r, |
| 881 | const std::vector<std::shared_ptr<Array>>& original_l, |
| 882 | const std::vector<std::shared_ptr<Array>>& original_r, |
| 883 | const std::vector<std::shared_ptr<Array>>& l, |
| 884 | const std::vector<std::shared_ptr<Array>>& r, const std::vector<int>& output_ids_l, |
| 885 | const std::vector<int>& output_ids_r, int64_t output_length_limit, |
| 886 | bool* length_limit_reached) { |
| 887 | std::vector<std::shared_ptr<Array>> key_l(num_key_fields); |
| 888 | std::vector<std::shared_ptr<Array>> key_r(num_key_fields); |
| 889 | for (int i = 0; i < num_key_fields; ++i) { |
| 890 | key_l[i] = original_l[i]; |
| 891 | key_r[i] = original_r[i]; |
| 892 | } |
| 893 | std::vector<bool> null_key_l = NullInKey(cmp, key_l); |
| 894 | std::vector<bool> null_key_r = NullInKey(cmp, key_r); |
| 895 | |
| 896 | std::vector<int32_t> row_ids_l; |
| 897 | std::vector<int32_t> row_ids_r; |
| 898 | HashJoinSimpleInt(join_type, key_id_l, null_key_l, key_id_r, null_key_r, &row_ids_l, |
| 899 | &row_ids_r, output_length_limit, length_limit_reached); |
| 900 | |
| 901 | std::vector<std::shared_ptr<Array>> result = ConstructJoinOutputFromRowIds( |
| 902 | ctx, row_ids_l, row_ids_r, l, r, output_ids_l, output_ids_r); |
| 903 | |
| 904 | std::vector<std::shared_ptr<Field>> fields(result.size()); |
| 905 | for (size_t i = 0; i < result.size(); ++i) { |
| 906 | fields[i] = std::make_shared<Field>("a" + std::to_string(i), result[i]->type(), true); |
| 907 | } |
| 908 | std::shared_ptr<Schema> schema = std::make_shared<Schema>(std::move(fields)); |
| 909 | return Table::Make(schema, result, result[0]->length()); |
| 910 | } |
| 911 | |
| 912 | Result<std::vector<ExecBatch>> HashJoinWithExecPlan( |
| 913 | Random64Bit& rng, bool parallel, const HashJoinNodeOptions& join_options, |
no test coverage detected