public static QsiDataDeleteActionNode VisitDeleteStatement(DeleteStatementContext context) { var partitionRestriction = context.partitionRestriction(); var whereClause = context.whereClause(); var hintClause = context.hintClause(); QsiTableNode tableNode = new HanaTableReferenceNode { Identifier = context.tableName().qqi }; if (partitionRestriction != null) { ((HanaTableReferenceNode)tableNode).Partition.Value = TreeHelper.Fragment(partitionRestriction.GetInputText()); } if (whereClause != null || hintClause != null) { var derivedTableNode = new HanaDerivedTableNode { Columns = { Value = TreeHelper.CreateAllColumnsDeclaration() }, Source = { Value = tableNode } }; if (whereClause != null) { derivedTableNode.Where.Value = ExpressionVisitor.VisitWhereClause(whereClause); } if (hintClause != null) { derivedTableNode.Hint.Value = TreeHelper.Fragment(hintClause.GetInputText()); } tableNode = derivedTableNode; } var node = new QsiDataDeleteActionNode { Target = { Value = tableNode } }; HanaTree.PutContextSpan(node, context); return(node); }
public List <DeleteStatement> ParseDeleteStatement(DeleteStatementContext node) { List <DeleteStatement> statements = new List <DeleteStatement>(); SingleDeleteStatementContext single = node.singleDeleteStatement(); MultipleDeleteStatementContext multiple = node.multipleDeleteStatement(); if (single != null) { DeleteStatement statement = new DeleteStatement(); statement.TableName = this.ParseTableName(single.tableName()); statement.Condition = this.ParseCondition(single.expression()); statements.Add(statement); } return(statements); }
public static DeleteQueryInfo VisitDeleteStatement(DeleteStatementContext context) { var queryInfo = new DeleteQueryInfo { TableName = VisitTableName(context.tableName()), WhereExpression = context.expression() != null? ExpressionVisitor.VisitExpression(context.expression()) : null }; if (context.limitClause() != null) { var limitClause = context.limitClause(); if (int.TryParse(limitClause.limit.GetText(), out int limit)) { queryInfo.Limit = limit; } } return(queryInfo); }
public static QsiActionNode VisitDeleteStatement(DeleteStatementContext context) { var derivedNode = new QsiDerivedTableNode(); var withClause = context.withClause(); var whereClause = context.whereClause(); var tableAliasRefList = context.tableAliasRefList(); if (withClause != null) { derivedNode.Directives.SetValue(TableVisitor.VisitWithClause(withClause)); } if (whereClause != null) { derivedNode.Where.SetValue(ExpressionVisitor.VisitWhereClause(whereClause)); } if (tableAliasRefList != null) { var tableReferenceList = context.tableReferenceList(); (QsiQualifiedIdentifier Identifier, bool Wildcard)[] aliases = tableAliasRefList.tableRefWithWildcard()