@Override public Object getType(ILogicalExpression expr) throws AlgebricksException { return expressionTypeComputer.getType(expr, metadataProvider, this); }
public Object getType(ILogicalExpression expr, IVariableTypeEnvironment env) throws AlgebricksException { return expressionTypeComputer.getType(expr, typingContext.getMetadataProvider(), env); }
public static IAType constantRuntimeResultType(ILogicalExpression expr, IOptimizationContext context, IVariableTypeEnvironment typeEnvironment) throws AlgebricksException { Set<LogicalVariable> usedVariables = new HashSet<>(); expr.getUsedVariables(usedVariables); if (usedVariables.size() > 0) { return null; } return (IAType) context.getExpressionTypeComputer().getType(expr, context.getMetadataProvider(), typeEnvironment); }
@Override public Object getType(ILogicalExpression expr) throws AlgebricksException { return ctx.getExpressionTypeComputer().getType(expr, ctx.getMetadataProvider(), this); }
@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; }
private boolean hasClosedType(ILogicalExpression expr) throws AlgebricksException { IAType t = (IAType) context.getExpressionTypeComputer().getType(expr, context.getMetadataProvider(), env); return TypeHelper.isClosed(t); } }
@Override public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException { PropagatingTypeEnvironment 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)); if (expressions.get(i).getValue().getExpressionTag() == LogicalExpressionTag.VARIABLE) { LogicalVariable var = ((VariableReferenceExpression) expressions.get(i).getValue()).getVariableReference(); for (List<LogicalVariable> list : env.getCorrelatedMissableVariableLists()) { if (list.contains(var)) { list.add(variables.get(i)); } } } } 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; }