15 package com.cloudera.impala.analysis;
17 import java.util.List;
19 import com.google.common.base.Preconditions;
20 import com.google.common.collect.Lists;
41 public SortInfo(List<Expr> orderingExprs, List<Boolean> isAscOrder,
42 List<Boolean> nullsFirstParams) {
43 Preconditions.checkArgument(orderingExprs.size() == isAscOrder.size());
44 Preconditions.checkArgument(orderingExprs.size() == nullsFirstParams.size());
54 for (
int i = 0; i < sortTupleDesc_.getSlots().size(); ++i) {
56 slotDesc.setSourceExpr(sortTupleSlotExprs_.get(i));
70 List<Boolean> nullsFirst = Lists.newArrayList();
71 for (
int i = 0; i < orderingExprs_.size(); ++i) {
72 nullsFirst.add(OrderByElement.nullsFirst(nullsFirstParams_.get(i),
86 Preconditions.checkState(sortTupleDesc_.isMaterialized());
88 List<SlotDescriptor> sortTupleSlotDescs = sortTupleDesc_.getSlots();
89 List<Expr> materializedExprs = Lists.newArrayList();
90 for (
int i = 0; i < sortTupleSlotDescs.size(); ++i) {
91 if (sortTupleSlotDescs.get(i).isMaterialized()) {
92 materializedExprs.add(sortTupleSlotExprs_.get(i));
95 List<Expr> substMaterializedExprs =
96 Expr.substituteList(materializedExprs, smap, analyzer,
false);
97 analyzer.materializeSlots(substMaterializedExprs);
109 Preconditions.checkState(orderingExpr.isBound(sortTupleDesc_.getId()));
List< Expr > sortTupleSlotExprs_
void materializeRequiredSlots(Analyzer analyzer, ExprSubstitutionMap smap)
List< Boolean > getIsAscOrder()
void setMaterializedTupleInfo(TupleDescriptor tupleDesc, List< Expr > tupleSlotExprs)
final List< Boolean > nullsFirstParams_
final List< Boolean > isAscOrder_
void substituteOrderingExprs(ExprSubstitutionMap smap, Analyzer analyzer)
List< Boolean > getNullsFirstParams()
List< Expr > orderingExprs_
List< Boolean > getNullsFirst()
TupleDescriptor sortTupleDesc_
TupleDescriptor getSortTupleDescriptor()
SortInfo(List< Expr > orderingExprs, List< Boolean > isAscOrder, List< Boolean > nullsFirstParams)
List< Expr > getOrderingExprs()
List< Expr > getSortTupleSlotExprs()