Esempio n. 1
0
        protected override BoundRelation RewriteTableRelation(BoundTableRelation node)
        {
            var definedValues = RemoveUnusedSlots(node.DefinedValues, d => d.ValueSlot);

            node = node.Update(node.TableInstance, definedValues);

            return(base.RewriteTableRelation(node));
        }
Esempio n. 2
0
            protected override BoundRelation RewriteTableRelation(BoundTableRelation node)
            {
                if (!node.DefinedValues.Any())
                {
                    return(node);
                }

                var factory          = node.DefinedValues.First().ValueSlot.Factory;
                var original         = node.TableInstance;
                var valueSlotMapping = original.ColumnInstances.ToDictionary(c => c.Column, c => _valueSlotMapping[c.ValueSlot]);
                var instanceName     = factory.CreateNamed(original.Name, typeof(int)).Name;
                var instance         = new TableInstanceSymbol(instanceName, original.Table, (t, c) => valueSlotMapping[c]);
                var columnMapping    = instance.ColumnInstances.ToDictionary(c => c.Column);
                var definedValues    = node.DefinedValues.Select(d => columnMapping[d.Column]).ToImmutableArray();

                return(node.Update(instance, definedValues));
            }