@Override public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException { IVariableTypeEnvironment env = createPropagatingAllInputsTypeEnvironment(ctx); // If the secondary index is not length-partitioned, create one new // output variable - token. // If the secondary index is length-partitioned, create two new output // variables - token, number of token. // The type of this variable will be the same as the type of the // secondary key. If the secondary is list type, then the element type // of the list. // Along with PK, the tokenizer will generate [token, number of tokens, // PK] pairs. for (int i = 0; i < tokenizeVars.size(); i++) { env.setVarType(tokenizeVars.get(i), tokenizeVarTypes.get(i)); } return env; }
@Override public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException { IVariableTypeEnvironment env = createPropagatingAllInputsTypeEnvironment(ctx); Object t = env.getType(expression.getValue()); env.setVarType(variables.get(0), t); if (positionalVariable != null) { env.setVarType(positionalVariable, positionalVariableType); } return env; }
@Override public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException { IVariableTypeEnvironment env = createPropagatingAllInputsTypeEnvironment(ctx); Object[] types = dataSource.getSchemaTypes(); int i = 0; for (LogicalVariable v : variables) { env.setVarType(v, types[i]); ++i; } return env; }
@Override public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException { IVariableTypeEnvironment env; if (propagateInput) { env = createPropagatingAllInputsTypeEnvironment(ctx); } else { env = new NonPropagatingTypeEnvironment(ctx.getExpressionTypeComputer(), ctx.getMetadataProvider()); } int n = variables.size(); for (int i = 0; i < n; i++) { env.setVarType(variables.get(i), variableTypes.get(i)); } return env; }
@Override public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException { IVariableTypeEnvironment typeEnv = ctx.getOutputTypeEnvironment(inputs.get(0).getValue()); for (int i = 1; i < inputs.size(); i++) { checkTypeConsistency(typeEnv, compareVars.get(0), ctx.getOutputTypeEnvironment(inputs.get(i).getValue()), compareVars.get(i)); } IVariableTypeEnvironment env = new NonPropagatingTypeEnvironment(ctx.getExpressionTypeComputer(), ctx.getMetadataProvider()); int i = 0; for (; i < compareVars.get(0).size(); i++) { env.setVarType(outputVars.get(i), typeEnv.getVarType(compareVars.get(0).get(i))); } if (extraVars != null) { for (int k = 0; k < extraVars.get(0).size(); k++) { env.setVarType(outputVars.get(i + k), typeEnv.getVarType(extraVars.get(0).get(k))); } } return typeEnv; }
@Override public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException { IVariableTypeEnvironment env = createNestedPlansPropagatingTypeEnvironment(ctx, true); for (int i = 0, n = variables.size(); i < n; i++) { env.setVarType(variables.get(i), ctx.getExpressionTypeComputer().getType(expressions.get(i).getValue(), ctx.getMetadataProvider(), env)); } return env; }
@Override public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException { IVariableTypeEnvironment env = createPropagatingAllInputsTypeEnvironment(ctx); int n = variables.size(); for (int i = 0; i < n; i++) { env.setVarType(variables.get(i), ctx.getExpressionTypeComputer().getType(expressions.get(i).getValue(), ctx.getMetadataProvider(), env)); } return env; }
@Override public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException { IVariableTypeEnvironment env = new NonPropagatingTypeEnvironment(ctx.getExpressionTypeComputer(), ctx.getMetadataProvider()); IVariableTypeEnvironment env2 = ctx.getOutputTypeEnvironment(inputs.get(0).getValue()); int n = variables.size(); for (int i = 0; i < n; i++) { Object t = ctx.getExpressionTypeComputer().getType(expressions.get(i).getValue(), ctx.getMetadataProvider(), env2); env.setVarType(variables.get(i), t); } return env; }
@Override public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException { IVariableTypeEnvironment env = new NonPropagatingTypeEnvironment(ctx.getExpressionTypeComputer(), ctx.getMetadataProvider()); for (Pair<LogicalVariable, Object> p : scriptDesc.getVarTypePairs()) { env.setVarType(p.first, p.second); } return env; }
@Override public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException { IVariableTypeEnvironment env = new NonPropagatingTypeEnvironment(ctx.getExpressionTypeComputer(), ctx.getMetadataProvider()); IVariableTypeEnvironment envLeft = ctx.getOutputTypeEnvironment(inputs.get(0).getValue()); IVariableTypeEnvironment envRight = ctx.getOutputTypeEnvironment(inputs.get(1).getValue()); if (envLeft == null) { throw new AlgebricksException("Left input types for union operator are not computed."); } for (Triple<LogicalVariable, LogicalVariable, LogicalVariable> t : varMap) { Object typeFromLeft = getType(envLeft, t.first); Object typeFromRight = getType(envRight, t.second); if (typeFromLeft.equals(typeFromRight)) { env.setVarType(t.third, typeFromLeft); } else { env.setVarType(t.third, ctx.getConflictingTypeResolver().resolve(typeFromLeft, typeFromRight)); } } return env; }
ILogicalExpression expr = p.second.getValue(); if (p.first != null) { env.setVarType(p.first, env2.getType(expr)); if (expr.getExpressionTag() == LogicalExpressionTag.VARIABLE) { LogicalVariable v1 = ((VariableReferenceExpression) expr).getVariableReference(); env.setVarType(v1, env2.getVarType(v1)); env.setVarType(v2, env2.getVarType(v2)); ILogicalExpression expr = p.second.getValue(); if (p.first != null) { env.setVarType(p.first, env2.getType(expr)); } else { VariableReferenceExpression vre = (VariableReferenceExpression) p.second.getValue(); LogicalVariable v2 = vre.getVariableReference(); env.setVarType(v2, env2.getVarType(v2));
aggOpInputEnv.setVarType(var, outputEnv.getVarType(var)); aggOpInputEnv.setVarType(usedVars.get(i++), type);
aggOpInputEnv.setVarType(var, outputEnv.getVarType(var)); aggOpInputEnv.setVarType(usedVars.get(i++), type);