MCPcopy Create free account
hub / github.com/apache/arrow / RunEmptyTest

Function RunEmptyTest

cpp/src/arrow/acero/hash_join_node_test.cc:175–234  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

173}
174
175void RunEmptyTest(JoinType type, bool parallel) {
176 auto l_schema = schema({field("l_i32", int32()), field("l_str", utf8())});
177 auto r_schema = schema({field("r_str", utf8()), field("r_i32", int32())});
178
179 int multiplicity = parallel ? 100 : 1;
180
181 BatchesWithSchema l_empty, r_empty, l_n_empty, r_n_empty;
182
183 l_empty = GenerateBatchesFromString(l_schema, {R"([])"}, multiplicity);
184 r_empty = GenerateBatchesFromString(r_schema, {R"([])"}, multiplicity);
185
186 l_n_empty =
187 GenerateBatchesFromString(l_schema, {R"([[0,"d"], [1,"b"]])"}, multiplicity);
188 r_n_empty = GenerateBatchesFromString(r_schema, {R"([["f", 0], ["b", 1], ["b", 2]])"},
189 multiplicity);
190
191 std::vector<FieldRef> l_keys{{"l_str"}};
192 std::vector<FieldRef> r_keys{{"r_str"}};
193
194 switch (type) {
195 case JoinType::LEFT_SEMI:
196 // both empty
197 CheckRunOutput(type, l_empty, r_empty, l_keys, r_keys, l_empty, parallel);
198 // right empty
199 CheckRunOutput(type, l_n_empty, r_empty, l_keys, r_keys, l_empty, parallel);
200 // left empty
201 CheckRunOutput(type, l_empty, r_n_empty, l_keys, r_keys, l_empty, parallel);
202 break;
203 case JoinType::RIGHT_SEMI:
204 // both empty
205 CheckRunOutput(type, l_empty, r_empty, l_keys, r_keys, r_empty, parallel);
206 // right empty
207 CheckRunOutput(type, l_n_empty, r_empty, l_keys, r_keys, r_empty, parallel);
208 // left empty
209 CheckRunOutput(type, l_empty, r_n_empty, l_keys, r_keys, r_empty, parallel);
210 break;
211 case JoinType::LEFT_ANTI:
212 // both empty
213 CheckRunOutput(type, l_empty, r_empty, l_keys, r_keys, l_empty, parallel);
214 // right empty
215 CheckRunOutput(type, l_n_empty, r_empty, l_keys, r_keys, l_n_empty, parallel);
216 // left empty
217 CheckRunOutput(type, l_empty, r_n_empty, l_keys, r_keys, l_empty, parallel);
218 break;
219 case JoinType::RIGHT_ANTI:
220 // both empty
221 CheckRunOutput(type, l_empty, r_empty, l_keys, r_keys, r_empty, parallel);
222 // right empty
223 CheckRunOutput(type, l_n_empty, r_empty, l_keys, r_keys, r_empty, parallel);
224 // left empty
225 CheckRunOutput(type, l_empty, r_n_empty, l_keys, r_keys, r_n_empty, parallel);
226 break;
227 case JoinType::INNER:
228 case JoinType::LEFT_OUTER:
229 case JoinType::RIGHT_OUTER:
230 case JoinType::FULL_OUTER:
231 default:
232 FAIL() << "join type not implemented!";

Callers 1

TEST_PFunction · 0.85

Calls 4

CheckRunOutputFunction · 0.70
schemaFunction · 0.50
fieldFunction · 0.50

Tested by

no test coverage detected