/** * Yogesh: compiles sort criteria present in order by clause and push into the stack * */ public void compileSortCriteria(String sortCriterion) { CompiledValue obj = (CompiledValue) this.stack.pop(); boolean criterion = false; if (sortCriterion.equals("desc")) criterion = true; CompiledSortCriterion csc = new CompiledSortCriterion(criterion, obj); push(csc); }
protected void modifyGroupByToOrderBy(boolean setDistinct, ExecutionContext context) throws TypeMismatchException, NameResolutionException { if (setDistinct) { this.distinct = setDistinct; } this.orderByAttrs = new ArrayList<CompiledSortCriterion>(this.groupBy.size()); int colIndex = 0; for (CompiledValue cv : this.groupBy) { CompiledSortCriterion csc = new CompiledSortCriterion(false, cv); csc.mapExpressionToProjectionField(projAttrs, context); this.orderByAttrs.add(csc); } this.groupBy = null; }
private NWayMergeResults<Struct> createStructFieldMergedResult( Collection<? extends Collection<Struct>> sortedResults, boolean isDistinct, int limit, StructTypeImpl structType) throws Exception { CompiledSortCriterion csc1 = new CompiledSortCriterion(false, CompiledSortCriterion.ProjectionField.getProjectionField()); CompiledSortCriterion csc2 = new CompiledSortCriterion(true, CompiledSortCriterion.ProjectionField.getProjectionField()); Method method = CompiledSortCriterion.class .getDeclaredMethod("substituteExpressionWithProjectionField", Integer.TYPE); method.setAccessible(true); method.invoke(csc1, 0); method.invoke(csc2, 1); List<CompiledSortCriterion> orderByAttribs = new ArrayList<CompiledSortCriterion>(); orderByAttribs.add(csc1); orderByAttribs.add(csc2); ExecutionContext context = new ExecutionContext(null, null); return new NWayMergeResults<Struct>(sortedResults, false, -1, orderByAttribs, context, structType); }
private <E> NWayMergeResults<E> createSingleFieldMergedResult( Collection<? extends Collection<E>> sortedResults, boolean isDistinct, int limit) throws Exception { CompiledSortCriterion csc = new CompiledSortCriterion(false, CompiledSortCriterion.ProjectionField.getProjectionField()); Method method = CompiledSortCriterion.class .getDeclaredMethod("substituteExpressionWithProjectionField", Integer.TYPE); method.setAccessible(true); method.invoke(csc, 0); List<CompiledSortCriterion> orderByAttribs = new ArrayList<CompiledSortCriterion>(); orderByAttribs.add(csc); ExecutionContext context = new ExecutionContext(null, null); ObjectType elementType = new ObjectTypeImpl(Object.class); return new NWayMergeResults<E>(sortedResults, isDistinct, limit, orderByAttribs, context, elementType); }
new CompiledNegation(compiledValue1), new CompiledRegion("test"), new CompiledSortCriterion(true, compiledValue1), new CompiledSubtraction(compiledValue1, compiledValue2, 13), new CompiledUnaryMinus(compiledValue1),