diff --git a/lib/bulk_insert/worker.rb b/lib/bulk_insert/worker.rb index a16a938..0ce64c6 100644 --- a/lib/bulk_insert/worker.rb +++ b/lib/bulk_insert/worker.rb @@ -155,7 +155,7 @@ def on_conflict_statement ' ON CONFLICT DO NOTHING' elsif is_postgres && update_duplicates update_values = @columns.map do |column| - "#{column.name}=EXCLUDED.#{column.name}" + "\"#{column.name}\"=EXCLUDED.\"#{column.name}\"" end.join(', ') ' ON CONFLICT(' + update_duplicates.join(', ') + ') DO UPDATE SET ' + update_values elsif adapter_name =~ /^mysql/i && update_duplicates diff --git a/test/bulk_insert/worker_test.rb b/test/bulk_insert/worker_test.rb index 735972b..a7c02ab 100644 --- a/test/bulk_insert/worker_test.rb +++ b/test/bulk_insert/worker_test.rb @@ -356,7 +356,7 @@ class BulkInsertWorkerTest < ActiveSupport::TestCase pgsql_worker.adapter_name = 'PostgreSQL' pgsql_worker.add ["Yo", 15, false, nil, nil] - assert_equal pgsql_worker.compose_insert_query, "INSERT INTO \"testings\" (\"greeting\",\"age\",\"happy\",\"created_at\",\"updated_at\",\"color\") VALUES ('Yo',15,0,NULL,NULL,'chartreuse') ON CONFLICT(greeting, age, happy) DO UPDATE SET greeting=EXCLUDED.greeting, age=EXCLUDED.age, happy=EXCLUDED.happy, created_at=EXCLUDED.created_at, updated_at=EXCLUDED.updated_at, color=EXCLUDED.color RETURNING id" + assert_equal pgsql_worker.compose_insert_query, "INSERT INTO \"testings\" (\"greeting\",\"age\",\"happy\",\"created_at\",\"updated_at\",\"color\") VALUES ('Yo',15,0,NULL,NULL,'chartreuse') ON CONFLICT(greeting, age, happy) DO UPDATE SET \"greeting\"=EXCLUDED.\"greeting\", \"age\"=EXCLUDED.\"age\", \"happy\"=EXCLUDED.\"happy\", \"created_at\"=EXCLUDED.\"created_at\", \"updated_at\"=EXCLUDED.\"updated_at\", \"color\"=EXCLUDED.\"color\" RETURNING id" end test "adapter dependent PostGIS methods" do