| 307 | } |
| 308 | |
| 309 | void HashJoinSIPOptimizer::visitHashJoin(LogicalOperator* op) { |
| 310 | auto& hashJoin = op->cast<LogicalHashJoin>(); |
| 311 | if (LogicalOperatorUtils::isAccHashJoin(hashJoin)) { |
| 312 | return; |
| 313 | } |
| 314 | if (hashJoin.getSIPInfo().position == SemiMaskPosition::PROHIBIT) { |
| 315 | return; |
| 316 | } |
| 317 | if (tryBuildToProbeHJSIP(op)) { // Try build to probe SIP first. |
| 318 | return; |
| 319 | } |
| 320 | if (hashJoin.getSIPInfo().position == SemiMaskPosition::PROHIBIT_PROBE_TO_BUILD) { |
| 321 | return; |
| 322 | } |
| 323 | tryProbeToBuildHJSIP(op); |
| 324 | } |
| 325 | |
| 326 | // TODO(Xiyang): we don't apply SIP from build to probe. |
| 327 | void HashJoinSIPOptimizer::visitIntersect(LogicalOperator* op) { |
nothing calls this directly
no test coverage detected