src/LogicalPlanner/LogicalPlan.cs
/// <summary>
/// Top down propagation of the data types of each fields in each operators' output schema
/// </summary>
Top down propagation of the data types of each fields in each operators' output schema
Top down propagation of the data types of each fields in each operators ' output schema
private void PropagateDataTypes()
        {
            var allOperators = StartingOperators
                .SelectMany(op => op.GetAllDownstreamOperatorsOfType<LogicalOperator>())
                .Distinct()
                .GroupBy(op => op.Depth)
                .OrderBy(g => g.Key);  
            Debug.Assert(allOperators.First().All(op => op is StartLogicalOperator));
            foreach (var opGrp in allOperators.Skip(1))
            {
                opGrp.ToList().ForEach(op => op.PropagateDateTypesForSchema());
            }
        }
private void PropagateDataTypes ( ) { var allOperators = StartingOperators . SelectMany ( op => op . GetAllDownstreamOperatorsOfType < LogicalOperator > ( ) ) . Distinct ( ) . GroupBy ( op => op . Depth ) . OrderBy ( g => g . Key ) ; Debug . Assert ( allOperators . First ( ) . All ( op => op is StartLogicalOperator ) ) ; foreach ( var opGrp in allOperators . Skip ( 1 ) ) { opGrp . ToList ( ) . ForEach ( op => op . PropagateDateTypesForSchema ( ) ) ; } }
Top down propagation of the data types of each fields in each operators' output schema
Top down propagation of the data types of each fields in each operators ' output schema
// top-down direction for type propagation // Note: first level are start operators and have schema populated during binding