diff --git a/mondrian/src/main/java/mondrian/calc/impl/AbstractExpCompiler.java b/mondrian/src/main/java/mondrian/calc/impl/AbstractExpCompiler.java index 7c8ebd7543..8d909d34b8 100644 --- a/mondrian/src/main/java/mondrian/calc/impl/AbstractExpCompiler.java +++ b/mondrian/src/main/java/mondrian/calc/impl/AbstractExpCompiler.java @@ -186,6 +186,8 @@ public Calc compileAs( } } final Calc calc = compile(exp); + + if (substitutions > 0) { final TupleIteratorCalc tupleIteratorCalc = (TupleIteratorCalc) calc; if (tupleIteratorCalc == null) { diff --git a/mondrian/src/main/java/mondrian/calc/impl/AbstractIterCalc.java b/mondrian/src/main/java/mondrian/calc/impl/AbstractIterCalc.java index 95f24bcd76..1dd4931064 100644 --- a/mondrian/src/main/java/mondrian/calc/impl/AbstractIterCalc.java +++ b/mondrian/src/main/java/mondrian/calc/impl/AbstractIterCalc.java @@ -9,7 +9,6 @@ package mondrian.calc.impl; -import org.eclipse.daanse.olap.api.Evaluator; import org.eclipse.daanse.olap.api.calc.Calc; import org.eclipse.daanse.olap.api.calc.ResultStyle; import org.eclipse.daanse.olap.api.calc.todo.TupleIterable; @@ -19,30 +18,29 @@ import org.eclipse.daanse.olap.calc.base.AbstractProfilingNestedCalc; /** - * Abstract implementation of the {@link org.eclipse.daanse.olap.api.calc.todo.TupleIteratorCalc} interface. + * Abstract implementation of the + * {@link org.eclipse.daanse.olap.api.calc.todo.TupleIteratorCalc} interface. * - *

The derived class must - * implement the {@link #evaluateIterable(org.eclipse.daanse.olap.api.Evaluator)} method, - * and the {@link #evaluate(org.eclipse.daanse.olap.api.Evaluator)} method will call it. + *

+ * The derived class must implement the + * {@link #evaluateIterable(org.eclipse.daanse.olap.api.Evaluator)} method, and + * the {@link #evaluate(org.eclipse.daanse.olap.api.Evaluator)} method will call + * it. * * @see mondrian.calc.impl.AbstractListCalc * * @author jhyde * @since Oct 24, 2008 */ -public abstract class AbstractIterCalc -extends AbstractProfilingNestedCalc -implements TupleIteratorCalc -{ +public abstract class AbstractIterCalc extends AbstractProfilingNestedCalc implements TupleIteratorCalc { /** - * Creates an abstract implementation of a compiled expression which returns - * a {@link TupleIterable}. + * Creates an abstract implementation of a compiled expression which returns a + * {@link TupleIterable}. * - * @param exp Expression which was compiled - * @param calcs List of child compiled expressions (for dependency - * analysis) + * @param exp Expression which was compiled + * @param calcs List of child compiled expressions (for dependency analysis) */ - protected AbstractIterCalc( Type type, Calc... calcs) { + protected AbstractIterCalc(Type type, Calc... calcs) { super(type, calcs); } @@ -51,11 +49,6 @@ public SetType getType() { return (SetType) super.getType(); } - @Override - public final Object evaluate(Evaluator evaluator) { - return evaluateIterable(evaluator); - } - @Override public ResultStyle getResultStyle() { return ResultStyle.ITERABLE; diff --git a/mondrian/src/main/java/mondrian/calc/impl/AbstractListCalc.java b/mondrian/src/main/java/mondrian/calc/impl/AbstractListCalc.java index 36a1276068..52313abef6 100644 --- a/mondrian/src/main/java/mondrian/calc/impl/AbstractListCalc.java +++ b/mondrian/src/main/java/mondrian/calc/impl/AbstractListCalc.java @@ -29,30 +29,30 @@ * @author jhyde * @since Sep 27, 2005 */ -public abstract class AbstractListCalc -extends AbstractProfilingNestedCalc -implements TupleListCalc { +public abstract class AbstractListCalc extends AbstractProfilingNestedCalc implements TupleListCalc { private final boolean mutable; /** - * Creates an abstract implementation of a compiled expression which returns a mutable list of tuples. + * Creates an abstract implementation of a compiled expression which returns a + * mutable list of tuples. * * @param exp Expression which was compiled * @param calcs List of child compiled expressions (for dependency analysis) */ - protected AbstractListCalc( Type type, Calc... calcs ) { - this( type, calcs, true ); + protected AbstractListCalc(Type type, Calc... calcs) { + this(type, calcs, true); } /** - * Creates an abstract implementation of a compiled expression which returns a list. + * Creates an abstract implementation of a compiled expression which returns a + * list. * * @param exp Expression which was compiled * @param calcs List of child compiled expressions (for dependency analysis) * @param mutable Whether the list is mutable */ - protected AbstractListCalc( Type type, Calc[] calcs, boolean mutable ) { - super( type, calcs ); + protected AbstractListCalc(Type type, Calc[] calcs, boolean mutable) { + super(type, calcs); this.mutable = mutable; assert type instanceof SetType : "expecting a set: " + getType(); } @@ -62,23 +62,9 @@ public SetType getType() { return (SetType) super.getType(); } - @Override - public final Object evaluate( Evaluator evaluator ) { - final TupleList tupleList = evaluateList( evaluator ); - assert tupleList != null : "null as empty tuple list is deprecated"; - return tupleList; - } - - @Override - public TupleIterable evaluateIterable( Evaluator evaluator ) { - return evaluateList( evaluator ); - } - @Override public ResultStyle getResultStyle() { - return mutable - ? ResultStyle.MUTABLE_LIST - : ResultStyle.LIST; + return mutable ? ResultStyle.MUTABLE_LIST : ResultStyle.LIST; } @Override diff --git a/mondrian/src/main/java/mondrian/calc/impl/BetterExpCompiler.java b/mondrian/src/main/java/mondrian/calc/impl/BetterExpCompiler.java index 884b396e86..6d0e7f3cf3 100644 --- a/mondrian/src/main/java/mondrian/calc/impl/BetterExpCompiler.java +++ b/mondrian/src/main/java/mondrian/calc/impl/BetterExpCompiler.java @@ -20,7 +20,6 @@ import org.eclipse.daanse.olap.api.calc.MemberCalc; import org.eclipse.daanse.olap.api.calc.ResultStyle; import org.eclipse.daanse.olap.api.calc.TupleCalc; -import org.eclipse.daanse.olap.api.calc.todo.TupleList; import org.eclipse.daanse.olap.api.calc.todo.TupleListCalc; import org.eclipse.daanse.olap.api.query.component.Expression; import org.eclipse.daanse.olap.api.type.MemberType; @@ -29,6 +28,7 @@ import org.eclipse.daanse.olap.calc.base.type.member.UnknownToMemberCalc; import org.eclipse.daanse.olap.calc.base.type.tuple.MemberCalcToTupleCalc; import org.eclipse.daanse.olap.calc.base.type.tuple.UnknownToTupleCalc; +import org.eclipse.daanse.olap.calc.base.type.tuplelist.CopyOfTupleListCalc; import mondrian.olap.Util; @@ -88,26 +88,9 @@ public TupleListCalc compileList(Expression exp, boolean mutable) { // Wrap the expression in an expression which creates a mutable // copy. - //TODO: use org.eclipse.daanse.olap.calc.base.type.tuplelist.CopyOfTupleListCalc - return new CopyListCalc(tupleListCalc); + return new CopyOfTupleListCalc(tupleListCalc); } return tupleListCalc; } -//TODO: use org.eclipse.daanse.olap.calc.base.type.tuplelist.CopyOfTupleListCalc -@Deprecated -private static class CopyListCalc extends AbstractListCalc { - private final TupleListCalc tupleListCalc; - - public CopyListCalc(TupleListCalc tupleListCalc) { - super( tupleListCalc.getType(), new Calc[] { tupleListCalc }); - this.tupleListCalc = tupleListCalc; - } - - @Override - public TupleList evaluateList(Evaluator evaluator) { - final TupleList list = tupleListCalc.evaluateList(evaluator); - return list.copyList(-1); - } - } } diff --git a/mondrian/src/main/java/mondrian/calc/impl/GenericIterCalc.java b/mondrian/src/main/java/mondrian/calc/impl/GenericIterCalc.java deleted file mode 100644 index 5f536d64c2..0000000000 --- a/mondrian/src/main/java/mondrian/calc/impl/GenericIterCalc.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * This software is subject to the terms of the Eclipse Public License v1.0 - * Agreement, available at the following URL: - * http://www.eclipse.org/legal/epl-v10.html. - * You must accept the terms of that agreement to use this software. - * - * Copyright (c) 2002-2017 Hitachi Vantara.. All rights reserved. - */ - -package mondrian.calc.impl; - -import org.eclipse.daanse.olap.api.Evaluator; -import org.eclipse.daanse.olap.api.calc.Calc; -import org.eclipse.daanse.olap.api.calc.todo.TupleCursor; -import org.eclipse.daanse.olap.api.calc.todo.TupleIterable; -import org.eclipse.daanse.olap.api.calc.todo.TupleIteratorCalc; -import org.eclipse.daanse.olap.api.calc.todo.TupleList; -import org.eclipse.daanse.olap.api.calc.todo.TupleListCalc; -import org.eclipse.daanse.olap.api.type.SetType; -import org.eclipse.daanse.olap.api.type.Type; -import org.eclipse.daanse.olap.calc.base.AbstractProfilingNestedCalc; - -/** - * Adapter which computes a set expression and converts it to any list or - * iterable type. - * - * @author jhyde - * @since Nov 7, 2008 - */ -public abstract class GenericIterCalc -extends AbstractProfilingNestedCalc -implements TupleListCalc, TupleIteratorCalc -{ - /** - * Creates a GenericIterCalc without specifying child calculated - * expressions. - * - *

Subclass should override {@link #getChildCalcs()}. - * - * @param exp Source expression - */ - protected GenericIterCalc( Type type) { - super( type); - } - - /** - * Creates an GenericIterCalc. - * - * @param exp Source expression - * @param calcs Child compiled expressions - */ - protected GenericIterCalc( Type type, Calc[] calcs) { - super(type, calcs); - } - - @Override - public SetType getType() { - return (SetType) super.getType(); - } - - @Override - public TupleList evaluateList(Evaluator evaluator) { - final Object o = evaluate(evaluator); - if (o instanceof TupleList tupleList) { - return tupleList; - } - // Iterable - final TupleIterable iterable = (TupleIterable) o; - final TupleList tupleList = - TupleCollections.createList(iterable.getArity()); - final TupleCursor cursor = iterable.tupleCursor(); - while (cursor.forward()) { - tupleList.addCurrent(cursor); - } - return tupleList; - } - - @Override - public TupleIterable evaluateIterable(Evaluator evaluator) { - final Object o = evaluate(evaluator); - return (TupleIterable) o; - } - -} diff --git a/mondrian/src/main/java/mondrian/calc/impl/IterableListCalc.java b/mondrian/src/main/java/mondrian/calc/impl/IterableListCalc.java index 26efb16174..a1122fffb5 100644 --- a/mondrian/src/main/java/mondrian/calc/impl/IterableListCalc.java +++ b/mondrian/src/main/java/mondrian/calc/impl/IterableListCalc.java @@ -17,14 +17,15 @@ import org.eclipse.daanse.olap.api.calc.todo.TupleList; /** - * Adapter that converts a {@link org.eclipse.daanse.olap.api.calc.todo.TupleIteratorCalc} to a + * Adapter that converts a + * {@link org.eclipse.daanse.olap.api.calc.todo.TupleIteratorCalc} to a * {@link org.eclipse.daanse.olap.api.calc.todo.TupleListCalc}. * * @author jhyde * @since Oct 23, 2008 */ public class IterableListCalc extends AbstractListCalc { - private final TupleIteratorCalc tupleIteratorCalc; + private final TupleIteratorCalc tupleIteratorCalc; /** * Creates an IterableListCalc. @@ -32,15 +33,14 @@ public class IterableListCalc extends AbstractListCalc { * @param tupleIteratorCalc Calculation that returns an iterable. */ public IterableListCalc(TupleIteratorCalc tupleIteratorCalc) { - super(tupleIteratorCalc.getType(), new Calc[] {tupleIteratorCalc}); + super(tupleIteratorCalc.getType(), new Calc[] { tupleIteratorCalc }); this.tupleIteratorCalc = tupleIteratorCalc; } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { // A TupleIterCalc is allowed to return a list. If so, save the copy. - final TupleIterable iterable = - tupleIteratorCalc.evaluateIterable(evaluator); + final TupleIterable iterable = tupleIteratorCalc.evaluate(evaluator); if (iterable instanceof TupleList tupleList) { return tupleList; } diff --git a/mondrian/src/main/java/mondrian/olap/ParameterImpl.java b/mondrian/src/main/java/mondrian/olap/ParameterImpl.java index 1a9377940d..9a68fd3844 100644 --- a/mondrian/src/main/java/mondrian/olap/ParameterImpl.java +++ b/mondrian/src/main/java/mondrian/olap/ParameterImpl.java @@ -326,7 +326,7 @@ public MemberListParameterCalc(ParameterSlot slot) { } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { TupleList value = (TupleList) evaluator.getParameterValue(slot); if (!slot.isParameterSet()) { // save value if not set (setting the default value) diff --git a/mondrian/src/main/java/mondrian/rolap/RolapDependencyTestingEvaluator.java b/mondrian/src/main/java/mondrian/rolap/RolapDependencyTestingEvaluator.java index 3c6e330a1e..17267c522a 100644 --- a/mondrian/src/main/java/mondrian/rolap/RolapDependencyTestingEvaluator.java +++ b/mondrian/src/main/java/mondrian/rolap/RolapDependencyTestingEvaluator.java @@ -20,6 +20,8 @@ import org.eclipse.daanse.olap.api.calc.Calc; import org.eclipse.daanse.olap.api.calc.ResultStyle; import org.eclipse.daanse.olap.api.calc.compiler.ExpressionCompiler; +import org.eclipse.daanse.olap.api.calc.todo.TupleCursor; +import org.eclipse.daanse.olap.api.calc.todo.TupleIterable; import org.eclipse.daanse.olap.api.calc.todo.TupleList; import org.eclipse.daanse.olap.api.CatalogReader; import org.eclipse.daanse.olap.api.element.Hierarchy; @@ -27,10 +29,11 @@ import org.eclipse.daanse.olap.api.element.Member; import org.eclipse.daanse.olap.api.query.component.Expression; import org.eclipse.daanse.olap.api.type.SetType; +import org.eclipse.daanse.olap.calc.base.nested.AbstractProfilingNestedTupleIterableCalc; +import org.eclipse.daanse.olap.calc.base.nested.AbstractProfilingNestedTupleListCalc; import org.eclipse.daanse.olap.calc.base.nested.AbstractProfilingNestedUnknownCalc; import mondrian.calc.impl.DelegatingExpCompiler; -import mondrian.calc.impl.GenericIterCalc; import mondrian.calc.impl.TupleCollections; import mondrian.olap.Util; @@ -343,7 +346,7 @@ public ResultStyle getResultStyle() { * Expression which checks dependencies and list immutability of an * underlying list or iterable expression. */ - private static class DteIterCalcImpl extends GenericIterCalc { + private static class DteIterCalcImpl extends AbstractProfilingNestedTupleIterableCalc { private final Calc calc; private final Hierarchy[] independentHierarchies; private final boolean mutableList; @@ -368,15 +371,65 @@ public Calc[] getChildCalcs() { } @Override - public Object evaluate(Evaluator evaluator) { + public TupleIterable evaluate(Evaluator evaluator) { RolapDependencyTestingEvaluator dtEval = (RolapDependencyTestingEvaluator) evaluator; - return dtEval.evaluate(calc, independentHierarchies, mdxString); + return (TupleIterable) dtEval.evaluate(calc, independentHierarchies, mdxString); + } + + @Override + public ResultStyle getResultStyle() { + return calc.getResultStyle(); + } + } + + + /** + * Expression which checks dependencies and list immutability of an + * underlying list or iterable expression. + */ + private static class DteListCalcImpl extends AbstractProfilingNestedTupleListCalc { + private final Calc calc; + private final Hierarchy[] independentHierarchies; + private final boolean mutableList; + private final String mdxString; + + DteListCalcImpl( + Calc calc, + Hierarchy[] independentHierarchies, + boolean mutableList, + String mdxString) + { + super(calc.getType()); + this.calc = calc; + this.independentHierarchies = independentHierarchies; + this.mutableList = mutableList; + this.mdxString = mdxString; + } + + @Override + public Calc[] getChildCalcs() { + return new Calc[] {calc}; } + + @Override - public TupleList evaluateList(Evaluator evaluator) { - TupleList list = super.evaluateList(evaluator); + public TupleList evaluate(Evaluator evaluator) { + RolapDependencyTestingEvaluator dtEval = (RolapDependencyTestingEvaluator) evaluator; + Object o = dtEval.evaluate(calc, independentHierarchies, mdxString); + + if (o instanceof TupleList tupleList) { + return tupleList; + } + // from GenericIterCalc may cause issues + final TupleIterable iterable = (TupleIterable) o; + final TupleList tupleList = TupleCollections.createList(iterable.getArity()); + final TupleCursor cursor = iterable.tupleCursor(); + while (cursor.forward()) { + tupleList.addCurrent(cursor); + } + TupleList list = evaluate(evaluator); if (!mutableList) { list = TupleCollections.unmodifiableList(list); } @@ -384,11 +437,10 @@ public TupleList evaluateList(Evaluator evaluator) { } @Override - public ResultStyle getResultStyle() { + public ResultStyle getResultStyle() { return calc.getResultStyle(); } } - /** * Expression compiler which introduces dependency testing. * diff --git a/mondrian/src/main/java/mondrian/rolap/RolapHierarchy.java b/mondrian/src/main/java/mondrian/rolap/RolapHierarchy.java index ef8978931e..0c7a1cac9b 100644 --- a/mondrian/src/main/java/mondrian/rolap/RolapHierarchy.java +++ b/mondrian/src/main/java/mondrian/rolap/RolapHierarchy.java @@ -989,7 +989,7 @@ MemberReader createMemberReader(Role role) { setType, new Calc[0]) { @Override - public TupleList evaluateList( + public TupleList evaluate( Evaluator evaluator) { return diff --git a/mondrian/src/main/java/mondrian/rolap/RolapResult.java b/mondrian/src/main/java/mondrian/rolap/RolapResult.java index 02e3021cdd..8f321a12db 100644 --- a/mondrian/src/main/java/mondrian/rolap/RolapResult.java +++ b/mondrian/src/main/java/mondrian/rolap/RolapResult.java @@ -305,7 +305,7 @@ public class RolapResult extends ResultBase { setType, new Calc[0]) { @Override - public TupleList evaluateList( + public TupleList evaluate( Evaluator evaluator) { ArrayList children = new ArrayList<>(); @@ -355,7 +355,7 @@ public void unparse(Expression[] args, PrintWriter pw) { new Expression[0], returnType); - final TupleIterable iterable = ( (TupleIteratorCalc) calc ).evaluateIterable( evaluator ); + final TupleIterable iterable = ( (TupleIteratorCalc) calc ).evaluate( evaluator ); TupleCursor cursor; if ( iterable instanceof TupleList list ) { cursor = list.tupleCursor(); @@ -1068,7 +1068,7 @@ private TupleIterable executeAxis( Evaluator evaluator, QueryAxis queryAxis, Cal try { evaluator.setNonEmpty( queryAxis.isNonEmpty() ); evaluator.setEvalAxes( true ); - final TupleIterable iterable = ( (TupleIteratorCalc) axisCalc ).evaluateIterable( evaluator ); + final TupleIterable iterable = ( (TupleIteratorCalc) axisCalc ).evaluate( evaluator ); if ( axisCalc.getClass().getName().indexOf( "OrderFunDef" ) != -1 ) { queryAxis.setOrdered( true ); } diff --git a/mondrian/src/main/java/mondrian/rolap/sql/CrossJoinArgFactory.java b/mondrian/src/main/java/mondrian/rolap/sql/CrossJoinArgFactory.java index fe3fd05331..6e9a4391bc 100644 --- a/mondrian/src/main/java/mondrian/rolap/sql/CrossJoinArgFactory.java +++ b/mondrian/src/main/java/mondrian/rolap/sql/CrossJoinArgFactory.java @@ -962,7 +962,7 @@ private CrossJoinArg[] expandNonNative( && evaluator.getActiveNativeExpansions().add(exp)) { TupleListCalc listCalc0 = compiler.compileList(exp); - final TupleList tupleList = listCalc0.evaluateList(evaluator); + final TupleList tupleList = listCalc0.evaluate(evaluator); // Prevent the case when the second argument size is too large Util.checkCJResultLimit(tupleList.size()); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/calc/base/nested/AbstractProfilingNestedTupleListCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/calc/base/nested/AbstractProfilingNestedTupleListCalc.java index c85938ec81..4b8bbe8a52 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/calc/base/nested/AbstractProfilingNestedTupleListCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/calc/base/nested/AbstractProfilingNestedTupleListCalc.java @@ -15,8 +15,8 @@ import org.eclipse.daanse.olap.api.calc.Calc; import org.eclipse.daanse.olap.api.calc.ResultStyle; -import org.eclipse.daanse.olap.api.calc.TupleListCalc; import org.eclipse.daanse.olap.api.calc.todo.TupleList; +import org.eclipse.daanse.olap.api.calc.todo.TupleListCalc; import org.eclipse.daanse.olap.api.type.SetType; import org.eclipse.daanse.olap.api.type.Type; import org.eclipse.daanse.olap.calc.base.AbstractProfilingNestedCalc; diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/calc/base/type/tuplelist/CopyOfTupleListCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/calc/base/type/tuplelist/CopyOfTupleListCalc.java index d97451278c..18acda3547 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/calc/base/type/tuplelist/CopyOfTupleListCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/calc/base/type/tuplelist/CopyOfTupleListCalc.java @@ -15,8 +15,8 @@ package org.eclipse.daanse.olap.calc.base.type.tuplelist; import org.eclipse.daanse.olap.api.Evaluator; -import org.eclipse.daanse.olap.api.calc.TupleListCalc; import org.eclipse.daanse.olap.api.calc.todo.TupleList; +import org.eclipse.daanse.olap.api.calc.todo.TupleListCalc; import org.eclipse.daanse.olap.calc.base.nested.AbstractProfilingNestedTupleListCalc; public class CopyOfTupleListCalc extends AbstractProfilingNestedTupleListCalc { diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/aggregate/AbstractAggregateFunDef.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/aggregate/AbstractAggregateFunDef.java index 822afc0928..a0eecad94f 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/aggregate/AbstractAggregateFunDef.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/aggregate/AbstractAggregateFunDef.java @@ -99,7 +99,7 @@ public static TupleList evaluateCurrentList( TupleList tuples; try { evaluator.setNonEmpty(false); - tuples = tupleListCalc.evaluateList(evaluator); + tuples = tupleListCalc.evaluate(evaluator); } finally { evaluator.restore(savepoint); } @@ -115,7 +115,7 @@ public static TupleList evaluateCurrentList( } protected TupleIterable evaluateCurrentIterable( - TupleIteratorCalc tupleIteratorCalc, + TupleIteratorCalc tupleIteratorCalc, Evaluator evaluator) { final int savepoint = evaluator.savepoint(); @@ -123,7 +123,7 @@ protected TupleIterable evaluateCurrentIterable( TupleIterable iterable; try { evaluator.setNonEmpty(false); - iterable = tupleIteratorCalc.evaluateIterable(evaluator); + iterable = tupleIteratorCalc.evaluate(evaluator); } finally { evaluator.restore(savepoint); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/aggregate/count/CountCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/aggregate/count/CountCalc.java index b6ad5bef32..00d80e0f63 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/aggregate/count/CountCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/aggregate/count/CountCalc.java @@ -29,7 +29,7 @@ protected CountCalc(Type type, final TupleListCalc tupleListCalc) { @Override public Integer evaluate(Evaluator evaluator) { - TupleList list = getChildCalc(0, TupleListCalc.class).evaluateList(evaluator); + TupleList list = getChildCalc(0, TupleListCalc.class).evaluate(evaluator); return FunUtil.count(evaluator, list, true); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/as/AsAliasCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/as/AsAliasCalc.java index d6b5161c99..822b8c401b 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/as/AsAliasCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/as/AsAliasCalc.java @@ -41,7 +41,7 @@ public AsAliasCalc(Type type, ScopedNamedSet scopedNamedSet) { } @Override - public TupleIterable evaluateIterable(Evaluator evaluator) { + public TupleIterable evaluate(Evaluator evaluator) { Evaluator.NamedSetEvaluator namedSetEvaluator = evaluator.getNamedSetEvaluator(scopedNamedSet, false); return namedSetEvaluator.evaluateTupleIterable(evaluator); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/cache/CacheFunDef.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/cache/CacheFunDef.java index 0d30b75e7e..919eeaacdd 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/cache/CacheFunDef.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/cache/CacheFunDef.java @@ -49,7 +49,7 @@ public Calc compileCall(ResolvedFunCall call, ExpressionCompiler compiler) { final Expression exp = call.getArg(0); final ExpCacheDescriptor cacheDescriptor = new ExpCacheDescriptorImpl(exp, compiler); if (call.getType() instanceof SetType) { - return new CacheGenericIterCalc(call.getType(), cacheDescriptor); + return new CacheGenericListCalc(call.getType(), cacheDescriptor); } else { return new CacheGenericCalc(call.getType(), cacheDescriptor); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/cache/CacheGenericIterCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/cache/CacheGenericIterCalc.java deleted file mode 100644 index 8fb5d82a18..0000000000 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/cache/CacheGenericIterCalc.java +++ /dev/null @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2024 Contributors to the Eclipse Foundation. -* -* This program and the accompanying materials are made -* available under the terms of the Eclipse Public License 2.0 -* which is available at https://www.eclipse.org/legal/epl-2.0/ -* -* SPDX-License-Identifier: EPL-2.0 -* -* Contributors: -* SmartCity Jena - initial -* Stefan Bischof (bipolis.org) - initial -*/ -package org.eclipse.daanse.olap.function.def.cache; - -import org.eclipse.daanse.olap.api.Evaluator; -import org.eclipse.daanse.olap.api.ExpCacheDescriptor; -import org.eclipse.daanse.olap.api.calc.Calc; -import org.eclipse.daanse.olap.api.calc.ResultStyle; -import org.eclipse.daanse.olap.api.type.Type; - -import mondrian.calc.impl.GenericIterCalc; - -public class CacheGenericIterCalc extends GenericIterCalc { - private final ExpCacheDescriptor cacheDescriptor; - - protected CacheGenericIterCalc(Type type, ExpCacheDescriptor cacheDescriptor) { - super(type); - this.cacheDescriptor = cacheDescriptor; - } - - @Override - public Object evaluate(Evaluator evaluator) { - return evaluator.getCachedResult(cacheDescriptor); - } - - @Override - public Calc[] getChildCalcs() { - return new Calc[] {cacheDescriptor.getCalc()}; - } - - @Override - public ResultStyle getResultStyle() { - // cached lists are immutable - return ResultStyle.LIST; - } -} diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/cache/CacheGenericListCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/cache/CacheGenericListCalc.java new file mode 100644 index 0000000000..d4a88e14a1 --- /dev/null +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/cache/CacheGenericListCalc.java @@ -0,0 +1,62 @@ +/* +* Copyright (c) 2024 Contributors to the Eclipse Foundation. +* +* This program and the accompanying materials are made +* available under the terms of the Eclipse Public License 2.0 +* which is available at https://www.eclipse.org/legal/epl-2.0/ +* +* SPDX-License-Identifier: EPL-2.0 +* +* Contributors: +* SmartCity Jena - initial +* Stefan Bischof (bipolis.org) - initial +*/ +package org.eclipse.daanse.olap.function.def.cache; + +import org.eclipse.daanse.olap.api.Evaluator; +import org.eclipse.daanse.olap.api.ExpCacheDescriptor; +import org.eclipse.daanse.olap.api.calc.Calc; +import org.eclipse.daanse.olap.api.calc.ResultStyle; +import org.eclipse.daanse.olap.api.calc.todo.TupleCursor; +import org.eclipse.daanse.olap.api.calc.todo.TupleIterable; +import org.eclipse.daanse.olap.api.calc.todo.TupleList; +import org.eclipse.daanse.olap.api.type.Type; +import org.eclipse.daanse.olap.calc.base.nested.AbstractProfilingNestedTupleListCalc; + +import mondrian.calc.impl.TupleCollections; + +public class CacheGenericListCalc extends AbstractProfilingNestedTupleListCalc { + private final ExpCacheDescriptor cacheDescriptor; + + protected CacheGenericListCalc(Type type, ExpCacheDescriptor cacheDescriptor) { + super(type); + this.cacheDescriptor = cacheDescriptor; + } + + @Override + public TupleList evaluate(Evaluator evaluator) { + final Object o = evaluator.getCachedResult(cacheDescriptor); + if (o instanceof TupleList tupleList) { + return tupleList; + } + // Iterable + final TupleIterable iterable = (TupleIterable) o; + final TupleList tupleList = TupleCollections.createList(iterable.getArity()); + final TupleCursor cursor = iterable.tupleCursor(); + while (cursor.forward()) { + tupleList.addCurrent(cursor); + } + return tupleList; + } + + @Override + public Calc[] getChildCalcs() { + return new Calc[] { cacheDescriptor.getCalc() }; + } + + @Override + public ResultStyle getResultStyle() { + // cached lists are immutable + return ResultStyle.LIST; + } +} diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/count/CountCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/count/CountCalc.java index e2aaed3ab2..91562bfe50 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/count/CountCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/count/CountCalc.java @@ -77,13 +77,13 @@ public boolean dependsOn(Hierarchy hierarchy) { return !calc.getType().usesHierarchy(hierarchy, true); } - private TupleIterable evaluateCurrentIterable(TupleIteratorCalc tupleIteratorCalc, Evaluator evaluator) { + private TupleIterable evaluateCurrentIterable(TupleIteratorCalc tupleIteratorCalc, Evaluator evaluator) { final int savepoint = evaluator.savepoint(); int currLen = 0; TupleIterable iterable; try { evaluator.setNonEmpty(false); - iterable = tupleIteratorCalc.evaluateIterable(evaluator); + iterable = tupleIteratorCalc.evaluate(evaluator); } finally { evaluator.restore(savepoint); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/covariance/CovarianceCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/covariance/CovarianceCalc.java index 10e3edfd0b..3b5d4c394a 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/covariance/CovarianceCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/covariance/CovarianceCalc.java @@ -35,7 +35,7 @@ protected CovarianceCalc(Type type, final TupleListCalc tupleListCalc, final Cal @Override public Double evaluate(Evaluator evaluator) { - TupleList memberList = getChildCalc(0, TupleListCalc.class).evaluateList(evaluator); + TupleList memberList = getChildCalc(0, TupleListCalc.class).evaluate(evaluator); final int savepoint = evaluator.savepoint(); try { evaluator.setNonEmpty(false); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/crossjoin/BaseListCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/crossjoin/BaseListCalc.java index cb0f25c84c..199caed459 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/crossjoin/BaseListCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/crossjoin/BaseListCalc.java @@ -37,7 +37,7 @@ protected BaseListCalc( ResolvedFunCall call, Calc[] calcs, boolean mutable, int } @Override - public TupleList evaluateList( Evaluator evaluator ) { + public TupleList evaluate( Evaluator evaluator ) { // Use a native evaluator, if more efficient. // TODO: Figure this out at compile time. CatalogReader schemaReader = evaluator.getCatalogReader(); @@ -51,10 +51,10 @@ public TupleList evaluateList( Evaluator evaluator ) { TupleListCalc listCalc1 = (TupleListCalc) calcs[0]; TupleListCalc listCalc2 = (TupleListCalc) calcs[1]; - TupleList l1 = listCalc1.evaluateList( evaluator ); + TupleList l1 = listCalc1.evaluate( evaluator ); // check if size of first list already exceeds limit Util.checkCJResultLimit( l1.size() ); - TupleList l2 = listCalc2.evaluateList( evaluator ); + TupleList l2 = listCalc2.evaluate( evaluator ); // check if size of second list already exceeds limit Util.checkCJResultLimit( l2.size() ); // check crossjoin diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/crossjoin/CrossJoinIterCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/crossjoin/CrossJoinIterCalc.java index 2765e01c9f..a65c47cece 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/crossjoin/CrossJoinIterCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/crossjoin/CrossJoinIterCalc.java @@ -45,7 +45,7 @@ public CrossJoinIterCalc( ResolvedFunCall call, Calc[] calcs, int ctag ) { } @Override - public TupleIterable evaluateIterable( Evaluator evaluator ) { + public TupleIterable evaluate( Evaluator evaluator ) { // Use a native evaluator, if more efficient. // TODO: Figure this out at compile time. @@ -57,10 +57,10 @@ public TupleIterable evaluateIterable( Evaluator evaluator ) { } Calc[] calcs = getChildCalcs(); - TupleIteratorCalc calc1 = (TupleIteratorCalc) calcs[0]; - TupleIteratorCalc calc2 = (TupleIteratorCalc) calcs[1]; + TupleIteratorCalc calc1 = (TupleIteratorCalc) calcs[0]; + TupleIteratorCalc calc2 = (TupleIteratorCalc) calcs[1]; - TupleIterable o1 = calc1.evaluateIterable( evaluator ); + TupleIterable o1 = calc1.evaluate( evaluator ); if ( o1 instanceof TupleList l1 ) { l1 = CrossJoinFunDef.nonEmptyOptimizeList( evaluator, l1, call, ctag ); if ( l1.isEmpty() ) { @@ -69,7 +69,7 @@ public TupleIterable evaluateIterable( Evaluator evaluator ) { o1 = l1; } - TupleIterable o2 = calc2.evaluateIterable( evaluator ); + TupleIterable o2 = calc2.evaluate( evaluator ); if ( o2 instanceof TupleList l2 ) { l2 = CrossJoinFunDef.nonEmptyOptimizeList( evaluator, l2, call, ctag ); if ( l2.isEmpty() ) { diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/descendants/DescendantsByDepthCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/descendants/DescendantsByDepthCalc.java index e35646c37d..4d191fb321 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/descendants/DescendantsByDepthCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/descendants/DescendantsByDepthCalc.java @@ -38,7 +38,7 @@ public DescendantsByDepthCalc(Type type, MemberCalc memberCalc, IntegerCalc dept } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { final MemberCalc memberCalc = getChildCalc(0, MemberCalc.class); final IntegerCalc depthCalc = getChildCalc(1, IntegerCalc.class); final Member member = memberCalc.evaluate(evaluator); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/descendants/DescendantsCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/descendants/DescendantsCalc.java index 5aa8881e99..790ecf1fce 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/descendants/DescendantsCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/descendants/DescendantsCalc.java @@ -40,7 +40,7 @@ public DescendantsCalc(Type type, MemberCalc memberCalc, LevelCalc levelCalc, fi } @Override - public TupleList evaluateList( Evaluator evaluator ) { + public TupleList evaluate( Evaluator evaluator ) { MemberCalc memberCalc = getChildCalc(0, MemberCalc.class); LevelCalc levelCalc = getChildCalc(1, LevelCalc.class); final Evaluator context = diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/descendants/DescendantsLeavesByDepthCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/descendants/DescendantsLeavesByDepthCalc.java index aa224019f4..41073f876b 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/descendants/DescendantsLeavesByDepthCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/descendants/DescendantsLeavesByDepthCalc.java @@ -36,7 +36,7 @@ public DescendantsLeavesByDepthCalc(Type type, MemberCalc memberCalc, IntegerCal } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { IntegerCalc depthCalc = getChildCalc(1, IntegerCalc.class); final Member member = getChildCalc(0, MemberCalc.class).evaluate(evaluator); List result = new ArrayList<>(); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/drilldownlevel/DrilldownLevelCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/drilldownlevel/DrilldownLevelCalc.java index fc8489661f..3c8ec70c43 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/drilldownlevel/DrilldownLevelCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/drilldownlevel/DrilldownLevelCalc.java @@ -40,10 +40,10 @@ public DrilldownLevelCalc(Type type, TupleListCalc tupleListCalc, LevelCalc leve } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { TupleListCalc tupleListCalc = getChildCalc(0, TupleListCalc.class); LevelCalc levelCalc = getChildCalc(1, LevelCalc.class); - TupleList list = tupleListCalc.evaluateList(evaluator); + TupleList list = tupleListCalc.evaluate(evaluator); if (list.isEmpty()) { return list; } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/drilldownlevel/DrilldownLevelWithIndexCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/drilldownlevel/DrilldownLevelWithIndexCalc.java index 73c940a0ca..0f0cd0900b 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/drilldownlevel/DrilldownLevelWithIndexCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/drilldownlevel/DrilldownLevelWithIndexCalc.java @@ -40,10 +40,10 @@ public DrilldownLevelWithIndexCalc(Type type, TupleListCalc tupleListCalc, Integ } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { TupleListCalc tupleListCalc = getChildCalc(0, TupleListCalc.class); IntegerCalc indexCalc = getChildCalc(1, IntegerCalc.class); - TupleList list = tupleListCalc.evaluateList(evaluator); + TupleList list = tupleListCalc.evaluate(evaluator); if (list.isEmpty()) { return list; } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/drilldownleveltopbottom/DrilldownLevelTopBottomCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/drilldownleveltopbottom/DrilldownLevelTopBottomCalc.java index 568b131cef..81a3b28fba 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/drilldownleveltopbottom/DrilldownLevelTopBottomCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/drilldownleveltopbottom/DrilldownLevelTopBottomCalc.java @@ -56,7 +56,7 @@ public DrilldownLevelTopBottomCalc(final Type type, final TupleListCalc tupleLis } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { // Use a native evaluator, if more efficient. // TODO: Figure this out at compile time. TupleListCalc tupleListCalc = getChildCalc(0, TupleListCalc.class); @@ -69,7 +69,7 @@ public TupleList evaluateList(Evaluator evaluator) { return (TupleList) nativeEvaluator.execute(ResultStyle.LIST); } - TupleList list = tupleListCalc.evaluateList(evaluator); + TupleList list = tupleListCalc.evaluate(evaluator); Integer n = integerCalc.evaluate(evaluator); if (n == null || n <= 0) { return list; diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/drilldownmember/DrilldownMemberCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/drilldownmember/DrilldownMemberCalc.java index f26d2ce464..0a769087dd 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/drilldownmember/DrilldownMemberCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/drilldownmember/DrilldownMemberCalc.java @@ -37,9 +37,9 @@ public DrilldownMemberCalc(final Type type, final TupleListCalc listCalc1, final } @Override - public TupleList evaluateList(Evaluator evaluator) { - final TupleList list1 = getChildCalc(0, TupleListCalc.class).evaluateList(evaluator); - final TupleList list2 = getChildCalc(1, TupleListCalc.class).evaluateList(evaluator); + public TupleList evaluate(Evaluator evaluator) { + final TupleList list1 = getChildCalc(0, TupleListCalc.class).evaluate(evaluator); + final TupleList list2 = getChildCalc(1, TupleListCalc.class).evaluate(evaluator); return drilldownMember(list1, list2, evaluator); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/except/ExceptCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/except/ExceptCalc.java index 319795dbdc..a30a383bed 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/except/ExceptCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/except/ExceptCalc.java @@ -33,12 +33,12 @@ public ExceptCalc(Type type, TupleListCalc listCalc0, TupleListCalc listCalc1) { } @Override - public TupleList evaluateList(Evaluator evaluator) { - TupleList list0 = getChildCalc(0, TupleListCalc.class).evaluateList(evaluator); + public TupleList evaluate(Evaluator evaluator) { + TupleList list0 = getChildCalc(0, TupleListCalc.class).evaluate(evaluator); if (list0.isEmpty()) { return list0; } - TupleList list1 = getChildCalc(1, TupleListCalc.class).evaluateList(evaluator); + TupleList list1 = getChildCalc(1, TupleListCalc.class).evaluate(evaluator); if (list1.isEmpty()) { return list0; } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/exists/ExistsCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/exists/ExistsCalc.java index 1cc11ec93b..a049241b80 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/exists/ExistsCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/exists/ExistsCalc.java @@ -34,12 +34,12 @@ public ExistsCalc(Type type, TupleListCalc listCalc1, TupleListCalc listCalc2) { } @Override - public TupleList evaluateList(Evaluator evaluator) { - TupleList leftTuples = getChildCalc(0, TupleListCalc.class).evaluateList(evaluator); + public TupleList evaluate(Evaluator evaluator) { + TupleList leftTuples = getChildCalc(0, TupleListCalc.class).evaluate(evaluator); if (leftTuples.isEmpty()) { return TupleCollections.emptyList(leftTuples.getArity()); } - TupleList rightTuples = getChildCalc(1, TupleListCalc.class).evaluateList(evaluator); + TupleList rightTuples = getChildCalc(1, TupleListCalc.class).evaluate(evaluator); if (rightTuples.isEmpty()) { return TupleCollections.emptyList(leftTuples.getArity()); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/generate/GenerateListCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/generate/GenerateListCalc.java index bf4eac9f1d..a72d91271c 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/generate/GenerateListCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/generate/GenerateListCalc.java @@ -46,13 +46,13 @@ public GenerateListCalc(Type type, TupleIteratorCalc tupleIteratorCalc, TupleLis } @Override - public TupleList evaluateList(Evaluator evaluator) { - TupleIteratorCalc tupleIteratorCalc = getChildCalc(0, TupleIteratorCalc.class); + public TupleList evaluate(Evaluator evaluator) { + TupleIteratorCalc tupleIteratorCalc = getChildCalc(0, TupleIteratorCalc.class); TupleListCalc listCalc2 = getChildCalc(1, TupleListCalc.class); final int savepoint = evaluator.savepoint(); try { evaluator.setNonEmpty(false); - final TupleIterable iterable1 = tupleIteratorCalc.evaluateIterable(evaluator); + final TupleIterable iterable1 = tupleIteratorCalc.evaluate(evaluator); evaluator.restore(savepoint); TupleList result = TupleCollections.createList(arityOut); Execution execution = LocusImpl.peek().getExecution(); @@ -62,7 +62,7 @@ public TupleList evaluateList(Evaluator evaluator) { while (cursor.forward()) { CancellationChecker.checkCancelOrTimeout(rowCount++, execution); cursor.setContext(evaluator); - final TupleList result2 = listCalc2.evaluateList(evaluator); + final TupleList result2 = listCalc2.evaluate(evaluator); result.addAll(result2); } } else { @@ -73,7 +73,7 @@ public TupleList evaluateList(Evaluator evaluator) { while (cursor.forward()) { CancellationChecker.checkCancelOrTimeout(rowCount++, execution); cursor.setContext(evaluator); - final TupleList result2 = listCalc2.evaluateList(evaluator); + final TupleList result2 = listCalc2.evaluate(evaluator); addDistinctTuples(result, result2, emitted); } } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/generate/GenerateStringCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/generate/GenerateStringCalc.java index c72a8f7b31..5abb17e4fb 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/generate/GenerateStringCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/generate/GenerateStringCalc.java @@ -41,7 +41,7 @@ public String evaluate(Evaluator evaluator) { try { StringBuilder buf = new StringBuilder(); int k = 0; - final TupleIterable iter11 = getChildCalc(0, TupleIteratorCalc.class).evaluateIterable(evaluator); + final TupleIterable iter11 = (TupleIterable) getChildCalc(0, TupleIteratorCalc.class).evaluate(evaluator); final TupleCursor cursor = iter11.tupleCursor(); int currentIteration = 0; Execution execution = evaluator.getQuery().getStatement().getCurrentExecution(); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/headtail/HeadCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/headtail/HeadCalc.java index 1bc7f2c94d..40520ee48a 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/headtail/HeadCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/headtail/HeadCalc.java @@ -29,11 +29,11 @@ public HeadCalc(Type type, TupleListCalc tupleListCalc, IntegerCalc integerCalc) } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { final int savepoint = evaluator.savepoint(); try { evaluator.setNonEmpty(false); - TupleList list = getChildCalc(0, TupleListCalc.class).evaluateList(evaluator); + TupleList list = getChildCalc(0, TupleListCalc.class).evaluate(evaluator); Integer count = getChildCalc(1, IntegerCalc.class).evaluate(evaluator); return head(count, list); } finally { diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/headtail/TailCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/headtail/TailCalc.java index 19ab5a9714..204e86af56 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/headtail/TailCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/headtail/TailCalc.java @@ -29,11 +29,11 @@ public TailCalc(Type type, TupleListCalc tupleListCalc, IntegerCalc integerCalc) } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { final int savepoint = evaluator.savepoint(); try { evaluator.setNonEmpty(false); - TupleList list = getChildCalc(0, TupleListCalc.class).evaluateList(evaluator); + TupleList list = getChildCalc(0, TupleListCalc.class).evaluate(evaluator); Integer count = getChildCalc(1, IntegerCalc.class).evaluate(evaluator); return tail(count, list); } finally { diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/hierarchize/HierarchizeCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/hierarchize/HierarchizeCalc.java index 818156ed0d..99565780ea 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/hierarchize/HierarchizeCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/hierarchize/HierarchizeCalc.java @@ -31,8 +31,8 @@ protected HierarchizeCalc(Type type, TupleListCalc tupleListCalc, final boolean } @Override - public TupleList evaluateList( Evaluator evaluator ) { - TupleList list = getChildCalc(0, TupleListCalc.class).evaluateList( evaluator ); + public TupleList evaluate( Evaluator evaluator ) { + TupleList list = getChildCalc(0, TupleListCalc.class).evaluate( evaluator ); return Sorter.hierarchizeTupleList( list, post ); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/iif/IifFunDef.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/iif/IifFunDef.java index faabd7d819..ec1c4637df 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/iif/IifFunDef.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/iif/IifFunDef.java @@ -18,6 +18,8 @@ import org.eclipse.daanse.olap.api.calc.Calc; import org.eclipse.daanse.olap.api.calc.ResultStyle; import org.eclipse.daanse.olap.api.calc.compiler.ExpressionCompiler; +import org.eclipse.daanse.olap.api.calc.todo.TupleIteratorCalc; +import org.eclipse.daanse.olap.api.calc.todo.TupleListCalc; import org.eclipse.daanse.olap.api.function.FunctionMetaData; import org.eclipse.daanse.olap.api.query.component.Expression; import org.eclipse.daanse.olap.api.query.component.ResolvedFunCall; @@ -80,7 +82,16 @@ public Calc compileCall( ResolvedFunCall call, ExpressionCompiler compiler) { compiler.compileAs( call.getArg(2), call.getType(), ResultStyle.ANY_LIST); if (call.getType() instanceof SetType) { - return new IifSetTypeCalc(call.getType(), booleanCalc, calc1, calc2); + if (calc1 instanceof TupleListCalc tlc) { + + return new IifSetTypeListCalc(call.getType(), booleanCalc, calc1, calc2); + } else if (calc1 instanceof TupleIteratorCalc tlc) { + + return new IifSetTypeIterableCalcCalc(call.getType(), booleanCalc, calc1, calc2); + } else { + throw new IllegalArgumentException( + "Iif: unexpected type for first argument: " + calc1); + } } else { return new IifCalc(call.getType(), booleanCalc, calc1, calc2) { }; diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/iif/IifSetTypeIterableCalcCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/iif/IifSetTypeIterableCalcCalc.java new file mode 100644 index 0000000000..e642da2a65 --- /dev/null +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/iif/IifSetTypeIterableCalcCalc.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2024 Contributors to the Eclipse Foundation. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * SmartCity Jena - initial + * Stefan Bischof (bipolis.org) - initial + */ +package org.eclipse.daanse.olap.function.def.iif; + +import org.eclipse.daanse.olap.api.Evaluator; +import org.eclipse.daanse.olap.api.calc.BooleanCalc; +import org.eclipse.daanse.olap.api.calc.Calc; +import org.eclipse.daanse.olap.api.calc.ResultStyle; +import org.eclipse.daanse.olap.api.calc.todo.TupleIterable; +import org.eclipse.daanse.olap.api.type.Type; +import org.eclipse.daanse.olap.calc.base.nested.AbstractProfilingNestedTupleIterableCalc; + +public class IifSetTypeIterableCalcCalc extends AbstractProfilingNestedTupleIterableCalc { + + private final BooleanCalc booleanCalc; + private final Calc calc1; + private final Calc calc2; + + protected IifSetTypeIterableCalcCalc(Type type, BooleanCalc booleanCalc, Calc calc1, Calc calc2) { + super(type); + this.booleanCalc = booleanCalc; + this.calc1 = calc1; + this.calc2 = calc2; + } + + @Override + public TupleIterable evaluate(Evaluator evaluator) { + final boolean b = booleanCalc.evaluate(evaluator); + Calc calc = b ? calc1 : calc2; + return (TupleIterable) calc.evaluate(evaluator); + } + + @Override + public Calc[] getChildCalcs() { + return new Calc[] { booleanCalc, calc1, calc2 }; + } + + @Override + public ResultStyle getResultStyle() { + return calc1.getResultStyle(); + } + +} diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/iif/IifSetTypeCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/iif/IifSetTypeListCalc.java similarity index 74% rename from mondrian/src/main/java/org/eclipse/daanse/olap/function/def/iif/IifSetTypeCalc.java rename to mondrian/src/main/java/org/eclipse/daanse/olap/function/def/iif/IifSetTypeListCalc.java index 1a913bcc45..dc09f28cfd 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/iif/IifSetTypeCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/iif/IifSetTypeListCalc.java @@ -17,17 +17,17 @@ import org.eclipse.daanse.olap.api.calc.BooleanCalc; import org.eclipse.daanse.olap.api.calc.Calc; import org.eclipse.daanse.olap.api.calc.ResultStyle; +import org.eclipse.daanse.olap.api.calc.todo.TupleList; import org.eclipse.daanse.olap.api.type.Type; +import org.eclipse.daanse.olap.calc.base.nested.AbstractProfilingNestedTupleListCalc; -import mondrian.calc.impl.GenericIterCalc; - -public class IifSetTypeCalc extends GenericIterCalc { +public class IifSetTypeListCalc extends AbstractProfilingNestedTupleListCalc { private final BooleanCalc booleanCalc; private final Calc calc1; private final Calc calc2; - protected IifSetTypeCalc(Type type, BooleanCalc booleanCalc, Calc calc1, Calc calc2) { + protected IifSetTypeListCalc(Type type, BooleanCalc booleanCalc, Calc calc1, Calc calc2) { super(type); this.booleanCalc = booleanCalc; this.calc1 = calc1; @@ -35,10 +35,10 @@ protected IifSetTypeCalc(Type type, BooleanCalc booleanCalc, Calc calc1, Calc } @Override - public Object evaluate(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { final boolean b = booleanCalc.evaluate(evaluator); Calc calc = b ? calc1 : calc2; - return calc.evaluate(evaluator); + return (TupleList) calc.evaluate(evaluator); } @Override diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/intersect/IntersectCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/intersect/IntersectCalc.java index a07ea9c239..cac06b0d85 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/intersect/IntersectCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/intersect/IntersectCalc.java @@ -41,12 +41,12 @@ public IntersectCalc(Type type, TupleListCalc listCalc1, TupleListCalc listCalc2 } @Override - public TupleList evaluateList(Evaluator evaluator) { - TupleList leftList = getChildCalc(0, TupleListCalc.class).evaluateList(evaluator); + public TupleList evaluate(Evaluator evaluator) { + TupleList leftList = getChildCalc(0, TupleListCalc.class).evaluate(evaluator); if (leftList.isEmpty()) { return leftList; } - final TupleList rightList = getChildCalc(1, TupleListCalc.class).evaluateList(evaluator); + final TupleList rightList = getChildCalc(1, TupleListCalc.class).evaluate(evaluator); if (rightList.isEmpty()) { return rightList; } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/lastperiods/LastPeriodsCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/lastperiods/LastPeriodsCalc.java index d1b6739025..e6147ad94a 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/lastperiods/LastPeriodsCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/lastperiods/LastPeriodsCalc.java @@ -34,7 +34,7 @@ public LastPeriodsCalc(Type type, MemberCalc memberCalc, IntegerCalc indexValueC } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { Member member = getChildCalc(0, MemberCalc.class).evaluate(evaluator); Integer indexValue = getChildCalc(1, IntegerCalc.class).evaluate(evaluator); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/linreg/LinRegCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/linreg/LinRegCalc.java index 07db6f15c1..2925ad45d3 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/linreg/LinRegCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/linreg/LinRegCalc.java @@ -79,7 +79,7 @@ public static Value process( TupleList members; try { evaluator.setNonEmpty(false); - members = tupleListCalc.evaluateList(evaluator); + members = tupleListCalc.evaluate(evaluator); } finally { evaluator.restore(savepoint); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/member/AncestorsCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/member/AncestorsCalc.java index 43450d378c..40f698a934 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/member/AncestorsCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/member/AncestorsCalc.java @@ -34,7 +34,7 @@ protected AncestorsCalc(Type type, final MemberCalc memberCalc, final IntegerCal } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { Member member = getChildCalc(0, MemberCalc.class).evaluate(evaluator); Integer distance = getChildCalc(1, IntegerCalc.class).evaluate(evaluator); List ancestors = new ArrayList<>(); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/member/AncestorsCalcForLevelType.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/member/AncestorsCalcForLevelType.java index b096005ebd..d53e3d8172 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/member/AncestorsCalcForLevelType.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/member/AncestorsCalcForLevelType.java @@ -35,7 +35,7 @@ protected AncestorsCalcForLevelType(Type type, final MemberCalc memberCalc, fina } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { Level level = getChildCalc(1, LevelCalc.class).evaluate(evaluator); Member member = getChildCalc(0, MemberCalc.class).evaluate(evaluator); int distance = member.getDepth() - level.getDepth(); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/member/AncestorsFunDef.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/member/AncestorsFunDef.java index 66fffca525..e52e4e5a73 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/member/AncestorsFunDef.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/member/AncestorsFunDef.java @@ -50,7 +50,7 @@ public Calc compileCall(ResolvedFunCall call, ExpressionCompiler compiler) { final IntegerCalc distanceCalc = compiler.compileInteger(call.getArg(1)); return new AncestorsCalc(call.getType(), memberCalc, distanceCalc) { @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { Member member = memberCalc.evaluate(evaluator); Integer distance = distanceCalc.evaluate(evaluator); List ancestors = new ArrayList<>(); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NativeListCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NativeListCalc.java index 10bd3da456..a14f02be45 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NativeListCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NativeListCalc.java @@ -57,7 +57,7 @@ protected NativeListCalc( } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { return computeTuples(evaluator); } @@ -78,7 +78,7 @@ private TupleList evaluateSimplifiedList(Evaluator evaluator) { evaluator.setNonEmpty(false); evaluator.setNativeEnabled(false); TupleList simplifiedList = - simpleCalc.evaluateList(evaluator); + simpleCalc.evaluate(evaluator); NativizeSetFunDef.dumpListToLog("simplified list", simplifiedList); return simplifiedList; } finally { @@ -96,7 +96,7 @@ private TupleList evaluateNonNative(Evaluator evaluator) { try { evaluator.setNonEmpty(true); evaluator.setNativeEnabled(false); - TupleList members = calc.evaluateList(evaluator); + TupleList members = calc.evaluate(evaluator); return members; } finally { evaluator.restore(savepoint); @@ -215,6 +215,6 @@ private TupleList evaluateJoinExpression( .parseExpression(crossJoinExpression); Expression resolved = compiler.getValidator().validate(unresolved, false); TupleListCalc calc = compiler.compileList(resolved); - return calc.evaluateList(evaluator); + return calc.evaluate(evaluator); } } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NativizeSetFunDef.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NativizeSetFunDef.java index d42d31270a..a3d866315c 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NativizeSetFunDef.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NativizeSetFunDef.java @@ -114,7 +114,7 @@ public Calc compileCall( ResolvedFunCall call, ExpressionCompiler compiler) { final int arity = calcs[0].getType().getArity(); assert arity >= 0; if (arity == 1 || substitutionMap.isEmpty()) { - TupleIteratorCalc calc = (TupleIteratorCalc) funArg.accept(compiler); + Calc calc = funArg.accept(compiler); final boolean highCardinality = arity == 1 && isHighCardinality(funArg, compiler.getEvaluator()); @@ -122,10 +122,10 @@ public Calc compileCall( ResolvedFunCall call, ExpressionCompiler compiler) { // This can happen under JDK1.4: caller wants iterator // implementation, but compiler can only provide list. // Fall through and use native. - } else if (calc instanceof TupleListCalc) { - return new NonNativeListCalc((TupleListCalc) calc, highCardinality); - } else { - return new NonNativeIterCalc(calc, highCardinality); + } else if (calc instanceof TupleListCalc tlc) { + return new NonNativeListCalc(tlc, highCardinality); + } else if(calc instanceof TupleIteratorCalc tic) { + return new NonNativeIterCalc(tic, highCardinality); } } if (isFirstCompileCall) { diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NonNativeCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NonNativeCalc.java index a26bc65abe..b46776beb9 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NonNativeCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NonNativeCalc.java @@ -20,11 +20,11 @@ import org.eclipse.daanse.olap.api.element.Hierarchy; import org.eclipse.daanse.olap.calc.base.AbstractProfilingCalc; -public class NonNativeCalc extends AbstractProfilingCalc implements ProfilingCalc { - final Calc parent; +public class NonNativeCalc extends AbstractProfilingCalc implements ProfilingCalc { + final Calc parent; final boolean nativeEnabled; - protected NonNativeCalc(Calc parent, final boolean nativeEnabled) { + protected NonNativeCalc(Calc parent, final boolean nativeEnabled) { super(parent.getType()); assert parent != null; @@ -33,7 +33,7 @@ protected NonNativeCalc(Calc parent, final boolean nativeEnabled) { } @Override - public Object evaluate(final Evaluator evaluator) { + public E evaluate(final Evaluator evaluator) { evaluator.setNativeEnabled(nativeEnabled); return parent.evaluate(evaluator); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NonNativeIterCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NonNativeIterCalc.java index 510090f6bf..3b98eb47b0 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NonNativeIterCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NonNativeIterCalc.java @@ -17,18 +17,18 @@ import org.eclipse.daanse.olap.api.calc.todo.TupleIterable; import org.eclipse.daanse.olap.api.calc.todo.TupleIteratorCalc; -public class NonNativeIterCalc extends NonNativeCalc implements TupleIteratorCalc { +public class NonNativeIterCalc extends NonNativeCalc implements TupleIteratorCalc { protected NonNativeIterCalc(TupleIteratorCalc parent, boolean highCardinality) { super(parent, highCardinality); } - TupleIteratorCalc parent() { + TupleIteratorCalc parent() { return (TupleIteratorCalc) parent; } @Override - public TupleIterable evaluateIterable(Evaluator evaluator) { + public TupleIterable evaluate(Evaluator evaluator) { evaluator.setNativeEnabled(nativeEnabled); - return parent().evaluateIterable(evaluator); + return parent().evaluate(evaluator); } } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NonNativeListCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NonNativeListCalc.java index 39faa45876..c3a9d39d78 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NonNativeListCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nativizeset/NonNativeListCalc.java @@ -14,11 +14,10 @@ package org.eclipse.daanse.olap.function.def.nativizeset; import org.eclipse.daanse.olap.api.Evaluator; -import org.eclipse.daanse.olap.api.calc.todo.TupleIterable; import org.eclipse.daanse.olap.api.calc.todo.TupleList; import org.eclipse.daanse.olap.api.calc.todo.TupleListCalc; -public class NonNativeListCalc extends NonNativeCalc implements TupleListCalc { +public class NonNativeListCalc extends NonNativeCalc implements TupleListCalc { protected NonNativeListCalc(TupleListCalc parent, boolean highCardinality) { super(parent, highCardinality); } @@ -28,13 +27,13 @@ TupleListCalc parent() { } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { evaluator.setNativeEnabled(nativeEnabled); - return parent().evaluateList(evaluator); + return parent().evaluate(evaluator); } - @Override - public TupleIterable evaluateIterable(Evaluator evaluator) { - return evaluateList(evaluator); - } +// @Override +// public TupleIterable evaluateIterable(Evaluator evaluator) { +// return evaluateList(evaluator); +// } } \ No newline at end of file diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nonempty/NonEmptyCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nonempty/NonEmptyCalc.java index ffd0cfd99e..74cf70afdb 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nonempty/NonEmptyCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nonempty/NonEmptyCalc.java @@ -38,20 +38,20 @@ public NonEmptyCalc( } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { final int savepoint = evaluator.savepoint(); TupleListCalc listCalc1 = getChildCalc(0, TupleListCalc.class); TupleListCalc listCalc2 = getChildCalc(1, TupleListCalc.class); try { evaluator.setNonEmpty(true); - TupleList leftTuples = listCalc1.evaluateList(evaluator); + TupleList leftTuples = listCalc1.evaluate(evaluator); if (leftTuples.isEmpty()) { return TupleCollections.emptyList(leftTuples.getArity()); } TupleList rightTuples = null; if(listCalc2 != null) { - rightTuples = listCalc2.evaluateList(evaluator); + rightTuples = listCalc2.evaluate(evaluator); } TupleList result = TupleCollections.createList(leftTuples.getArity()); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nonemptycrossjoin/NonEmptyCrossJoinCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nonemptycrossjoin/NonEmptyCrossJoinCalc.java index f7eb6b219d..d40dad7c6e 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nonemptycrossjoin/NonEmptyCrossJoinCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nonemptycrossjoin/NonEmptyCrossJoinCalc.java @@ -40,7 +40,7 @@ public NonEmptyCrossJoinCalc(Type type, TupleListCalc listCalc1, TupleListCalc l } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { CatalogReader schemaReader = evaluator.getCatalogReader(); // Evaluate the arguments in non empty mode, but remove from @@ -80,12 +80,12 @@ public TupleList evaluateList(Evaluator evaluator) { ResultStyle.LIST); } - final TupleList list1 = listCalc1.evaluateList(evaluator); + final TupleList list1 = listCalc1.evaluate(evaluator); if (list1.isEmpty()) { evaluator.restore(savepoint); return list1; } - final TupleList list2 = listCalc2.evaluateList(evaluator); + final TupleList list2 = listCalc2.evaluate(evaluator); TupleList result = CrossJoinFunDef.mutableCrossJoin(list1, list2); // remove any remaining empty crossings from the result diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nonstandard/CachedExistsCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nonstandard/CachedExistsCalc.java index 74993deb6a..90df7971bc 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nonstandard/CachedExistsCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/nonstandard/CachedExistsCalc.java @@ -42,7 +42,7 @@ protected CachedExistsCalc(Type type, final TupleListCalc listCalc, final TupleC } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { evaluator.getTiming().markStart(TIMING_NAME); try { @@ -80,7 +80,7 @@ public TupleList evaluateList(Evaluator evaluator) { // Build subtotal cache HashMap setCache = new HashMap<>(); - TupleList setToCache = getChildCalc(0, TupleListCalc.class).evaluateList(evaluator); + TupleList setToCache = getChildCalc(0, TupleListCalc.class).evaluate(evaluator); for (List tuple : setToCache) { String subtotalKey = makeSubtotalKey(subtotalToListIndex, tuple, subtotal); TupleList tupleCache = setCache.get(subtotalKey); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/order/OrderContextCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/order/OrderContextCalc.java index aa2e50030b..aa9bd2bb6d 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/order/OrderContextCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/order/OrderContextCalc.java @@ -17,14 +17,14 @@ import org.eclipse.daanse.olap.api.calc.Calc; import org.eclipse.daanse.olap.api.calc.MemberCalc; import org.eclipse.daanse.olap.api.calc.ResultStyle; +import org.eclipse.daanse.olap.api.calc.todo.TupleList; import org.eclipse.daanse.olap.api.element.Hierarchy; import org.eclipse.daanse.olap.api.element.Member; +import org.eclipse.daanse.olap.calc.base.nested.AbstractProfilingNestedTupleListCalc; import org.eclipse.daanse.olap.calc.base.util.HirarchyDependsChecker; import org.eclipse.daanse.olap.function.def.order.OrderFunDef.CalcWithDual; -import mondrian.calc.impl.GenericIterCalc; - -public class OrderContextCalc extends GenericIterCalc { +public class OrderContextCalc extends AbstractProfilingNestedTupleListCalc { private final MemberCalc[] memberCalcs; private final CalcWithDual calc; private final Member[] members; // workspace @@ -44,7 +44,7 @@ private static Calc[] xx( MemberCalc[] memberCalcs, CalcWithDual calc ) { } @Override - public Object evaluate( Evaluator evaluator ) { + public TupleList evaluate( Evaluator evaluator ) { // Evaluate each of the members, and set as context in the // sub-evaluator. for ( int i = 0; i < memberCalcs.length; i++ ) { diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/order/OrderCurrentMemberCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/order/OrderCurrentMemberCalc.java index 85fa1829cd..378ffa497e 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/order/OrderCurrentMemberCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/order/OrderCurrentMemberCalc.java @@ -38,7 +38,7 @@ import mondrian.olap.fun.sort.Sorter.SorterFlag; public class OrderCurrentMemberCalc extends AbstractListCalc implements CalcWithDual { - private final TupleIteratorCalc tupleIteratorCalc; + private final TupleIteratorCalc tupleIteratorCalc; private final Calc sortKeyCalc; private final List keySpecList; private final int originalKeySpecCount; @@ -56,7 +56,7 @@ public OrderCurrentMemberCalc( Type type, Calc[] calcList, List @Override public TupleList evaluateDual( Evaluator rootEvaluator, Evaluator subEvaluator ) { assert originalKeySpecCount == 1; - final TupleIterable iterable = tupleIteratorCalc.evaluateIterable( rootEvaluator ); + final TupleIterable iterable = tupleIteratorCalc.evaluate( rootEvaluator ); // REVIEW: If iterable happens to be a list, we'd like to pass it, // but we cannot yet guarantee that it is mutable. // final TupleList list = iterable instanceof ArrayTupleList && false ? (TupleList) iterable : null; old code @@ -67,10 +67,10 @@ public TupleList evaluateDual( Evaluator rootEvaluator, Evaluator subEvaluator ) } @Override - public TupleList evaluateList( Evaluator evaluator ) { + public TupleList evaluate( Evaluator evaluator ) { evaluator.getTiming().markStart( OrderFunDef.TIMING_NAME ); try { - final TupleIterable iterable = tupleIteratorCalc.evaluateIterable( evaluator ); + final TupleIterable iterable = tupleIteratorCalc.evaluate( evaluator ); // REVIEW: If iterable happens to be a list, we'd like to pass it, // but we cannot yet guarantee that it is mutable. // final TupleList list = iterable instanceof ArrayTupleList && false ? (TupleList) iterable : null; old code list all time null diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/order/OrderFunDef.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/order/OrderFunDef.java index 1aea2fb878..470024ffc2 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/order/OrderFunDef.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/order/OrderFunDef.java @@ -26,6 +26,7 @@ import org.eclipse.daanse.olap.api.calc.compiler.ExpressionCompiler; import org.eclipse.daanse.olap.api.calc.todo.TupleIteratorCalc; import org.eclipse.daanse.olap.api.calc.todo.TupleList; +import org.eclipse.daanse.olap.api.calc.todo.TupleListCalc; import org.eclipse.daanse.olap.api.query.component.Expression; import org.eclipse.daanse.olap.api.query.component.ResolvedFunCall; import org.eclipse.daanse.olap.calc.base.AbstractProfilingNestedCalc; @@ -120,7 +121,7 @@ private void buildKeySpecList( List keySpecList, ResolvedFunCall ca } } - public interface CalcWithDual extends Calc { + public interface CalcWithDual extends TupleListCalc { public TupleList evaluateDual( Evaluator rootEvaluator, Evaluator subEvaluator ); } } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/periodstodate/PeriodsToDateCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/periodstodate/PeriodsToDateCalc.java index 02ff035ceb..79d92369c0 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/periodstodate/PeriodsToDateCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/periodstodate/PeriodsToDateCalc.java @@ -40,7 +40,7 @@ public PeriodsToDateCalc(Type type, LevelCalc levelCalc, MemberCalc memberCalc, } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { LevelCalc levelCalc = getChildCalc(0, LevelCalc.class); MemberCalc memberCalc = getChildCalc(1, MemberCalc.class); evaluator.getTiming().markStart(TIMING_NAME); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/periodstodate/xtd/XtdWithMemberCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/periodstodate/xtd/XtdWithMemberCalc.java index bb520ec0db..817042f03b 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/periodstodate/xtd/XtdWithMemberCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/periodstodate/xtd/XtdWithMemberCalc.java @@ -35,7 +35,7 @@ public XtdWithMemberCalc(Type type, MemberCalc memberCalc, Level level) { } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { evaluator.getTiming().markStart(XtdWithMemberCalc.TIMING_NAME); try { MemberCalc memberCalc = getChildCalc(0, MemberCalc.class); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/periodstodate/xtd/XtdWithoutMemberCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/periodstodate/xtd/XtdWithoutMemberCalc.java index bad8caabee..bcbbd2212a 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/periodstodate/xtd/XtdWithoutMemberCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/periodstodate/xtd/XtdWithoutMemberCalc.java @@ -35,7 +35,7 @@ public XtdWithoutMemberCalc(Type type, Level level) { } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { evaluator.getTiming().markStart(XtdWithoutMemberCalc.TIMING_NAME); try { return new UnaryTupleList(FunUtil.periodsToDate(evaluator, level, null)); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/rank/RankedListCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/rank/RankedListCalc.java index 4c5d8215eb..cf45aa8296 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/rank/RankedListCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/rank/RankedListCalc.java @@ -40,7 +40,7 @@ public RankedListCalc( TupleListCalc tupleListCalc, boolean tuple ) { public Object evaluate( Evaluator evaluator ) { // Construct an array containing the value of the expression // for each member. - TupleList tupleList = tupleListCalc.evaluateList( evaluator ); + TupleList tupleList = tupleListCalc.evaluate( evaluator ); assert tupleList != null; if ( tuple ) { return new RankedTupleList( tupleList ); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/rank/SortedListCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/rank/SortedListCalc.java index a42c6e0c6b..0c89b461f4 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/rank/SortedListCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/rank/SortedListCalc.java @@ -76,7 +76,7 @@ public Object evaluate( Evaluator evaluator ) { // Construct an array containing the value of the expression // for each member. - list = tupleListCalc.evaluateList( evaluator ); + list = tupleListCalc.evaluate( evaluator ); assert list != null; if ( list.isEmpty() ) { return list.getArity() == 1 ? new MemberSortResult( new Object[0], Collections.emptyMap() ) diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/EmptyListCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/EmptyListCalc.java index 41c9fb60c0..519d645067 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/EmptyListCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/EmptyListCalc.java @@ -39,7 +39,7 @@ public class EmptyListCalc extends AbstractListCalc { } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { return list; } } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/ExprIterCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/ExprIterCalc.java index 7c35a11d8f..e6b99a89b2 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/ExprIterCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/ExprIterCalc.java @@ -60,9 +60,7 @@ public TupleIteratorCalc[] getChildCalcs() { } @Override - public TupleIterable evaluateIterable( - final Evaluator evaluator) - { + public TupleIterable evaluate(final Evaluator evaluator) { return new AbstractTupleIterable(getType().getArity()) { @Override public TupleCursor tupleCursor() { @@ -82,8 +80,8 @@ public boolean forward() { return false; } currentCursor = - calcIterator.next() - .evaluateIterable(evaluator) + ((TupleIterable) calcIterator.next() + .evaluate(evaluator)) .tupleCursor(); } } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetCalc.java index 779dd067b5..76922f736b 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetCalc.java @@ -31,7 +31,7 @@ protected SetCalc(Type type, final TupleCalc tupleCalc) { } @Override - public TupleIterable evaluateIterable(Evaluator evaluator) { + public TupleIterable evaluate(Evaluator evaluator) { TupleCalc tupleCalc = getChildCalc(0, TupleCalc.class); final Member[] members = tupleCalc.evaluate(evaluator); return new ListTupleList(tupleCalc.getType().getArity(), Arrays.asList(members)); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetFunDef.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetFunDef.java index 8686440342..107ae302f3 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetFunDef.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetFunDef.java @@ -109,7 +109,10 @@ public Calc compileCall(ResolvedFunCall call, ExpressionCompiler compiler) { // write 'Foo.Children on 1'. return args[0].accept(compiler); } - return new SetListCalc(call.getType(), args, compiler, ResultStyle.LIST_MUTABLELIST); + + + return new SetListCalc(call.getType(), args, compiler, ResultStyle.LIST_MUTABLELIST); + } static List> compileSelf(Expression[] args, ExpressionCompiler compiler, diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetIterableCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetIterableCalc.java index 1e1d1e5505..eb8b79d90b 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetIterableCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetIterableCalc.java @@ -23,7 +23,7 @@ public class SetIterableCalc extends AbstractIterCalc{ - private final TupleIteratorCalc tupleIteratorCalc; + private final TupleIteratorCalc tupleIteratorCalc; protected SetIterableCalc(Type type, Calc calc, final TupleIteratorCalc tupleIteratorCalc) { super(type, calc); @@ -32,8 +32,8 @@ protected SetIterableCalc(Type type, Calc calc, final TupleIteratorCalc tuple // name "Sublist..." @Override - public TupleIterable evaluateIterable(Evaluator evaluator) { - return tupleIteratorCalc.evaluateIterable(evaluator); + public TupleIterable evaluate(Evaluator evaluator) { + return tupleIteratorCalc.evaluate(evaluator); } } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetListCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetListCalc.java index 527d74a6d9..88a67b527b 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetListCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetListCalc.java @@ -93,7 +93,7 @@ private VoidCalc createCalc( @Override public Void evaluate(Evaluator evaluator) { TupleList list = - tupleListCalc.evaluateList(evaluator); + tupleListCalc.evaluate(evaluator); // Add only tuples which are not null. Tuples with // any null members are considered null. outer: @@ -118,7 +118,7 @@ public Void evaluate(Evaluator evaluator) { @Override public Void evaluate(Evaluator evaluator) { TupleList list = - tupleListCalc.evaluateList(evaluator); + tupleListCalc.evaluate(evaluator); result = list; return null; } @@ -159,7 +159,7 @@ public Void evaluate(Evaluator evaluator) { } @Override - public TupleList evaluateList(final Evaluator evaluator) { + public TupleList evaluate(final Evaluator evaluator) { result.clear(); for (VoidCalc voidCalc : voidCalcs) { voidCalc.evaluate(evaluator); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetMemberCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetMemberCalc.java index 9796184005..bb9e079898 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetMemberCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetMemberCalc.java @@ -33,7 +33,7 @@ public SetMemberCalc(Type type, MemberCalc memberCalc) { // name "Sublist..."// name "Sublist..." @Override - public TupleIterable evaluateIterable(Evaluator evaluator) { + public TupleIterable evaluate(Evaluator evaluator) { final Member member = getChildCalc(0, MemberCalc.class).evaluate(evaluator); return member == null ? TupleCollections.createList(1) : new UnaryTupleList(Collections.singletonList(member)); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetMutableCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetMutableCalc.java index 029a6f01cb..6fc68e5aa1 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetMutableCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/SetMutableCalc.java @@ -36,8 +36,8 @@ protected SetMutableCalc(Type type, Calc calc, final TupleListCalc tupleListC // name "Sublist..." @Override - public TupleIterable evaluateIterable(Evaluator evaluator) { - TupleList list = tupleListCalc.evaluateList(evaluator); + public TupleIterable evaluate(Evaluator evaluator) { + TupleList list = tupleListCalc.evaluate(evaluator); TupleList result = list.copyList(list.size()); // Add only tuples which are not null. Tuples with // any null members are considered null. diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/addcalculatedmembers/AddCalculatedMembersCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/addcalculatedmembers/AddCalculatedMembersCalc.java index 8cb724e95e..9f26014c96 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/addcalculatedmembers/AddCalculatedMembersCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/addcalculatedmembers/AddCalculatedMembersCalc.java @@ -38,8 +38,8 @@ protected AddCalculatedMembersCalc(Type type, final TupleListCalc tupleListCalc) } @Override - public TupleList evaluateList(Evaluator evaluator) { - final TupleList list = getChildCalc(0, TupleListCalc.class).evaluateList(evaluator); + public TupleList evaluate(Evaluator evaluator) { + final TupleList list = getChildCalc(0, TupleListCalc.class).evaluate(evaluator); return new UnaryTupleList(addCalculatedMembers(list.slice(0), evaluator)); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/ascendants/AscendantsCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/ascendants/AscendantsCalc.java index a2ccb58cac..b888465d15 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/ascendants/AscendantsCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/ascendants/AscendantsCalc.java @@ -34,7 +34,7 @@ protected AscendantsCalc(Type type, final MemberCalc memberCalc) { } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { Member member = getChildCalc(0, MemberCalc.class).evaluate(evaluator); return new UnaryTupleList(ascendants(evaluator.getCatalogReader(), member)); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/children/ChildrenCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/children/ChildrenCalc.java index 1dab21281a..a05b7e681d 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/children/ChildrenCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/children/ChildrenCalc.java @@ -31,7 +31,7 @@ protected ChildrenCalc(Type type, final MemberCalc memberCalc) { } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { // Return the list of children. The list is immutable, // hence 'false' above. Member member = getChildCalc(0, MemberCalc.class).evaluate(evaluator); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/distinct/DistinctCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/distinct/DistinctCalc.java index eff0e1406a..3c0d2d6956 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/distinct/DistinctCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/distinct/DistinctCalc.java @@ -35,8 +35,8 @@ public DistinctCalc(ResolvedFunCall call, TupleListCalc tupleListCalc) { } @Override - public TupleList evaluateList(Evaluator evaluator) { - TupleList list = tupleListCalc.evaluateList(evaluator); + public TupleList evaluate(Evaluator evaluator) { + TupleList list = tupleListCalc.evaluate(evaluator); Set> set = new HashSet<>(list.size()); TupleList result = list.copyList(list.size()); for (List element : list) { diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/existing/ExistingCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/existing/ExistingCalc.java index 312861100c..4de90dfaa1 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/existing/ExistingCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/existing/ExistingCalc.java @@ -44,8 +44,8 @@ public boolean dependsOn(Hierarchy hierarchy) { } @Override - public TupleList evaluateList(Evaluator evaluator) { - TupleIterable setTuples = getChildCalc(0, TupleIteratorCalc.class).evaluateIterable(evaluator); + public TupleList evaluate(Evaluator evaluator) { + TupleIterable setTuples = (TupleIterable) getChildCalc(0, TupleIteratorCalc.class).evaluate(evaluator); TupleList result = TupleCollections.createList(setTuples.getArity()); List contextMembers = Arrays.asList(evaluator.getMembers()); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/extract/ExtractCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/extract/ExtractCalc.java index 9755585507..2bf83627d7 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/extract/ExtractCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/extract/ExtractCalc.java @@ -38,9 +38,9 @@ protected ExtractCalc(Type type, final int outArity, final int[] extractedOrdina } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { TupleList result = TupleCollections.createList(outArity); - TupleList list = getChildCalc(0, TupleListCalc.class).evaluateList(evaluator); + TupleList list = getChildCalc(0, TupleListCalc.class).evaluate(evaluator); Set> emittedTuples = new HashSet<>(); for (List members : list.project(extractedOrdinals)) { if (emittedTuples.add(members)) { diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/BaseIterFilterCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/BaseIterFilterCalc.java index 8d0e886f5b..47cdc41021 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/BaseIterFilterCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/BaseIterFilterCalc.java @@ -34,7 +34,7 @@ protected BaseIterFilterCalc(ResolvedFunCall call, Calc[] calcs) { } @Override - public TupleIterable evaluateIterable(Evaluator evaluator) { + public TupleIterable evaluate(Evaluator evaluator) { evaluator.getTiming().markStart(FilterFunDef.TIMING_NAME); try { // Use a native evaluator, if more efficient. diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/BaseListFilterCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/BaseListFilterCalc.java index 4834b7dbcb..46350d5ea0 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/BaseListFilterCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/BaseListFilterCalc.java @@ -34,7 +34,7 @@ protected BaseListFilterCalc(ResolvedFunCall call, Calc[] calcs) { } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { // Use a native evaluator, if more efficient. // TODO: Figure this out at compile time. CatalogReader schemaReader = evaluator.getCatalogReader(); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/ImmutableIterFilterCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/ImmutableIterFilterCalc.java index bcbdde00e4..2e23e9959c 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/ImmutableIterFilterCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/ImmutableIterFilterCalc.java @@ -38,7 +38,7 @@ protected TupleIterable makeIterable(Evaluator evaluator) { Calc[] calcs = getChildCalcs(); TupleListCalc lcalc = (TupleListCalc) calcs[0]; BooleanCalc bcalc = (BooleanCalc) calcs[1]; - TupleList members = lcalc.evaluateList(evaluator); + TupleList members = lcalc.evaluate(evaluator); // Not mutable, must create new list TupleList result = members.copyList(members.size() / 2); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/ImmutableListFilterCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/ImmutableListFilterCalc.java index e5525fa92c..dede29ff8f 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/ImmutableListFilterCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/ImmutableListFilterCalc.java @@ -39,7 +39,7 @@ protected TupleList makeList(Evaluator evaluator) { Calc[] calcs = getChildCalcs(); TupleListCalc lcalc = (TupleListCalc) calcs[0]; BooleanCalc bcalc = (BooleanCalc) calcs[1]; - TupleList members0 = lcalc.evaluateList(evaluator); + TupleList members0 = lcalc.evaluate(evaluator); // Not mutable, must create new list; // for capacity planning, guess selectivity = .5 diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/IterIterFilterCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/IterIterFilterCalc.java index 7e7c95c6f2..7e7fccce43 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/IterIterFilterCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/IterIterFilterCalc.java @@ -41,13 +41,13 @@ public IterIterFilterCalc(ResolvedFunCall call, Calc[] calcs) { @Override protected TupleIterable makeIterable(Evaluator evaluator) { Calc[] calcs = getChildCalcs(); - TupleIteratorCalc icalc = (TupleIteratorCalc) calcs[0]; + TupleIteratorCalc icalc = (TupleIteratorCalc) calcs[0]; final BooleanCalc bcalc = (BooleanCalc) calcs[1]; // This does dynamics, just in time, // as needed filtering final TupleIterable iterable = - icalc.evaluateIterable(evaluator); + icalc.evaluate(evaluator); final Evaluator evaluator2 = evaluator.push(); evaluator2.setNonEmpty(false); return new AbstractTupleIterable(iterable.getArity()) { diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/MutableIterFilterCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/MutableIterFilterCalc.java index 3cd71e8918..630b8a9ac4 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/MutableIterFilterCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/MutableIterFilterCalc.java @@ -42,7 +42,7 @@ protected TupleIterable makeIterable(Evaluator evaluator) { TupleListCalc lcalc = (TupleListCalc) calcs[0]; BooleanCalc bcalc = (BooleanCalc) calcs[1]; - TupleList list = lcalc.evaluateList(evaluator); + TupleList list = lcalc.evaluate(evaluator); // make list mutable; guess selectivity .5 TupleList result = diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/MutableListFilterCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/MutableListFilterCalc.java index 8bbefac665..a560380fcd 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/MutableListFilterCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/filter/MutableListFilterCalc.java @@ -36,7 +36,7 @@ protected TupleList makeList(Evaluator evaluator) { Calc[] calcs = getChildCalcs(); TupleListCalc lcalc = (TupleListCalc) calcs[0]; BooleanCalc bcalc = (BooleanCalc) calcs[1]; - TupleList members0 = lcalc.evaluateList(evaluator); + TupleList members0 = lcalc.evaluate(evaluator); // make list mutable; // for capacity planning, guess selectivity = .5 diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/hierarchy/AllMembersCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/hierarchy/AllMembersCalc.java index e25b70c871..9fde92d9f4 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/hierarchy/AllMembersCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/hierarchy/AllMembersCalc.java @@ -29,7 +29,7 @@ protected AllMembersCalc(Type type, final HierarchyCalc hierarchyCalc) { } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { Hierarchy hierarchy = getChildCalc(0, HierarchyCalc.class).evaluate(evaluator); return FunUtil.hierarchyMembers(hierarchy, evaluator, true); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/level/AllMembersCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/level/AllMembersCalc.java index e1c38f5cec..e579d5bcf1 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/level/AllMembersCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/level/AllMembersCalc.java @@ -29,7 +29,7 @@ protected AllMembersCalc(Type type, final LevelCalc levelCalc) { } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { Level level = getChildCalc(0, LevelCalc.class).evaluate(evaluator); return FunUtil.levelMembers(level, evaluator, true); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/level/LevelMembersCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/level/LevelMembersCalc.java index eddede695e..b19a576565 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/level/LevelMembersCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/level/LevelMembersCalc.java @@ -29,7 +29,7 @@ protected LevelMembersCalc(Type type, final LevelCalc levelCalc) { } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { Level level = getChildCalc(0, LevelCalc.class).evaluate(evaluator); return FunUtil.levelMembers(level, evaluator, false); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/members/MembersCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/members/MembersCalc.java index 91d946d881..3375a9a4e2 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/members/MembersCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/members/MembersCalc.java @@ -29,7 +29,7 @@ protected MembersCalc(Type type, final HierarchyCalc hierarchyCalc) { } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { Hierarchy hierarchy = getChildCalc(0, HierarchyCalc.class).evaluate(evaluator); return FunUtil.hierarchyMembers(hierarchy, evaluator, false); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/range/RangeCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/range/RangeCalc.java index 09c6ea5f4d..752deb17de 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/range/RangeCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/range/RangeCalc.java @@ -31,7 +31,7 @@ protected RangeCalc(Type type, MemberCalc... calcs) { } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { final Member member0 = getChildCalc(0, MemberCalc.class).evaluate(evaluator); final Member member1 = getChildCalc(1, MemberCalc.class).evaluate(evaluator); if (member0.isNull() || member1.isNull()) { diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/setitem/SetItemCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/setitem/SetItemCalc.java index 47dd4640e1..4b05aa414d 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/setitem/SetItemCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/setitem/SetItemCalc.java @@ -43,7 +43,7 @@ public Member evaluate(Evaluator evaluator) { try { evaluator.setNonEmpty(false); list = - tupleListCalc.evaluateList(evaluator).slice(0); + tupleListCalc.evaluate(evaluator).slice(0); assert list != null; } finally { evaluator.restore(savepoint); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/setitem/SetItemStringCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/setitem/SetItemStringCalc.java index 87b9050673..6c8ea94bb2 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/setitem/SetItemStringCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/setitem/SetItemStringCalc.java @@ -43,7 +43,7 @@ public Member evaluate(Evaluator evaluator) { final List list; try { evaluator.setNonEmpty(false); - list = tupleListCalc.evaluateList(evaluator).slice(0); + list = tupleListCalc.evaluate(evaluator).slice(0); assert list != null; } finally { evaluator.restore(savepoint); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/setitem/SetItemStringTupleCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/setitem/SetItemStringTupleCalc.java index 4ac5f7d8e5..b05eb423d1 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/setitem/SetItemStringTupleCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/setitem/SetItemStringTupleCalc.java @@ -41,7 +41,7 @@ public Member[] evaluate(Evaluator evaluator) { final TupleList list; try { evaluator.setNonEmpty(false); - list = tupleListCalc.evaluateList(evaluator); + list = tupleListCalc.evaluate(evaluator); assert list != null; } finally { evaluator.restore(savepoint); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/setitem/SetItemTupleCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/setitem/SetItemTupleCalc.java index 79dba52751..340d156c4c 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/setitem/SetItemTupleCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/setitem/SetItemTupleCalc.java @@ -45,7 +45,7 @@ public Member[] evaluate(Evaluator evaluator) { try { evaluator.setNonEmpty(false); list = - tupleListCalc.evaluateList(evaluator); + tupleListCalc.evaluate(evaluator); } finally { evaluator.restore(savepoint); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/siblings/SiblingsCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/siblings/SiblingsCalc.java index ccfa131838..2927f2abde 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/siblings/SiblingsCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/siblings/SiblingsCalc.java @@ -33,7 +33,7 @@ protected SiblingsCalc(Type type, final MemberCalc memberCalc) { } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { final Member member = getChildCalc(0, MemberCalc.class).evaluate(evaluator); return new UnaryTupleList(memberSiblings(member, evaluator)); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/stripcalculatedmembers/StripCalculatedMembersCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/stripcalculatedmembers/StripCalculatedMembersCalc.java index 2f98db8932..51c61c555c 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/stripcalculatedmembers/StripCalculatedMembersCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/set/stripcalculatedmembers/StripCalculatedMembersCalc.java @@ -28,8 +28,8 @@ protected StripCalculatedMembersCalc(Type type, final TupleListCalc tupleListCal } @Override - public TupleList evaluateList(Evaluator evaluator) { - TupleList list = getChildCalc(0, TupleListCalc.class).evaluateList(evaluator); + public TupleList evaluate(Evaluator evaluator) { + TupleList list = getChildCalc(0, TupleListCalc.class).evaluate(evaluator); return FunUtil.removeCalculatedMembers(list); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/settostr/SetToStrCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/settostr/SetToStrCalc.java index 5c4bce1a64..c8dd28a359 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/settostr/SetToStrCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/settostr/SetToStrCalc.java @@ -33,7 +33,7 @@ protected SetToStrCalc(Type type, final TupleListCalc tupleListCalc) { @Override public String evaluate(Evaluator evaluator) { - final TupleList list = getChildCalc(0, TupleListCalc.class).evaluateList(evaluator); + final TupleList list = getChildCalc(0, TupleListCalc.class).evaluate(evaluator); if (list.getArity() == 1) { return memberSetToStr(list.slice(0)); } else { diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/strtoset/StrToSetHierarchyCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/strtoset/StrToSetHierarchyCalc.java index d723dc58cb..4de9270518 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/strtoset/StrToSetHierarchyCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/strtoset/StrToSetHierarchyCalc.java @@ -34,7 +34,7 @@ protected StrToSetHierarchyCalc(Type type, final StringCalc stringCalc, final Hi } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { String string = getChildCalc(0, StringCalc.class).evaluate(evaluator); if (string == null) { throw FunUtil.newEvalException(new EmptyExpressionWasSpecifiedException()); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/strtoset/StrToSetHierarchyListCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/strtoset/StrToSetHierarchyListCalc.java index 80703f1877..45d52e9259 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/strtoset/StrToSetHierarchyListCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/strtoset/StrToSetHierarchyListCalc.java @@ -35,7 +35,7 @@ protected StrToSetHierarchyListCalc(Type type, final StringCalc stringCalc, fina } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { String string = getChildCalc(0, StringCalc.class).evaluate(evaluator); if (string == null) { throw FunUtil.newEvalException(new EmptyExpressionWasSpecifiedException()); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/subset/SubsetCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/subset/SubsetCalc.java index bfd13e3659..8beff4e596 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/subset/SubsetCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/subset/SubsetCalc.java @@ -29,14 +29,14 @@ public SubsetCalc(Type type, TupleListCalc tupleListCalc, IntegerCalc startCalc, } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { TupleListCalc tupleListCalc = getChildCalc(0, TupleListCalc.class); IntegerCalc startCalc = getChildCalc(1, IntegerCalc.class); IntegerCalc countCalc = getChildCalc(2, IntegerCalc.class); final int savepoint = evaluator.savepoint(); try { evaluator.setNonEmpty(false); - final TupleList list = tupleListCalc.evaluateList(evaluator); + final TupleList list = tupleListCalc.evaluate(evaluator); final Integer start = startCalc.evaluate(evaluator); int end; if (countCalc != null) { diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/sum/SumIterCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/sum/SumIterCalc.java index c695833f28..4d8aa10d34 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/sum/SumIterCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/sum/SumIterCalc.java @@ -49,13 +49,13 @@ public boolean dependsOn(Hierarchy hierarchy) { return HirarchyDependsChecker.checkAnyDependsButFirst(getChildCalcs(), hierarchy); } - private TupleIterable evaluateCurrentIterable(TupleIteratorCalc tupleIteratorCalc, Evaluator evaluator) { + private TupleIterable evaluateCurrentIterable(TupleIteratorCalc tupleIteratorCalc, Evaluator evaluator) { final int savepoint = evaluator.savepoint(); int currLen = 0; TupleIterable iterable; try { evaluator.setNonEmpty(false); - iterable = tupleIteratorCalc.evaluateIterable(evaluator); + iterable = tupleIteratorCalc.evaluate(evaluator); } finally { evaluator.restore(savepoint); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/toggledrillstate/ToggleDrillStateCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/toggledrillstate/ToggleDrillStateCalc.java index 0b2d831709..3b362e0973 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/toggledrillstate/ToggleDrillStateCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/toggledrillstate/ToggleDrillStateCalc.java @@ -33,11 +33,11 @@ public ToggleDrillStateCalc(Type type, TupleListCalc listCalc0, TupleListCalc li } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { TupleListCalc listCalc0 = getChildCalc(0, TupleListCalc.class); TupleListCalc listCalc1 = getChildCalc(1, TupleListCalc.class); - final TupleList list0 = listCalc0.evaluateList(evaluator); - final TupleList list1 = listCalc1.evaluateList(evaluator); + final TupleList list0 = listCalc0.evaluate(evaluator); + final TupleList list1 = listCalc1.evaluate(evaluator); return toggleDrillStateTuples(evaluator, list0, list1); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/topbottomcount/TopBottomCountCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/topbottomcount/TopBottomCountCalc.java index e0d67d80e4..7ea2cab8f4 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/topbottomcount/TopBottomCountCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/topbottomcount/TopBottomCountCalc.java @@ -49,7 +49,7 @@ public TopBottomCountCalc(Type type, TupleListCalc tupleListCalc, IntegerCalc in } @Override - public TupleList evaluateList( Evaluator evaluator ) { + public TupleList evaluate( Evaluator evaluator ) { // Use a native evaluator, if more efficient. // TODO: Figure this out at compile time. TupleListCalc tupleListCalc = getChildCalc(0, TupleListCalc.class); @@ -70,7 +70,7 @@ public TupleList evaluateList( Evaluator evaluator ) { return TupleCollections.emptyList( arity ); } - TupleList list = tupleListCalc.evaluateList( evaluator ); + TupleList list = tupleListCalc.evaluate( evaluator ); assert list.getArity() == arity; if ( list.isEmpty() ) { return list; diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/topbottompercentsum/TopBottomPercentSumCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/topbottompercentsum/TopBottomPercentSumCalc.java index db67b7f62f..3f008e897f 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/topbottompercentsum/TopBottomPercentSumCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/topbottompercentsum/TopBottomPercentSumCalc.java @@ -43,11 +43,11 @@ public TopBottomPercentSumCalc(Type type, TupleListCalc tupleListCalc, DoubleCal } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { TupleListCalc tupleListCalc = getChildCalc(0, TupleListCalc.class); DoubleCalc doubleCalc = getChildCalc(1, DoubleCalc.class); Calc calc = getChildCalc(2, Calc.class); - TupleList list = tupleListCalc.evaluateList(evaluator); + TupleList list = tupleListCalc.evaluate(evaluator); Double target = doubleCalc.evaluate(evaluator); if (list.isEmpty()) { return list; diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/udf/in/InCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/udf/in/InCalc.java index 22791dfb47..dbd6ecf453 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/udf/in/InCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/udf/in/InCalc.java @@ -31,7 +31,7 @@ protected InCalc(Type type, MemberCalc memberCalc, TupleListCalc tupleListCalc) public Boolean evaluate(Evaluator evaluator) { final MemberCalc memberCalc = getChildCalc(0, MemberCalc.class); final TupleListCalc tupleListCalc = getChildCalc(1, TupleListCalc.class); - TupleList tupleList = tupleListCalc.evaluateList(evaluator); + TupleList tupleList = tupleListCalc.evaluate(evaluator); Member member = memberCalc.evaluate(evaluator); //List arg1 = (List) arguments[1].evaluate(evaluator); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/udf/lastnonempty/LastNonEmptyCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/udf/lastnonempty/LastNonEmptyCalc.java index ce3538c6a5..c930634ccf 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/udf/lastnonempty/LastNonEmptyCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/udf/lastnonempty/LastNonEmptyCalc.java @@ -38,7 +38,7 @@ protected LastNonEmptyCalc(Type type, TupleListCalc tupleListCalc, Calc membe public Member evaluate(Evaluator evaluator) { final TupleListCalc tupleListCalc = getChildCalc(0, TupleListCalc.class); final Calc memberCalc = getChildCalc(1, Calc.class); - TupleList tupleList = tupleListCalc.evaluateList(evaluator); + TupleList tupleList = tupleListCalc.evaluate(evaluator); final List memberList = tupleList.slice(0); int nullCount = 0; int missCount = 0; diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/union/UnionCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/union/UnionCalc.java index 7ffb883162..dc76b19892 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/union/UnionCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/union/UnionCalc.java @@ -37,11 +37,11 @@ public UnionCalc(Type type, TupleListCalc listCalc0, TupleListCalc listCalc1, fi } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { TupleListCalc listCalc0 = getChildCalc(0, TupleListCalc.class); TupleListCalc listCalc1 = getChildCalc(1, TupleListCalc.class); - TupleList list0 = listCalc0.evaluateList(evaluator); - TupleList list1 = listCalc1.evaluateList(evaluator); + TupleList list0 = listCalc0.evaluate(evaluator); + TupleList list1 = listCalc1.evaluate(evaluator); return union(list0, list1, all); } diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/visualtotals/VisualTotalsCalc.java b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/visualtotals/VisualTotalsCalc.java index 6e99301c23..b701dfb871 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/visualtotals/VisualTotalsCalc.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/function/def/visualtotals/VisualTotalsCalc.java @@ -46,9 +46,9 @@ public VisualTotalsCalc( } @Override - public TupleList evaluateList(Evaluator evaluator) { + public TupleList evaluate(Evaluator evaluator) { final List list = - tupleListCalc.evaluateList(evaluator).slice(0); + tupleListCalc.evaluate(evaluator).slice(0); final List resultList = new ArrayList<>(list); final int memberCount = list.size(); for (int i = memberCount - 1; i >= 0; --i) { diff --git a/mondrian/src/main/java/mondrian/olap/AbstractLiteralImpl.java b/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/AbstractLiteralImpl.java similarity index 95% rename from mondrian/src/main/java/mondrian/olap/AbstractLiteralImpl.java rename to mondrian/src/main/java/org/eclipse/daanse/olap/query/component/AbstractLiteralImpl.java index 32d237ebd5..9568f9d0d5 100644 --- a/mondrian/src/main/java/mondrian/olap/AbstractLiteralImpl.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/AbstractLiteralImpl.java @@ -11,7 +11,7 @@ * SmartCity Jena - initial * Stefan Bischof (bipolis.org) - initial */ -package mondrian.olap; +package org.eclipse.daanse.olap.query.component; import org.eclipse.daanse.olap.api.Validator; import org.eclipse.daanse.olap.api.query.component.Expression; diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/NamedSetExpressionImpl.java b/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/NamedSetExpressionImpl.java index ab35a5bd31..93e83957da 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/NamedSetExpressionImpl.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/NamedSetExpressionImpl.java @@ -110,7 +110,7 @@ public Calc accept(ExpressionCompiler compiler) { new Calc[]{/* todo: compile namedSet.getExp() */}) { @Override - public TupleIterable evaluateIterable( + public TupleIterable evaluate( Evaluator evaluator) { final Evaluator.NamedSetEvaluator eval = getEval(evaluator); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/NullLiteralImpl.java b/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/NullLiteralImpl.java index e35e75b7f0..08fc1e001f 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/NullLiteralImpl.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/NullLiteralImpl.java @@ -24,8 +24,6 @@ import org.eclipse.daanse.olap.api.type.Type; import org.eclipse.daanse.olap.calc.base.constant.ConstantStringCalc; -import mondrian.olap.AbstractLiteralImpl; - public class NullLiteralImpl extends AbstractLiteralImpl implements NullLiteral { public static final NullLiteralImpl nullValue = new NullLiteralImpl(); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/NumericLiteralImpl.java b/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/NumericLiteralImpl.java index 9b22a410df..b4c66e2c22 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/NumericLiteralImpl.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/NumericLiteralImpl.java @@ -26,8 +26,6 @@ import org.eclipse.daanse.olap.api.type.Type; import org.eclipse.daanse.olap.calc.base.constant.ConstantDoubleCalc; -import mondrian.olap.AbstractLiteralImpl; - public class NumericLiteralImpl extends AbstractLiteralImpl implements NumericLiteral { private static final NumericLiteralImpl negativeOne = new NumericLiteralImpl(BigDecimal.ONE.negate()); private static final NumericLiteralImpl one = new NumericLiteralImpl(BigDecimal.ONE); diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/StringLiteralImpl.java b/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/StringLiteralImpl.java index 4011f5066a..26b39738f1 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/StringLiteralImpl.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/StringLiteralImpl.java @@ -24,7 +24,6 @@ import org.eclipse.daanse.olap.api.type.Type; import org.eclipse.daanse.olap.calc.base.constant.ConstantStringCalc; -import mondrian.olap.AbstractLiteralImpl; import mondrian.olap.Util; public class StringLiteralImpl extends AbstractLiteralImpl implements StringLiteral { diff --git a/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/SymbolLiteralImpl.java b/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/SymbolLiteralImpl.java index 3f3ff8e3c8..8827be6c1a 100644 --- a/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/SymbolLiteralImpl.java +++ b/mondrian/src/main/java/org/eclipse/daanse/olap/query/component/SymbolLiteralImpl.java @@ -25,8 +25,6 @@ import org.eclipse.daanse.olap.api.type.Type; import org.eclipse.daanse.olap.calc.base.constant.ConstantStringCalc; -import mondrian.olap.AbstractLiteralImpl; - public class SymbolLiteralImpl extends AbstractLiteralImpl implements SymbolLiteral { private SymbolLiteralImpl(String o) { diff --git a/olap/api/src/main/java/org/eclipse/daanse/olap/api/CatalogCache.java b/olap/api/src/main/java/org/eclipse/daanse/olap/api/CatalogCache.java index 438d4d0b90..a14f13c5e7 100644 --- a/olap/api/src/main/java/org/eclipse/daanse/olap/api/CatalogCache.java +++ b/olap/api/src/main/java/org/eclipse/daanse/olap/api/CatalogCache.java @@ -10,7 +10,8 @@ * Contributors: * SmartCity Jena - initial * -*/package org.eclipse.daanse.olap.api; +*/ +package org.eclipse.daanse.olap.api; public interface CatalogCache { diff --git a/olap/api/src/main/java/org/eclipse/daanse/olap/api/calc/TupleListCalc.java b/olap/api/src/main/java/org/eclipse/daanse/olap/api/calc/TupleListCalc.java deleted file mode 100644 index 283abe1a10..0000000000 --- a/olap/api/src/main/java/org/eclipse/daanse/olap/api/calc/TupleListCalc.java +++ /dev/null @@ -1,23 +0,0 @@ -/* -* Copyright (c) 2023 Contributors to the Eclipse Foundation. -* -* This program and the accompanying materials are made -* available under the terms of the Eclipse Public License 2.0 -* which is available at https://www.eclipse.org/legal/epl-2.0/ -* -* SPDX-License-Identifier: EPL-2.0 -* -* Contributors: -* SmartCity Jena - initial -* Stefan Bischof (bipolis.org) - initial -*/ - -package org.eclipse.daanse.olap.api.calc; - -import org.eclipse.daanse.olap.api.calc.todo.TupleList; - - -public interface TupleListCalc extends Calc { - - -} diff --git a/olap/api/src/main/java/org/eclipse/daanse/olap/api/calc/todo/TupleIteratorCalc.java b/olap/api/src/main/java/org/eclipse/daanse/olap/api/calc/todo/TupleIteratorCalc.java index e1cddc1d3b..7e7f88fab6 100644 --- a/olap/api/src/main/java/org/eclipse/daanse/olap/api/calc/todo/TupleIteratorCalc.java +++ b/olap/api/src/main/java/org/eclipse/daanse/olap/api/calc/todo/TupleIteratorCalc.java @@ -1,50 +1,21 @@ /* - * This software is subject to the terms of the Eclipse Public License v1.0 - * Agreement, available at the following URL: - * http://www.eclipse.org/legal/epl-v10.html. - * You must accept the terms of that agreement to use this software. - * - * Copyright (c) 2002-2017 Hitachi Vantara.. All rights reserved. - * - * For more information please visit the Project: Hitachi Vantara - Mondrian - * - * ---- All changes after Fork in 2023 ------------------------ - * - * Project: Eclipse daanse - * - * Copyright (c) 2023 Contributors to the Eclipse Foundation. - * - * This program and the accompanying materials are made - * available under the terms of the Eclipse Public License 2.0 - * which is available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors after Fork in 2023: - * SmartCity Jena - initial - * Stefan Bischof (bipolis.org) - initial - */ - +* Copyright (c) 2025 Contributors to the Eclipse Foundation. +* +* This program and the accompanying materials are made +* available under the terms of the Eclipse Public License 2.0 +* which is available at https://www.eclipse.org/legal/epl-2.0/ +* +* SPDX-License-Identifier: EPL-2.0 +* +* Contributors: +* SmartCity Jena - initial +* +*/ package org.eclipse.daanse.olap.api.calc.todo; -import org.eclipse.daanse.olap.api.Evaluator; import org.eclipse.daanse.olap.api.calc.Calc; -/** - * Expression that evaluates a set of tuples to a {@link TupleIterable}. - * - * @author Richard Emberson - * @since Jan 11, 2007 - */ -public interface TupleIteratorCalc extends Calc { - /** - * Evaluates an expression to yield an Iterable of members or tuples. - * - *

The Iterable is immutable. - * - * @param evaluator Evaluation context - * @return An Iterable of members or tuples, never null. - */ - TupleIterable evaluateIterable(Evaluator evaluator); +public interface TupleIteratorCalc extends Calc { + } diff --git a/olap/api/src/main/java/org/eclipse/daanse/olap/api/calc/todo/TupleListCalc.java b/olap/api/src/main/java/org/eclipse/daanse/olap/api/calc/todo/TupleListCalc.java index b8dda21c1a..684b7cfa6e 100644 --- a/olap/api/src/main/java/org/eclipse/daanse/olap/api/calc/todo/TupleListCalc.java +++ b/olap/api/src/main/java/org/eclipse/daanse/olap/api/calc/todo/TupleListCalc.java @@ -1,52 +1,21 @@ /* - * This software is subject to the terms of the Eclipse Public License v1.0 - * Agreement, available at the following URL: - * http://www.eclipse.org/legal/epl-v10.html. - * You must accept the terms of that agreement to use this software. - * - * Copyright (c) 2002-2017 Hitachi Vantara.. All rights reserved. - * - * For more information please visit the Project: Hitachi Vantara - Mondrian - * - * ---- All changes after Fork in 2023 ------------------------ - * - * Project: Eclipse daanse - * - * Copyright (c) 2023 Contributors to the Eclipse Foundation. - * - * This program and the accompanying materials are made - * available under the terms of the Eclipse Public License 2.0 - * which is available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors after Fork in 2023: - * SmartCity Jena - initial - * Stefan Bischof (bipolis.org) - initial - */ - +* Copyright (c) 2025 Contributors to the Eclipse Foundation. +* +* This program and the accompanying materials are made +* available under the terms of the Eclipse Public License 2.0 +* which is available at https://www.eclipse.org/legal/epl-2.0/ +* +* SPDX-License-Identifier: EPL-2.0 +* +* Contributors: +* SmartCity Jena - initial +* +*/ package org.eclipse.daanse.olap.api.calc.todo; -import org.eclipse.daanse.olap.api.Evaluator; -import org.eclipse.daanse.olap.api.calc.ResultStyle; +import org.eclipse.daanse.olap.api.calc.Calc; + +public interface TupleListCalc extends TupleIteratorCalc, Calc { -/** - * Expression which evaluates a set of members or tuples to a list. - * - * @author jhyde - * @since Sep 27, 2005 - */ -public interface TupleListCalc extends TupleIteratorCalc { - /** - * Evaluates an expression to yield a list of tuples. - * - *

The list is immutable if {@link #getResultStyle()} yields - * {@link ResultStyle#MUTABLE_LIST}. Otherwise, - * the caller must not modify the list. - * - * @param evaluator Evaluation context - * @return A list of tuples, never null. - */ - TupleList evaluateList(Evaluator evaluator); } diff --git a/olap/xmla/bridge/test.bndrun b/olap/xmla/bridge/test.bndrun index ec10d8b97b..6bcf13e550 100644 --- a/olap/xmla/bridge/test.bndrun +++ b/olap/xmla/bridge/test.bndrun @@ -47,7 +47,6 @@ org.eclipse.daanse.jdbc.db.dialect.api;version='[0.0.1,0.0.2)',\ org.eclipse.daanse.jdbc.db.dialect.db.common;version='[0.0.1,0.0.2)',\ org.eclipse.daanse.jdbc.db.dialect.db.ingres;version='[0.0.1,0.0.2)',\ - org.eclipse.daanse.jdbc.db.dialect.db.vectorwise;version='[0.0.1,0.0.2)',\ org.eclipse.daanse.mdx.model.api;version='[0.0.1,0.0.2)',\ org.eclipse.daanse.mdx.parser.api;version='[0.0.1,0.0.2)',\ org.eclipse.daanse.olap.action.api;version='[0.0.1,0.0.2)',\