TODO: Consider changing Cartesian Products such that each has exactly two child operations. Try to replace Cartesian Products (cross joins) with Value Hash Joins. * This is viable when a Cartesian Product is combining two streams that each satisfies * one side of an EQUALS filter operation, like: * MATCH (a), (b) WHERE ID(a) = ID(b) */
| 196 | * one side of an EQUALS filter operation, like: |
| 197 | * MATCH (a), (b) WHERE ID(a) = ID(b) */ |
| 198 | void applyJoin(ExecutionPlan *plan) { |
| 199 | OpBase **cps = ExecutionPlan_CollectOps(plan->root, OPType_CARTESIAN_PRODUCT); |
| 200 | uint cp_count = array_len(cps); |
| 201 | |
| 202 | for(uint i = 0; i < cp_count; i++) { |
| 203 | OpBase *cp = cps[i]; |
| 204 | _reduce_cp_to_hashjoin(plan, cp); |
| 205 | } |
| 206 | array_free(cps); |
| 207 | } |
| 208 |
no test coverage detected