private static void computeSchemaBottomUpForOp(AbstractLogicalOperator op) throws AlgebricksException { for (Mutable<ILogicalOperator> i : op.getInputs()) { computeSchemaBottomUpForOp((AbstractLogicalOperator) i.getValue()); } if (op.hasNestedPlans()) { AbstractOperatorWithNestedPlans a = (AbstractOperatorWithNestedPlans) op; for (ILogicalPlan p : a.getNestedPlans()) { computeSchemaBottomUpForPlan(p); } } op.recomputeSchema(); }
private void setNewOp(Mutable<ILogicalOperator> opRef, AbstractLogicalOperator newOp, IOptimizationContext context) throws AlgebricksException { ILogicalOperator oldOp = opRef.getValue(); opRef.setValue(newOp); newOp.getInputs().add(new MutableObject<>(oldOp)); newOp.recomputeSchema(); newOp.computeDeliveredPhysicalProperties(context); context.computeAndSetTypeEnvironmentForOperator(newOp); if (AlgebricksConfig.ALGEBRICKS_LOGGER.isTraceEnabled()) { AlgebricksConfig.ALGEBRICKS_LOGGER.trace(">>>> Structural properties for " + newOp.getPhysicalOperator() + ": " + newOp.getDeliveredPhysicalProperties() + "\n"); } PhysicalOptimizationsUtil.computeFDsAndEquivalenceClasses(newOp, context); }
parentOp.recomputeSchema(); ctx.computeAndSetTypeEnvironmentForOperator(parentOp);
public static void computeSchemaRecIfNull(AbstractLogicalOperator op) throws AlgebricksException { if (op.getSchema() == null) { for (Mutable<ILogicalOperator> i : op.getInputs()) { computeSchemaRecIfNull((AbstractLogicalOperator) i.getValue()); } if (op.hasNestedPlans()) { AbstractOperatorWithNestedPlans a = (AbstractOperatorWithNestedPlans) op; for (ILogicalPlan p : a.getNestedPlans()) { for (Mutable<ILogicalOperator> r : p.getRoots()) { computeSchemaRecIfNull((AbstractLogicalOperator) r.getValue()); } } } op.recomputeSchema(); } }
public static void computeSchemaAndPropertiesRecIfNull(AbstractLogicalOperator op, IOptimizationContext context) throws AlgebricksException { if (op.getSchema() == null) { for (Mutable<ILogicalOperator> i : op.getInputs()) { computeSchemaAndPropertiesRecIfNull((AbstractLogicalOperator) i.getValue(), context); } if (op.hasNestedPlans()) { AbstractOperatorWithNestedPlans a = (AbstractOperatorWithNestedPlans) op; for (ILogicalPlan p : a.getNestedPlans()) { for (Mutable<ILogicalOperator> r : p.getRoots()) { computeSchemaAndPropertiesRecIfNull((AbstractLogicalOperator) r.getValue(), context); } } } op.recomputeSchema(); op.computeDeliveredPhysicalProperties(context); } }