public class ImplementIntersectAndExceptAsUnion extends Object implements PlanOptimizer
Eg: SELECT a FROM foo EXCEPT SELECT x FROM bar
=> SELECT a FROM (SELECT a, COUNT(foo_marker) AS foo_cnt, COUNT(bar_marker) AS bar_cnt FROM ( SELECT a, true as foo_marker, null as bar_marker FROM foo UNION ALL SELECT x, null as foo_marker, true as bar_marker FROM bar ) T1 GROUP BY a) T2 WHERE foo_cnt >= 1 AND bar_cnt = 0;Constructor and Description |
---|
ImplementIntersectAndExceptAsUnion() |
Modifier and Type | Method and Description |
---|---|
PlanNode |
optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
public PlanNode optimize(PlanNode plan, Session session, TypeProvider types, SymbolAllocator symbolAllocator, PlanNodeIdAllocator idAllocator, WarningCollector warningCollector)
optimize
in interface PlanOptimizer
Copyright © 2012–2019. All rights reserved.