Exemplo n.º 1
0
        private BoundRelation BindDerivedTableReference(DerivedTableReferenceSyntax node)
        {
            // TODO: Ensure query has no ORDER BY unless TOP is also specified

            var query = BindQuery(node.Query);

            var namedQueryColumns   = query.OutputColumns.Where(c => !string.IsNullOrEmpty(c.Name));
            var columns             = new List <ColumnSymbol>();
            var valueSlotFromColumn = new Dictionary <ColumnSymbol, ValueSlot>();

            foreach (var queryColumn in namedQueryColumns)
            {
                var columnSymbol = new ColumnSymbol(queryColumn.Name, queryColumn.Type);
                columns.Add(columnSymbol);
                valueSlotFromColumn.Add(columnSymbol, queryColumn.ValueSlot);
            }

            var derivedTable         = new DerivedTableSymbol(columns);
            var valueSlotFactory     = new Func <TableInstanceSymbol, ColumnSymbol, ValueSlot>((ti, c) => valueSlotFromColumn[c]);
            var derivedTableInstance = new TableInstanceSymbol(node.Name.ValueText, derivedTable, valueSlotFactory);
            var boundTableReference  = new BoundDerivedTableRelation(derivedTableInstance, query.Relation);

            QueryState.IntroducedTables.Add(derivedTableInstance, node.Name);

            return(boundTableReference);
        }
Exemplo n.º 2
0
        public TableInstanceSymbol GetDeclaredSymbol(DerivedTableReferenceSyntax tableReference)
        {
            if (tableReference == null)
            {
                throw new ArgumentNullException(nameof(tableReference));
            }

            var result = _bindingResult.GetBoundNode(tableReference) as BoundDerivedTableRelation;

            return(result?.TableInstance);
        }
        private void ClassifyDerivedTableReference(DerivedTableReferenceSyntax node)
        {
            ClassifyNode(node.Query);

            var tableInstanceSymbol = _semanticModel.GetDeclaredSymbol(node);

            if (tableInstanceSymbol != null)
            {
                AddClassification(node.Name, tableInstanceSymbol);
            }
        }
Exemplo n.º 4
0
 public AddAsToDerivedTableCodeAction(DerivedTableReferenceSyntax node)
     : base(node.SyntaxTree)
 {
     _node = node;
 }
Exemplo n.º 5
0
 public virtual void VisitDerivedTableReference(DerivedTableReferenceSyntax node)
 {
     DefaultVisit(node);
 }
Exemplo n.º 6
0
 public virtual TResult VisitDerivedTableReference(DerivedTableReferenceSyntax node)
 {
     return(DefaultVisit(node));
 }