public override void VisitOnValues(InsertValuesStmt insertValuesStmt, int offset) { var table = insertValuesStmt.Table; if (insertValuesStmt.HasTableColumns) { for (int i = 0; i < insertValuesStmt.ValuesList.Count; ++i) { foreach (var assignment in insertValuesStmt.GetAssignments(i)) { var columnName = assignment.Column.Name; if (assignment.Value.IsDefault) { } else if (assignment.Value is Literal) { var tableColumn = new TableAndColumn(table, columnName); _cnfSet.Add(tableColumn, (Literal)assignment.Value); } } table = table.Clone(); } } else if (_tableColumns.ContainsKey(table.Name)) { // テーブル列名がCREATE文の定義順に格納されていることが前提である foreach (var values in insertValuesStmt.ValuesList) { int columnIndex = 0; foreach (var columnName in _tableColumns[table.Name]) { var value = values[columnIndex]; if (value.IsDefault) { } else if (value is Literal) { var tableColumn = new TableAndColumn(table, columnName); _cnfSet.Add(tableColumn, (Literal)value); } ++columnIndex; } table = table.Clone(); } } }
virtual public void VisitOnValues(InsertValuesStmt insertValuesStmt, int offset) { }
public void VisitOnValues(InsertValuesStmt insertValuesStmt, int offset) { _visitor.VisitOnValues(insertValuesStmt, offset); }