Beispiel #1
0
 internal static ColumnMap Translate(
     ColumnMap columnMapToTranslate,
     Dictionary <Var, ColumnMap> varToColumnMap)
 {
     return(ColumnMapTranslator.Translate(columnMapToTranslate, (ColumnMapTranslatorTranslationDelegate)(columnMap =>
     {
         VarRefColumnMap varRefColumnMap = columnMap as VarRefColumnMap;
         if (varRefColumnMap != null)
         {
             if (varToColumnMap.TryGetValue(varRefColumnMap.Var, out columnMap))
             {
                 if (!columnMap.IsNamed && varRefColumnMap.IsNamed)
                 {
                     columnMap.Name = varRefColumnMap.Name;
                 }
                 if (Helper.IsEnumType(varRefColumnMap.Type.EdmType) && varRefColumnMap.Type.EdmType != columnMap.Type.EdmType)
                 {
                     columnMap.Type = varRefColumnMap.Type;
                 }
             }
             else
             {
                 columnMap = (ColumnMap)varRefColumnMap;
             }
         }
         return columnMap;
     })));
 }
Beispiel #2
0
        public override void Visit(PhysicalProjectOp op, System.Data.Entity.Core.Query.InternalTrees.Node n)
        {
            this.VisitPhysicalOpDefault((PhysicalOp)op, n);
            this.Map(op.Outputs);
            SimpleCollectionColumnMap columnMap = (SimpleCollectionColumnMap)ColumnMapTranslator.Translate((ColumnMap)op.ColumnMap, this.m_varMap);

            n.Op = (Op)this.m_command.CreatePhysicalProjectOp(op.Outputs, columnMap);
        }
Beispiel #3
0
        private ColumnMap BuildResultColumnMap(PhysicalProjectOp projectOp)
        {
            // convert the column map into a real column map
            // build up a dictionary mapping Vars to their real positions in the commands
            var varMap        = BuildVarMap();
            var realColumnMap = ColumnMapTranslator.Translate(projectOp.ColumnMap, varMap);

            return(realColumnMap);
        }
Beispiel #4
0
        public override void Visit(PhysicalProjectOp op, Node n)
        {
            VisitPhysicalOpDefault(op, n);
            Map(op.Outputs);

            var newColumnMap = (SimpleCollectionColumnMap)ColumnMapTranslator.Translate(op.ColumnMap, m_varMap);

            n.Op = m_command.CreatePhysicalProjectOp(op.Outputs, newColumnMap);
        }
Beispiel #5
0
 internal static ColumnMap Translate(
     ColumnMap columnMapToTranslate,
     Dictionary <Var, Var> varToVarMap)
 {
     return(ColumnMapTranslator.Translate(columnMapToTranslate, (ColumnMapTranslatorTranslationDelegate)(columnMap =>
     {
         VarRefColumnMap varRefColumnMap = columnMap as VarRefColumnMap;
         if (varRefColumnMap != null)
         {
             Var replacementVar = ColumnMapTranslator.GetReplacementVar(varRefColumnMap.Var, varToVarMap);
             if (varRefColumnMap.Var != replacementVar)
             {
                 columnMap = (ColumnMap) new VarRefColumnMap(varRefColumnMap.Type, varRefColumnMap.Name, replacementVar);
             }
         }
         return columnMap;
     })));
 }
Beispiel #6
0
 internal static ColumnMap Translate(
     ColumnMap columnMapToTranslate,
     Dictionary <Var, KeyValuePair <int, int> > varToCommandColumnMap)
 {
     return(ColumnMapTranslator.Translate(columnMapToTranslate, (ColumnMapTranslatorTranslationDelegate)(columnMap =>
     {
         VarRefColumnMap varRefColumnMap = columnMap as VarRefColumnMap;
         if (varRefColumnMap != null)
         {
             KeyValuePair <int, int> keyValuePair;
             if (!varToCommandColumnMap.TryGetValue(varRefColumnMap.Var, out keyValuePair))
             {
                 throw EntityUtil.InternalError(EntityUtil.InternalErrorCode.UnknownVar, 1, (object)varRefColumnMap.Var.Id);
             }
             columnMap = (ColumnMap) new ScalarColumnMap(varRefColumnMap.Type, varRefColumnMap.Name, keyValuePair.Key, keyValuePair.Value);
         }
         if (!columnMap.IsNamed)
         {
             columnMap.Name = "Value";
         }
         return columnMap;
     })));
 }
        public void Translate_preserves_column_type()
        {
            var intTypeUsage =
                TypeUsage.CreateDefaultTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.Int32));
            var enumTypeUsage =
                TypeUsage.CreateDefaultTypeUsage(
                    new EnumType("ns", "DayOfWeek", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.Int32), false, DataSpace.CSpace));

            var originalVar       = new ComputedVar(42, intTypeUsage);
            var originalColumnMap = new VarRefColumnMap(enumTypeUsage, "dayOfWeek", originalVar);

            var replacementVar       = new ComputedVar(911, intTypeUsage);
            var replacementColumnMap = new VarRefColumnMap(intTypeUsage, null, replacementVar);

            var varToColumnMap = new Dictionary <Var, ColumnMap> {
                { originalVar, replacementColumnMap }
            };

            var resultColumnMap = ColumnMapTranslator.Translate(originalColumnMap, varToColumnMap);

            Assert.Same(replacementColumnMap, resultColumnMap);
            Assert.Equal(originalColumnMap.Name, resultColumnMap.Name);
            Assert.Equal(originalColumnMap.Type.EdmType, resultColumnMap.Type.EdmType);
        }
Beispiel #8
0
        private ColumnMap BuildResultColumnMap(PhysicalProjectOp projectOp)
        {
            Dictionary <Var, KeyValuePair <int, int> > varToCommandColumnMap = this.BuildVarMap();

            return(ColumnMapTranslator.Translate((ColumnMap)projectOp.ColumnMap, varToCommandColumnMap));
        }