Peter Serwylo 1678223cab More robust fix for #763, specifying column names to copy explicitly.
This is far less brittle at runtime, but slightly more work at dev time.
The following things are undesirable but make it much easier to write:
 * Use of `CREATE_TABLE_APP.replaceFirst(...)` to create the temp tables.
 * Having to specify a list fo columns twice in `Schema` (`ALL_COLS` + `COLS`).

The `replaceFirst` means we don't need to maintain two separate create table
statements. It is a little messy because there is no compile time guarantee
that we are creating a valid SQL statement at the end, just our knowledge
that a create table statment tends to have the table name first and it
probably wont cause problems.

The `ALL_COLS` + `COLS` is required so that we don't have to type out a list
of fields when copying data in `TempAppProvider`. Otherwise, whenever a new
column is added, developers would need to know that it also needs to be added
to this third place. Currently it is in the `Schema` and the `CREATE_TABLE_*`
statements where one needs to add a new column. These are both intuitive and
hopefully easily discoverable. Having to add it to the `TempAppProvider` is
less intuitive and likely to result in bugs.
2016-09-24 08:52:15 +10:00
..
2016-08-27 08:37:34 +09:00