public CommonInsertContext(InsertStatementContext context) { Start = context.Start; Stop = context.Stop; TableRef = context.tableRef(); UsePartition = context.usePartition(); InsertFromConstructor = context.insertFromConstructor(); UpdateList = context.updateList(); InsertQueryExpression = context.insertQueryExpression(); ValuesReference = context.valuesReference(); InsertUpdateList = context.insertUpdateList(); if (context.HasToken(IGNORE_SYMBOL)) { ConflictBehavior = QsiDataConflictBehavior.Ignore; } else if (InsertUpdateList != null) { ConflictBehavior = QsiDataConflictBehavior.Update; } else { ConflictBehavior = QsiDataConflictBehavior.None; } }
public static QsiDataInsertActionNode VisitInsertStatement(InsertStatementContext context) { var partitionRestriction = context.partitionRestriction(); var columnListClause = context.columnListClause(); var hintClause = context.hintClause(); var valueListClause = context.valueListClause(); var tableNode = new HanaTableReferenceNode { Identifier = context.tableName().qqi }; if (partitionRestriction != null) { tableNode.Partition.SetValue(TreeHelper.Fragment(partitionRestriction.GetInputText())); } var node = new HanaDataInsertActionNode { Target = { Value = tableNode } }; if (columnListClause != null) { node.Columns = columnListClause.list .Select(x => new QsiQualifiedIdentifier(x[^ 1]))
public static InsertQueryInfo VisitInsertStatement(InsertStatementContext context) { var queryInfo = new InsertQueryInfo { IgnoreDuplicate = context.IGNORE() != null, TableName = VisitTableName(context.tableName()), Columns = context.columns?.uid().Select(uid => GetSinglePartName(uid.GetText(), "Column")).ToArray() ?? Array.Empty <string>() }; VisitInsertStatementValue(context.insertStatementValue(), queryInfo); return(queryInfo); }
public InsertStatement ParseInsertStatement(InsertStatementContext node) { InsertStatement statement = new InsertStatement(); foreach (var child in node.children) { if (child is TableNameContext tableName) { statement.TableName = this.ParseTableName(tableName); } else if (child is UidListContext columns) { foreach (var col in columns.children) { if (col is UidContext colId) { TokenInfo tokenInfo = new TokenInfo(colId) { Type = TokenType.ColumnName }; statement.Columns.Add(this.ParseColumnName(colId)); } } } else if (child is InsertStatementValueContext values) { foreach (var v in values.children) { if (v is ExpressionsWithDefaultsContext exp) { foreach (var expChild in exp.children) { if (expChild is ExpressionOrDefaultContext value) { TokenInfo valueInfo = new TokenInfo(value); statement.Values.Add(valueInfo); } } } } } } return(statement); }
public static QsiActionNode VisitInsertStatement(InsertStatementContext context) { var node = new CqlDataInsertActionNode(); UsingClauseContext usingClause; bool ifNotExists; node.Target.SetValue(TableVisitor.VisitColumnFamilyName(context.cf)); if (context.st1 != null) { node.Columns = context.st1.cidentList().list .Select(i => new QsiQualifiedIdentifier(i)) .ToArray(); var rowNode = new QsiRowValueExpressionNode(); rowNode.ColumnValues.AddRange(context.st1._values.Select(ExpressionVisitor.VisitTerm)); // TODO: CqlTree.PutContextSpan(rowNode, context.st1...); node.Values.Add(rowNode); ifNotExists = context.st1.ifNotExists; usingClause = context.st1.usingClause(); } else { var jsonValue = context.st2.jsonValue().s.raw; (QsiQualifiedIdentifier[] columns, var row) = JsonToRowValue(jsonValue); node.Columns = columns; node.Values.Add(row); node.DefaultValue = context.st2.defaultValue; ifNotExists = context.st2.ifNotExists; usingClause = context.st2.usingClause(); } node.ConflictBehavior = ifNotExists ? QsiDataConflictBehavior.None : QsiDataConflictBehavior.Update; if (usingClause != null) { node.Usings.SetValue(ExpressionVisitor.VisitUsingClause(context.st2.usingClause())); } CqlTree.PutContextSpan(node, context); return(node); }
public static QsiActionNode VisitInsertStatement(InsertStatementContext context) { var node = new QsiDataInsertActionNode { ConflictBehavior = context.IGNORE() != null ? QsiDataConflictBehavior.Ignore : QsiDataConflictBehavior.None }; if (context.tableName() == null) { throw new QsiException(QsiError.Syntax); } node.Target.SetValue(TableVisitor.VisitTableName(context.tableName())); switch (context.insertStatementValue()) { case SubqueryInsertStatementContext _: { throw TreeHelper.NotSupportedFeature("subquery insert"); } case ExpressionInsertStatementContext expressionContext: { if (context.columns != null) { node.Columns = context.columns.uid() .Select(i => new QsiQualifiedIdentifier(IdentifierVisitor.VisitUid(i))) .ToArray(); } IEnumerable <QsiRowValueExpressionNode> rows = expressionContext .expressionsWithDefaults() .Select(ExpressionVisitor.VisitExpressionsWithDefaults); node.Values.AddRange(rows); break; } case JsonInsertStatementContext jsonContext: { (JObject, JsonObjectContext x)[] objects = jsonContext.jsonObject()