public OrderByItem(Expression symbol, boolean ascending) { setSymbol(symbol); this.ascending = ascending; }
public OrderByItem(Expression symbol, boolean ascending) { setSymbol(symbol); this.ascending = ascending; }
public OrderByItem(Expression symbol, boolean ascending) { setSymbol(symbol); this.ascending = ascending; }
@Override public void visit(OrderByItem obj) { obj.setSymbol(replaceSymbol(obj.getSymbol(), obj.getExpressionPosition() != -1)); }
@Override public void visit(OrderByItem obj) { obj.setSymbol(replaceSymbol(obj.getSymbol(), obj.getExpressionPosition() != -1)); }
@Override public void visit(OrderByItem obj) { obj.setSymbol(replaceSymbol(obj.getSymbol(), obj.getExpressionPosition() != -1)); }
if (index != null) { item.setExpressionPosition(index); item.setSymbol(select.getSymbols().get(index));
if (index != null) { item.setExpressionPosition(index); item.setSymbol(select.getSymbols().get(index));
if (index != null) { item.setExpressionPosition(index); item.setSymbol(select.getSymbols().get(index));
/** * special handling is needed since we are retaining the child aliases */ private static void correctOrderBy(PlanNode frame, PlanNode sort, List<Expression> selectSymbols, PlanNode parentProject) { if (sort == null || NodeEditor.findNodePreOrder(sort, NodeConstants.Types.PROJECT, NodeConstants.Types.SOURCE) != parentProject) { return; } List<Expression> childProject = (List<Expression>)NodeEditor.findNodePreOrder(frame, NodeConstants.Types.PROJECT).getProperty(NodeConstants.Info.PROJECT_COLS); OrderBy elements = (OrderBy)sort.getProperty(NodeConstants.Info.SORT_ORDER); for (OrderByItem item : elements.getOrderByItems()) { item.setSymbol(childProject.get(selectSymbols.indexOf(item.getSymbol()))); } sort.getGroups().clear(); sort.addGroups(GroupsUsedByElementsVisitor.getGroups(elements)); }
/** * special handling is needed since we are retaining the child aliases */ private static void correctOrderBy(PlanNode frame, PlanNode sort, List<Expression> selectSymbols, PlanNode parentProject) { if (sort == null || NodeEditor.findNodePreOrder(sort, NodeConstants.Types.PROJECT, NodeConstants.Types.SOURCE) != parentProject) { return; } List<Expression> childProject = (List<Expression>)NodeEditor.findNodePreOrder(frame, NodeConstants.Types.PROJECT).getProperty(NodeConstants.Info.PROJECT_COLS); OrderBy elements = (OrderBy)sort.getProperty(NodeConstants.Info.SORT_ORDER); for (OrderByItem item : elements.getOrderByItems()) { item.setSymbol(childProject.get(selectSymbols.indexOf(item.getSymbol()))); } sort.getGroups().clear(); sort.addGroups(GroupsUsedByElementsVisitor.getGroups(elements)); }
/** * special handling is needed since we are retaining the child aliases */ private static void correctOrderBy(PlanNode frame, PlanNode sort, List<Expression> selectSymbols, PlanNode parentProject) { if (sort == null || NodeEditor.findNodePreOrder(sort, NodeConstants.Types.PROJECT, NodeConstants.Types.SOURCE) != parentProject) { return; } List<Expression> childProject = (List<Expression>)NodeEditor.findNodePreOrder(frame, NodeConstants.Types.PROJECT).getProperty(NodeConstants.Info.PROJECT_COLS); OrderBy elements = (OrderBy)sort.getProperty(NodeConstants.Info.SORT_ORDER); for (OrderByItem item : elements.getOrderByItems()) { item.setSymbol(childProject.get(selectSymbols.indexOf(item.getSymbol()))); } sort.getGroups().clear(); sort.addGroups(GroupsUsedByElementsVisitor.getGroups(elements)); }
public static void rewriteOrderBy(QueryCommand queryCommand, final OrderBy orderBy, final List projectedSymbols, CommandContext context, QueryMetadataInterface metadata) throws TeiidComponentException, TeiidProcessingException { HashSet<Expression> previousExpressions = new HashSet<Expression>(); for (int i = 0; i < orderBy.getVariableCount(); i++) { Expression querySymbol = orderBy.getVariable(i); int index = orderBy.getExpressionPosition(i); if (index == -1) { querySymbol = rewriteExpression(querySymbol, context, metadata); } else { querySymbol = (Expression)projectedSymbols.get(index); } Expression expr = SymbolMap.getExpression(querySymbol); if (!previousExpressions.add(expr) || (queryCommand instanceof Query && EvaluatableVisitor.willBecomeConstant(expr))) { orderBy.removeOrderByItem(i--); } else { orderBy.getOrderByItems().get(i).setSymbol((Expression)querySymbol.clone()); } } if (orderBy.getVariableCount() == 0) { queryCommand.setOrderBy(null); } }
public static void rewriteOrderBy(QueryCommand queryCommand, final OrderBy orderBy, final List projectedSymbols, CommandContext context, QueryMetadataInterface metadata) throws TeiidComponentException, TeiidProcessingException { HashSet<Expression> previousExpressions = new HashSet<Expression>(); for (int i = 0; i < orderBy.getVariableCount(); i++) { Expression querySymbol = orderBy.getVariable(i); int index = orderBy.getExpressionPosition(i); if (index == -1) { querySymbol = rewriteExpression(querySymbol, context, metadata); } else { querySymbol = (Expression)projectedSymbols.get(index); } Expression expr = SymbolMap.getExpression(querySymbol); if (!previousExpressions.add(expr) || (queryCommand instanceof Query && EvaluatableVisitor.willBecomeConstant(expr))) { orderBy.removeOrderByItem(i--); } else { orderBy.getOrderByItems().get(i).setSymbol((Expression)querySymbol.clone()); } } if (orderBy.getVariableCount() == 0) { queryCommand.setOrderBy(null); } }
public static void rewriteOrderBy(QueryCommand queryCommand, final OrderBy orderBy, final List projectedSymbols, CommandContext context, QueryMetadataInterface metadata) throws TeiidComponentException, TeiidProcessingException { HashSet<Expression> previousExpressions = new HashSet<Expression>(); for (int i = 0; i < orderBy.getVariableCount(); i++) { Expression querySymbol = orderBy.getVariable(i); int index = orderBy.getExpressionPosition(i); if (index == -1) { querySymbol = rewriteExpression(querySymbol, context, metadata); } else { querySymbol = (Expression)projectedSymbols.get(index); } Expression expr = SymbolMap.getExpression(querySymbol); if (!previousExpressions.add(expr) || (queryCommand instanceof Query && EvaluatableVisitor.willBecomeConstant(expr))) { orderBy.removeOrderByItem(i--); } else { orderBy.getOrderByItems().get(i).setSymbol((Expression)querySymbol.clone()); } } if (orderBy.getVariableCount() == 0) { queryCommand.setOrderBy(null); } }
if (sortIndex > -1) { updateSymbolName(sortOrder, sortIndex, virtualElem, sortOrder.get(sortIndex)); orderBy.getOrderByItems().get(sortIndex).setSymbol(sortOrder.get(sortIndex));
if (sortIndex > -1) { updateSymbolName(sortOrder, sortIndex, virtualElem, sortOrder.get(sortIndex)); orderBy.getOrderByItems().get(sortIndex).setSymbol(sortOrder.get(sortIndex));