@Override public ParseNode visitLeave(ComparisonParseNode node, List<ParseNode> l) throws SQLException { if (!(l.get(1) instanceof SubqueryParseNode)) { super.visitLeave(node, l); } ParseNode lhs = l.get(0); List<ParseNode> rhs = generateDummyValues(lhs, false); List<ParseNode> children = new ArrayList<ParseNode>(); children.add(lhs); children.add(rhs.get(0)); return super.visitLeave(node, children); }
@Override public ParseNode visitLeave(ArrayAnyComparisonNode node, List<ParseNode> l) throws SQLException { List<ParseNode> children = leaveArrayComparisonNode(node, l); if (children == l) return super.visitLeave(node, l); node = NODE_FACTORY.arrayAny(children.get(0), (ComparisonParseNode) children.get(1)); return node; }
@Override public ParseNode visitLeave(ComparisonParseNode node, List<ParseNode> nodes) throws SQLException { if (nodes.get(0).isStateless() && !nodes.get(1).isStateless() && !(nodes.get(1) instanceof ArrayElemRefNode)) { List<ParseNode> normNodes = Lists.newArrayListWithExpectedSize(2); normNodes.add(nodes.get(1)); normNodes.add(nodes.get(0)); nodes = normNodes; node = NODE_FACTORY.comparison(node.getInvertFilterOp(), nodes.get(0), nodes.get(1)); } return super.visitLeave(node, nodes); }
@Override public ParseNode visitLeave(ArrayAllComparisonNode node, List<ParseNode> l) throws SQLException { List<ParseNode> children = leaveArrayComparisonNode(node, l); if (children == l) return super.visitLeave(node, l); node = NODE_FACTORY.arrayAll(children.get(0), (ComparisonParseNode) children.get(1)); return node; }
@Override public ParseNode visitLeave(final BetweenParseNode node, List<ParseNode> nodes) throws SQLException { LessThanOrEqualParseNode lhsNode = NODE_FACTORY.lte(node.getChildren().get(1), node.getChildren().get(0)); LessThanOrEqualParseNode rhsNode = NODE_FACTORY.lte(node.getChildren().get(0), node.getChildren().get(2)); List<ParseNode> parseNodes = Lists.newArrayListWithExpectedSize(2); parseNodes.add(this.visitLeave(lhsNode, lhsNode.getChildren())); parseNodes.add(this.visitLeave(rhsNode, rhsNode.getChildren())); return super.visitLeave(node, parseNodes); }
return super.visitLeave(node, l); l = Lists.newArrayList(l.get(0), subqueryNode); node = NODE_FACTORY.comparison(node.getFilterOp(), l.get(0), l.get(1)); return super.visitLeave(node, l);
subqueryNode = NODE_FACTORY.subquery(subquery, false); node = NODE_FACTORY.exists(subqueryNode, node.isNegate()); return super.visitLeave(node, Collections.<ParseNode> singletonList(subqueryNode));
@Override public ParseNode visitLeave(ComparisonParseNode node, List<ParseNode> l) throws SQLException { if (!(l.get(1) instanceof SubqueryParseNode)) { super.visitLeave(node, l); } ParseNode lhs = l.get(0); List<ParseNode> rhs = generateDummyValues(lhs, false); List<ParseNode> children = new ArrayList<ParseNode>(); children.add(lhs); children.add(rhs.get(0)); return super.visitLeave(node, children); }
@Override public ParseNode visitLeave(ComparisonParseNode node, List<ParseNode> l) throws SQLException { if (!(l.get(1) instanceof SubqueryParseNode)) { super.visitLeave(node, l); } ParseNode lhs = l.get(0); List<ParseNode> rhs = generateDummyValues(lhs, false); List<ParseNode> children = new ArrayList<ParseNode>(); children.add(lhs); children.add(rhs.get(0)); return super.visitLeave(node, children); }
@Override public ParseNode visitLeave(ComparisonParseNode node, List<ParseNode> nodes) throws SQLException { if (nodes.get(0).isStateless() && !nodes.get(1).isStateless() && !(nodes.get(1) instanceof ArrayElemRefNode)) { List<ParseNode> normNodes = Lists.newArrayListWithExpectedSize(2); normNodes.add(nodes.get(1)); normNodes.add(nodes.get(0)); nodes = normNodes; node = NODE_FACTORY.comparison(node.getInvertFilterOp(), nodes.get(0), nodes.get(1)); } return super.visitLeave(node, nodes); }
@Override public ParseNode visitLeave(ArrayAnyComparisonNode node, List<ParseNode> l) throws SQLException { List<ParseNode> children = leaveArrayComparisonNode(node, l); if (children == l) return super.visitLeave(node, l); node = NODE_FACTORY.arrayAny(children.get(0), (ComparisonParseNode) children.get(1)); return node; }
@Override public ParseNode visitLeave(ArrayAllComparisonNode node, List<ParseNode> l) throws SQLException { List<ParseNode> children = leaveArrayComparisonNode(node, l); if (children == l) return super.visitLeave(node, l); node = NODE_FACTORY.arrayAll(children.get(0), (ComparisonParseNode) children.get(1)); return node; }
@Override public ParseNode visitLeave(ArrayAnyComparisonNode node, List<ParseNode> l) throws SQLException { List<ParseNode> children = leaveArrayComparisonNode(node, l); if (children == l) return super.visitLeave(node, l); node = NODE_FACTORY.arrayAny(children.get(0), (ComparisonParseNode) children.get(1)); return node; }
@Override public ParseNode visitLeave(ArrayAllComparisonNode node, List<ParseNode> l) throws SQLException { List<ParseNode> children = leaveArrayComparisonNode(node, l); if (children == l) return super.visitLeave(node, l); node = NODE_FACTORY.arrayAll(children.get(0), (ComparisonParseNode) children.get(1)); return node; }
@Override public ParseNode visitLeave(ComparisonParseNode node, List<ParseNode> nodes) throws SQLException { if (nodes.get(0).isStateless() && !nodes.get(1).isStateless() && !(nodes.get(1) instanceof ArrayElemRefNode)) { List<ParseNode> normNodes = Lists.newArrayListWithExpectedSize(2); normNodes.add(nodes.get(1)); normNodes.add(nodes.get(0)); nodes = normNodes; node = NODE_FACTORY.comparison(node.getInvertFilterOp(), nodes.get(0), nodes.get(1)); } return super.visitLeave(node, nodes); }
@Override public ParseNode visitLeave(final BetweenParseNode node, List<ParseNode> nodes) throws SQLException { LessThanOrEqualParseNode lhsNode = NODE_FACTORY.lte(node.getChildren().get(1), node.getChildren().get(0)); LessThanOrEqualParseNode rhsNode = NODE_FACTORY.lte(node.getChildren().get(0), node.getChildren().get(2)); List<ParseNode> parseNodes = Lists.newArrayListWithExpectedSize(2); parseNodes.add(this.visitLeave(lhsNode, lhsNode.getChildren())); parseNodes.add(this.visitLeave(rhsNode, rhsNode.getChildren())); return super.visitLeave(node, parseNodes); }
@Override public ParseNode visitLeave(final BetweenParseNode node, List<ParseNode> nodes) throws SQLException { LessThanOrEqualParseNode lhsNode = NODE_FACTORY.lte(node.getChildren().get(1), node.getChildren().get(0)); LessThanOrEqualParseNode rhsNode = NODE_FACTORY.lte(node.getChildren().get(0), node.getChildren().get(2)); List<ParseNode> parseNodes = Lists.newArrayListWithExpectedSize(2); parseNodes.add(this.visitLeave(lhsNode, lhsNode.getChildren())); parseNodes.add(this.visitLeave(rhsNode, rhsNode.getChildren())); return super.visitLeave(node, parseNodes); }
return super.visitLeave(node, l); l = Lists.newArrayList(l.get(0), subqueryNode); node = NODE_FACTORY.comparison(node.getFilterOp(), l.get(0), l.get(1)); return super.visitLeave(node, l);
subqueryNode = NODE_FACTORY.subquery(subquery, false); node = NODE_FACTORY.exists(subqueryNode, node.isNegate()); return super.visitLeave(node, Collections.<ParseNode> singletonList(subqueryNode));
subqueryNode = NODE_FACTORY.subquery(subquery, false); node = NODE_FACTORY.exists(subqueryNode, node.isNegate()); return super.visitLeave(node, Collections.<ParseNode> singletonList(subqueryNode));