use of io.crate.analyze.OrderBy in project crate by crate.
the class QueriedDocTableFetchPushDownTest method testPushDownWithOrder.
@Test
public void testPushDownWithOrder() throws Exception {
QuerySpec qs = new QuerySpec();
qs.outputs(Lists.newArrayList(REF_A, REF_I));
qs.orderBy(new OrderBy(Lists.newArrayList(REF_I), new boolean[] { true }, new Boolean[] { false }));
QueriedDocTableFetchPushDown pd = new QueriedDocTableFetchPushDown(new QueriedDocTable(TABLE_REL, qs));
QueriedDocTable sub = pd.pushDown();
assertThat(qs, isSQL("SELECT FETCH(INPUT(0), s.t._doc['a']), INPUT(1) ORDER BY INPUT(1) DESC NULLS LAST"));
assertThat(sub.querySpec(), isSQL("SELECT s.t._fetchid, s.t.i ORDER BY s.t.i DESC NULLS LAST"));
}
use of io.crate.analyze.OrderBy in project crate by crate.
the class QueriedDocTableFetchPushDownTest method testScoreDoesNotRequireFetch.
@Test
public void testScoreDoesNotRequireFetch() throws Exception {
QuerySpec qs = new QuerySpec();
qs.outputs(Lists.newArrayList(REF_I, REF_SCORE));
qs.orderBy(new OrderBy(ImmutableList.of(REF_I), new boolean[] { true }, new Boolean[] { false }));
QueriedDocTableFetchPushDown pd = new QueriedDocTableFetchPushDown(new QueriedDocTable(TABLE_REL, qs));
assertNull(pd.pushDown());
}
use of io.crate.analyze.OrderBy in project crate by crate.
the class QueriedDocTableFetchPushDownTest method testNoPushDownWithOrder.
@Test
public void testNoPushDownWithOrder() throws Exception {
QuerySpec qs = new QuerySpec();
qs.outputs(Lists.newArrayList(REF_I));
qs.orderBy(new OrderBy(ImmutableList.of(REF_I), new boolean[] { true }, new Boolean[] { false }));
QueriedDocTableFetchPushDown pd = new QueriedDocTableFetchPushDown(new QueriedDocTable(TABLE_REL, qs));
assertNull(pd.pushDown());
assertThat(qs, isSQL("SELECT s.t.i ORDER BY s.t.i DESC NULLS LAST"));
}
use of io.crate.analyze.OrderBy in project crate by crate.
the class RoutedCollectPhaseTest method testNormalizeDoesNotRemoveOrderBy.
@Test
public void testNormalizeDoesNotRemoveOrderBy() throws Exception {
Symbol toInt10 = CastFunctionResolver.generateCastFunction(Literal.of(10L), DataTypes.INTEGER, false);
RoutedCollectPhase collect = new RoutedCollectPhase(UUID.randomUUID(), 1, "collect", new Routing(Collections.emptyMap()), RowGranularity.DOC, Collections.singletonList(toInt10), Collections.emptyList(), WhereClause.MATCH_ALL, DistributionInfo.DEFAULT_SAME_NODE);
collect.orderBy(new OrderBy(Collections.singletonList(toInt10), new boolean[] { false }, new Boolean[] { null }));
EvaluatingNormalizer normalizer = EvaluatingNormalizer.functionOnlyNormalizer(getFunctions(), ReplaceMode.COPY);
RoutedCollectPhase normalizedCollect = collect.normalize(normalizer, new TransactionContext(SessionContext.SYSTEM_SESSION));
assertThat(normalizedCollect.orderBy(), notNullValue());
}
use of io.crate.analyze.OrderBy in project crate by crate.
the class FetchRequiredVisitorTest method context.
private FetchRequiredVisitor.Context context(List<Symbol> orderBySymbols) {
if (!orderBySymbols.isEmpty()) {
boolean[] reverseFlags = new boolean[orderBySymbols.size()];
Arrays.fill(reverseFlags, true);
Boolean[] nullsFirst = new Boolean[orderBySymbols.size()];
Arrays.fill(nullsFirst, Boolean.FALSE);
OrderBy orderBy = new OrderBy(orderBySymbols, reverseFlags, nullsFirst);
return new FetchRequiredVisitor.Context(new HashSet<>(orderBy.orderBySymbols()));
}
return new FetchRequiredVisitor.Context();
}
Aggregations