Exemplo n.º 1
0
        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();
                }
            }
        }
Exemplo n.º 2
0
 virtual public void VisitOnValues(InsertValuesStmt insertValuesStmt, int offset)
 {
 }
Exemplo n.º 3
0
 public void VisitOnValues(InsertValuesStmt insertValuesStmt, int offset)
 {
     _visitor.VisitOnValues(insertValuesStmt, offset);
 }