@Test public void testIntersect() { assertStatement("SELECT 123 INTERSECT DISTINCT SELECT 123 INTERSECT ALL SELECT 123", new Query( Optional.empty(), new Intersect(ImmutableList.of( new Intersect(ImmutableList.of(createSelect123(), createSelect123()), true), createSelect123() ), false), Optional.empty(), Optional.empty())); }
@Override protected Void visitIntersect(Intersect node, Integer indent) { Iterator<Relation> relations = node.getRelations().iterator(); while (relations.hasNext()) { processRelation(relations.next(), indent); if (relations.hasNext()) { builder.append("INTERSECT "); if (!node.isDistinct()) { builder.append("ALL "); } } } return null; }
@Override public int hashCode() { return Objects.hash(relations, isDistinct()); } }
boolean collision() { return oval.intersects(rect.getBounds()); } public static void main(String[] args) { Intersect i = new Intersect(); i.setVisible(true); if (i.collision()) System.out.println("boom"); else System.out.println("no boom"); }
@Override protected RelationPlan visitIntersect(Intersect node, Void context) { checkArgument(!node.getRelations().isEmpty(), "No relations specified for INTERSECT"); SetOperationPlan setOperationPlan = process(node); PlanNode planNode = new IntersectNode(idAllocator.getNextId(), setOperationPlan.getSources(), setOperationPlan.getSymbolMapping(), ImmutableList.copyOf(setOperationPlan.getSymbolMapping().keySet())); return new RelationPlan(planNode, analysis.getScope(node), planNode.getOutputSymbols()); }
@Override public boolean equals(Object obj) { if (this == obj) { return true; } if ((obj == null) || (getClass() != obj.getClass())) { return false; } Intersect o = (Intersect) obj; return Objects.equals(relations, o.relations) && Objects.equals(isDistinct(), o.isDistinct()); }
@Override protected R visitIntersect(Intersect node, C context) { for (Relation relation : node.getRelations()) { process(relation, context); } return null; }
@Override protected Void visitIntersect(Intersect node, Integer indent) { Iterator<Relation> relations = node.getRelations().iterator(); while (relations.hasNext()) { processRelation(relations.next(), indent); if (relations.hasNext()) { builder.append("INTERSECT "); if (!node.isDistinct()) { builder.append("ALL "); } } } return null; }
@Override public String toString() { return toStringHelper(this) .add("relations", relations) .add("distinct", isDistinct()) .toString(); }
@Override public Node visitSetOperation(SqlBaseParser.SetOperationContext context) { QueryBody left = (QueryBody) visit(context.left); QueryBody right = (QueryBody) visit(context.right); boolean distinct = context.setQuantifier() == null || context.setQuantifier().DISTINCT() != null; switch (context.operator.getType()) { case SqlBaseLexer.UNION: return new Union(getLocation(context.UNION()), ImmutableList.of(left, right), distinct); case SqlBaseLexer.INTERSECT: return new Intersect(getLocation(context.INTERSECT()), ImmutableList.of(left, right), distinct); case SqlBaseLexer.EXCEPT: return new Except(getLocation(context.EXCEPT()), left, right, distinct); } throw new IllegalArgumentException("Unsupported set operation: " + context.operator.getText()); }
@Override protected Void visitIntersect(Intersect node, Integer indent) { Iterator<Relation> relations = node.getRelations().iterator(); while (relations.hasNext()) { processRelation(relations.next(), indent); if (relations.hasNext()) { builder.append("INTERSECT "); if (!node.isDistinct()) { builder.append("ALL "); } } } return null; }
@Override protected Scope visitIntersect(Intersect node, Optional<Scope> scope) { if (!node.isDistinct()) { throw new SemanticException(NOT_SUPPORTED, node, "INTERSECT ALL not yet implemented"); } return visitSetOperation(node, scope); }
public static void main(final String[] args) { if (!SwingUtilities.isEventDispatchThread()) { SwingUtilities.invokeLater(new Runnable() { public void run() { main(args); } }); return; } Intersect i = new Intersect(); ...
@Override protected Void visitIntersect(Intersect node, Integer indent) { Iterator<Relation> relations = node.getRelations().iterator(); while (relations.hasNext()) { processRelation(relations.next(), indent); if (relations.hasNext()) { builder.append("INTERSECT "); if (!node.isDistinct()) { builder.append("ALL "); } } } return null; }
@Override public int hashCode() { return Objects.hash(relations, isDistinct()); } }
@Test public void testIntersect() { assertStatement("SELECT 123 INTERSECT DISTINCT SELECT 123 INTERSECT ALL SELECT 123", new Query( Optional.empty(), new Intersect(ImmutableList.of( new Intersect(ImmutableList.of(createSelect123(), createSelect123()), true), createSelect123() ), false), Optional.empty(), Optional.empty())); }
@Override protected Void visitIntersect(Intersect node, Integer indent) { Iterator<Relation> relations = node.getRelations().iterator(); while (relations.hasNext()) { processRelation(relations.next(), indent); if (relations.hasNext()) { builder.append("INTERSECT "); if (!node.isDistinct()) { builder.append("ALL "); } } } return null; }
@Override public String toString() { return toStringHelper(this) .add("relations", relations) .add("distinct", isDistinct()) .toString(); }
@Test public void testIntersect() { assertStatement("SELECT 123 INTERSECT DISTINCT SELECT 123 INTERSECT ALL SELECT 123", new Query( Optional.empty(), new Intersect(ImmutableList.of( new Intersect(ImmutableList.of(createSelect123(), createSelect123()), true), createSelect123() ), false), ImmutableList.of(), Optional.empty(), Optional.empty())); }
@Override public boolean equals(Object obj) { if (this == obj) { return true; } if ((obj == null) || (getClass() != obj.getClass())) { return false; } Intersect o = (Intersect) obj; return Objects.equals(relations, o.relations) && Objects.equals(isDistinct(), o.isDistinct()); }