Beispiel #1
0
        public static QsiTableNode VisitNamedTableNode(NamedTableNode node)
        {
            var identifier = IdentifierVisitor.Visit(node.Name);

            QsiTableReferenceNode tableNode;

            if (node.DynamicColumns.Any())
            {
                tableNode = TreeHelper.Create <PDynamicTableReferenceNode>(n =>
                {
                    n.Identifier     = identifier;
                    n.DynamicColumns = new QsiColumnsDeclarationNode();
                    n.DynamicColumns.Columns.AddRange(node.DynamicColumns.Select(VisitDynamicColumn));
                });
            }
            else
            {
                tableNode = new QsiTableReferenceNode
                {
                    Identifier = identifier
                };
            }

            if (string.IsNullOrEmpty(node.Alias))
            {
                PTree.RawNode[tableNode] = node;
                return(tableNode);
            }

            return(TreeHelper.Create <QsiDerivedTableNode>(n =>
            {
                n.Columns.SetValue(TreeHelper.CreateAllColumnsDeclaration());
                n.Source.SetValue(tableNode);

                n.Alias.SetValue(new QsiAliasNode
                {
                    Name = IdentifierVisitor.Visit(node)
                });

                PTree.RawNode[n] = node;
            }));
        }
Beispiel #2
0
        public QsiTableNode VisitNamedTableReference(NamedTableReference namedTableReference)
        {
            var tableNode = new QsiTableReferenceNode
            {
                Identifier = IdentifierVisitor.CreateQualifiedIdentifier(namedTableReference.SchemaObject)
            };

            SqlServerTree.PutFragmentSpan(tableNode, namedTableReference.SchemaObject);

            if (namedTableReference.Alias == null)
            {
                return(tableNode);
            }

            return(TreeHelper.Create <QsiDerivedTableNode>(n =>
            {
                n.Columns.SetValue(TreeHelper.CreateAllColumnsDeclaration());
                n.Source.SetValue(tableNode);

                n.Alias.SetValue(CreateAliasNode(namedTableReference.Alias));

                SqlServerTree.PutFragmentSpan(n, namedTableReference);
            }));
        }