public static QsiColumnNode VisitColumnParseNode(ColumnParseNode node) { var columnNode = new QsiColumnReferenceNode { Name = IdentifierVisitor.Visit(node) }; PTree.RawNode[columnNode] = node; return(columnNode); }
public QsiColumnNode VisitSelectScalarExpression(SelectScalarExpression selectScalarExpression) { QsiExpressionNode expression = null; QsiColumnReferenceNode column = null; if (selectScalarExpression.Expression is ColumnReferenceExpression columnReferenceExpression) { column = new QsiColumnReferenceNode { Name = IdentifierVisitor.CreateQualifiedIdentifier(columnReferenceExpression.MultiPartIdentifier) }; if (selectScalarExpression.ColumnName == null) { SqlServerTree.PutFragmentSpan(column, selectScalarExpression); return(column); } } else { expression = ExpressionVisitor.VisitScalarExpression(selectScalarExpression.Expression); } return(TreeHelper.Create <QsiDerivedColumnNode>(n => { if (column != null) { n.Column.SetValue(column); } else if (expression != null) { n.Expression.SetValue(expression); } var columnName = selectScalarExpression.ColumnName; if (columnName != null) { if (columnName.Identifier == null) { n.Alias.SetValue(new QsiAliasNode { Name = new QsiIdentifier(columnName.Value, false) }); } else { n.Alias.SetValue(CreateAliasNode(columnName.Identifier)); } } SqlServerTree.PutFragmentSpan(n, selectScalarExpression); })); }
public QsiActionNode VisitInsertSpecificiation(InsertSpecification insertSpecification) { var node = new QsiDataInsertActionNode(); var tableNode = TableVisitor.VisitTableReference(insertSpecification.Target); if (tableNode is not QsiTableReferenceNode tableReferenceNode) { throw new QsiException(QsiError.Syntax); } node.Target.SetValue(tableReferenceNode); if (!ListUtility.IsNullOrEmpty(insertSpecification.Columns)) { node.Columns = insertSpecification.Columns .Select(ExpressionVisitor.VisitColumnReferenceExpression) .Select(c => c.Column.Value switch { QsiColumnReferenceNode columnReferenceNode => columnReferenceNode.Name, QsiAllColumnNode allColumnNode => allColumnNode.Path, _ => throw new QsiException(QsiError.Syntax) })
public SelectorPair(QsiColumnReferenceNode column) { Column = column; Expression = null; }