I just learned that (some) databases seem to (silently?) change invalid column names (see tidyverse/dbplyr#1016). This causes issues with the new optimisation in dbplyr::copy_to() where column names do not match.
To handle this correctly it would be necessary for copy_to() to revert to the old behaviour and query the column names again.
To avoid this extra roundtrip with the database it would be great if dbWriteTable() would warn (or even error) if the output column names are different from the input column names.
@krlmlr What do you think?