public ExpCompiler createCompiler() { // REVIEW: Set query on a connection's shared internal statement is // not re-entrant. statement.setQuery(this); Evaluator evaluator = RolapEvaluator.create(statement); Validator validator = createValidator(); return createCompiler( evaluator, validator, Collections.singletonList(resultStyle)); }
resultStyle != null ? resultStyle : this.resultStyle); final ExpCompiler compiler = createCompiler( evaluator, validator, resultStyleList); if (scalar) {
/** * Performs type-checking and validates internal consistency of a query, * using the default resolver. * * <p>This method is called automatically when a query is created; you need * to call this method manually if you have modified the query's expression * tree in any way. */ public void resolve() { // Before commencing validation, create all calculated members // and calculated sets createFormulaElements(); Map<QueryPart, QueryPart> resolvedIdentifiers = new IdBatchResolver(this).resolve(); final Validator validator = createValidator(resolvedIdentifiers); resolve(validator); // resolve self and children // Create a dummy result so we can use its evaluator final Evaluator evaluator = RolapUtil.createEvaluator(statement); ExpCompiler compiler = createCompiler( evaluator, validator, Collections.singletonList(resultStyle)); compile(compiler); }
private CrossJoinArg[] expandNonNative( RolapEvaluator evaluator, Exp exp) { ExpCompiler compiler = evaluator.getQuery().createCompiler(); CrossJoinArg[] arg0 = null; if (shouldExpandNonEmpty(exp) && evaluator.getActiveNativeExpansions().add(exp)) { ListCalc listCalc0 = compiler.compileList(exp); final TupleList tupleList = listCalc0.evaluateList(evaluator); // Prevent the case when the second argument size is too large Util.checkCJResultLimit(tupleList.size()); if (tupleList.getArity() == 1) { List<RolapMember> list0 = Util.cast(tupleList.slice(0)); CrossJoinArg arg = MemberListCrossJoinArg.create( evaluator, list0, restrictMemberTypes(), false); if (arg != null) { arg0 = new CrossJoinArg[]{arg}; } } evaluator.getActiveNativeExpansions().remove(exp); } return arg0; }