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; }))); }
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); }
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); }
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); }
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; }))); }
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); }
private ColumnMap BuildResultColumnMap(PhysicalProjectOp projectOp) { Dictionary <Var, KeyValuePair <int, int> > varToCommandColumnMap = this.BuildVarMap(); return(ColumnMapTranslator.Translate((ColumnMap)projectOp.ColumnMap, varToCommandColumnMap)); }