public static QsiColumnNode VisitWildcardParseNode(WildcardParseNode node) { var columnNode = new QsiAllColumnNode(); PTree.RawNode[columnNode] = node; return(columnNode); }
public static QsiColumnNode VisitTableWildcardParseNode(TableWildcardParseNode node) { var columnNode = new QsiAllColumnNode(); if (!string.IsNullOrEmpty(node.Name)) { columnNode.Path = new QsiQualifiedIdentifier(IdentifierVisitor.Visit(node)); } PTree.RawNode[columnNode] = node; return(columnNode); }
public static IQsiTreeNode VisitUpdateStmt(Update_stmtContext context) { var node = ImpalaTree.CreateWithSpan <QsiDataUpdateActionNode>(context); var wildcard = new QsiAllColumnNode(); var targetTable = new QsiDerivedTableNode { Columns = { Value = new QsiColumnsDeclarationNode { Columns = { wildcard } } } }; if (context.from is not null) { if (context.target.children.Count != 1) { throw new QsiException(QsiError.SyntaxError, $"'{context.target.GetInputText()}' is not a valid table alias or reference."); } wildcard.Path = IdentifierVisitor.VisitDottedPath(context.target); targetTable.Source.Value = TableVisitor.VisitFromClause(context.from); } else { targetTable.Source.Value = TableVisitor.VisitDottedPath(context.target); } if (context.where is not null) { targetTable.Where.Value = ExpressionVisitor.VisitWhereClause(context.where); } node.Target.Value = targetTable; node.SetValues.AddRange(ExpressionVisitor.VisitUpdateSetExprList(context.values)); return(node); }
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) })