package net.sourceforge.mayfly.evaluation.command; import net.sourceforge.mayfly.datastore.ColumnNames; import net.sourceforge.mayfly.datastore.DataStore; import net.sourceforge.mayfly.datastore.TableReference; import net.sourceforge.mayfly.evaluation.Checker; import net.sourceforge.mayfly.evaluation.RealChecker; import net.sourceforge.mayfly.evaluation.ValueList; import net.sourceforge.mayfly.parser.Location; import net.sourceforge.mayfly.util.ImmutableList; public class Insert extends Command { public final UnresolvedTableReference table; public final ImmutableList<String> columnNames; public final ValueList values; public final Location location; public Insert(UnresolvedTableReference table, ImmutableList columnNames, ValueList values, Location location) { this.table = table; this.columnNames = columnNames; this.values = values; this.location = location; } public String table() { return table.tableName(); } @Override public UpdateStore update(DataStore store, String defaultSchema) { TableReference resolved = table.resolve(store, defaultSchema, null); Checker checker = new RealChecker(store, resolved, location, table.options); ColumnNames columns = ColumnNames.fromParser(store, resolved, columnNames); return new UpdateStore( store.addRow(resolved, columns.asList(), values, checker), 1, checker.newIdentityValue() ); } }