@Override public boolean isSyntacticallyEquivalentTo(QueryNode node) { return (node instanceof FilterNode) && ((FilterNode) node).getFilterCondition().equals(this.getFilterCondition()); }
@Override public IQTree transformFilter(IQTree tree, FilterNode rootNode, IQTree child) { return transformUnaryNode(rootNode.acceptNodeTransformer(nodeTransformer), child); }
protected JoinOrFilterNode generateNewJoinOrFilterNode(JoinOrFilterNode formerNode, ImmutableExpression newExpression) { if (formerNode instanceof FilterNode) { return ((FilterNode)formerNode).changeFilterCondition(newExpression); } else if (formerNode instanceof JoinLikeNode) { return ((JoinLikeNode)formerNode).changeOptionalFilterCondition(Optional.of(newExpression)); } else { throw new RuntimeException("This type of query node is not supported: " + formerNode.getClass()); } } }
originalFilterNode.getFilterCondition(), newEqualities).get(); FilterNode newFilterNode = originalFilterNode.changeFilterCondition(newFilteringCondition); treeComponent.replaceNode(originalFilterNode, newFilterNode); return newFocusNode;
@Override public FilterNode transform(FilterNode filterNode) { return filterNode.clone(); }
@Override public FilterNode transform(FilterNode filterNode) { return filterNode.clone(); }
@Override public boolean isSyntacticallyEquivalentTo(QueryNode node) { return (node instanceof FilterNode) && ((FilterNode) node).getFilterCondition().equals(this.getFilterCondition()); }
@Override public boolean isEquivalentTo(QueryNode queryNode) { return (queryNode instanceof FilterNode) && getFilterCondition().equals(((FilterNode) queryNode).getFilterCondition()); }
private Optional<ImmutableExpression> getOptionalChildExpression(IQTree child) { QueryNode root = child.getRootNode(); return root instanceof FilterNode? Optional.of(((FilterNode) root).getFilterCondition()): Optional.empty(); }
private ImmutableList<ImmutableExpression> getChildExpressions(ImmutableList<IQTree> children) { return children.stream() .filter(t -> t.getRootNode() instanceof FilterNode) .map(t -> ((FilterNode) t.getRootNode()).getFilterCondition()) .collect(ImmutableCollectors.toList()); }
@Deprecated public static ImmutableList<ImmutableExpression> extractBooleanExpressionsFromJoins(InnerJoinNode topJoinNode, IntermediateQuery query) { Queue<InnerJoinNode> joinNodesToExplore = new LinkedList<>(); joinNodesToExplore.add(topJoinNode); ImmutableList.Builder<ImmutableExpression> exprListBuilder = ImmutableList.builder(); while (!joinNodesToExplore.isEmpty()) { InnerJoinNode joinNode = joinNodesToExplore.poll(); Optional<ImmutableExpression> optionalFilterCondition = joinNode.getOptionalFilterCondition(); if (optionalFilterCondition.isPresent()) { exprListBuilder.add(optionalFilterCondition.get()); } /** * Children: only considers the inner joins and the filter nodes. */ for (QueryNode child : query.getChildren(joinNode)) { if (child instanceof InnerJoinNode) { // Continues exploring joinNodesToExplore.add((InnerJoinNode)child); } else if (child instanceof FilterNode) { exprListBuilder.add(((FilterNode)child).getFilterCondition()); } } } return exprListBuilder.build(); }
@Deprecated public static ImmutableList<ImmutableExpression> extractBooleanExpressionsFromJoins(InnerJoinNode topJoinNode, IntermediateQuery query) { Queue<InnerJoinNode> joinNodesToExplore = new LinkedList<>(); joinNodesToExplore.add(topJoinNode); ImmutableList.Builder<ImmutableExpression> exprListBuilder = ImmutableList.builder(); while (!joinNodesToExplore.isEmpty()) { InnerJoinNode joinNode = joinNodesToExplore.poll(); Optional<ImmutableExpression> optionalFilterCondition = joinNode.getOptionalFilterCondition(); if (optionalFilterCondition.isPresent()) { exprListBuilder.add(optionalFilterCondition.get()); } /** * Children: only considers the inner joins and the filter nodes. */ for (QueryNode child : query.getChildren(joinNode)) { if (child instanceof InnerJoinNode) { // Continues exploring joinNodesToExplore.add((InnerJoinNode)child); } else if (child instanceof FilterNode) { exprListBuilder.add(((FilterNode)child).getFilterCondition()); } } } return exprListBuilder.build(); }
@Override public FilterNode transform(FilterNode filterNode) { return iqFactory.createFilterNode(renameBooleanExpression(filterNode.getFilterCondition())); }
@Override public FilterNode transform(FilterNode filterNode) { return iqFactory.createFilterNode(renameBooleanExpression(filterNode.getFilterCondition())); }
@Override public void visit(FilterNode filterNode) { if (query.getChildren(filterNode).size() != 1) { throw new InvalidIntermediateQueryException("FILTER node " + filterNode + " does not have single child.\n" + query); } checkExpression(filterNode, filterNode.getFilterCondition()); }
@Override public void visit(FilterNode filterNode) { if (query.getChildren(filterNode).size() != 1) { throw new InvalidIntermediateQueryException("FILTER node " + filterNode + " does not have single child.\n" + query); } checkExpression(filterNode, filterNode.getFilterCondition()); }
@Override public IQTree transformFilter(IQTree tree, FilterNode rootNode, IQTree child) { ImmutableList<ImmutableExpression> filterChildExpressions = getChildExpressions(ImmutableList.of(child)); if (filterChildExpressions.isEmpty()) return tree; return iqFactory.createUnaryIQTree( iqFactory.createFilterNode( updateJoinCondition( Optional.of(rootNode.getFilterCondition()), filterChildExpressions )), trimRootFilter(child) ); }
ImmutableExpression filter = ((FilterNode) node).getFilterCondition(); List<QueryNode> listnode = te.getChildren(node); body.addAll(getAtomFrom(te, listnode.get(0), heads, subQueryProjectionAtoms, true));
FilterNode newFilterNode = iqFactory.createFilterNode( ImmutabilityTools.foldBooleanExpressions( ((FilterNode) formerRootChild).getFilterCondition(), filterCondition).get()); queryBuilder.addChild(rootNode, newFilterNode);
FilterNode newFilterNode = iqFactory.createFilterNode( immutabilityTools.foldBooleanExpressions( ((FilterNode) formerRootChild).getFilterCondition(), filterCondition).get()); queryBuilder.addChild(rootNode, newFilterNode);