diff options
author | Carlos Antonio da Silva <carlosantoniodasilva@gmail.com> | 2013-03-12 04:30:37 -0700 |
---|---|---|
committer | Carlos Antonio da Silva <carlosantoniodasilva@gmail.com> | 2013-03-12 04:30:37 -0700 |
commit | 8881723d134e3e0942fd45adc6a72a6a6f4383c3 (patch) | |
tree | db83a6981d6980c6411deb70cca33fe68aa0a38c /activerecord/lib | |
parent | 466ff9310a88c59dbc0c177b41b1435ab4023d9f (diff) | |
parent | d3e5118e7d42a9425b843190380d12ed3ce1e5f9 (diff) | |
download | rails-8881723d134e3e0942fd45adc6a72a6a6f4383c3.tar.gz rails-8881723d134e3e0942fd45adc6a72a6a6f4383c3.tar.bz2 rails-8881723d134e3e0942fd45adc6a72a6a6f4383c3.zip |
Merge pull request #9615 from mmb/copy_table_binary_sqlite
Pass column to quote when copying a sqlite table.
To make quote escape binary data correctly it needs the column passed in.
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb index 84fa1c7d5a..d3ffee3a8b 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb @@ -583,9 +583,17 @@ module ActiveRecord quoted_columns = columns.map { |col| quote_column_name(col) } * ',' quoted_to = quote_table_name(to) + + raw_column_mappings = Hash[columns(from).map { |c| [c.name, c] }] + exec_query("SELECT * FROM #{quote_table_name(from)}").each do |row| sql = "INSERT INTO #{quoted_to} (#{quoted_columns}) VALUES (" - sql << columns.map {|col| quote row[column_mappings[col]]} * ', ' + + column_values = columns.map do |col| + quote(row[column_mappings[col]], raw_column_mappings[col]) + end + + sql << column_values * ', ' sql << ')' exec_query sql end |