From 9e602ffd2b68d865ad1f75d213411e7e98d09bf2 Mon Sep 17 00:00:00 2001 From: Malcolm Locke Date: Tue, 11 Jan 2022 12:09:26 +1300 Subject: [PATCH] Raise KeyError when specifying non existent column --- lib/bulk_insert/worker.rb | 2 +- test/bulk_insert/worker_test.rb | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/bulk_insert/worker.rb b/lib/bulk_insert/worker.rb index 26e0b07..291ab5f 100644 --- a/lib/bulk_insert/worker.rb +++ b/lib/bulk_insert/worker.rb @@ -25,7 +25,7 @@ def initialize(connection, table_name, primary_key, column_names, set_size=500, column_map = columns.inject({}) { |h, c| h.update(c.name => c) } @primary_key = primary_key - @columns = column_names.map { |name| column_map[name.to_s] } + @columns = column_names.map { |name| column_map.fetch(name.to_s) } @table_name = connection.quote_table_name(table_name) @column_names = column_names.map { |name| connection.quote_column_name(name) }.join(",") diff --git a/test/bulk_insert/worker_test.rb b/test/bulk_insert/worker_test.rb index 1ab7c2d..7277b2b 100644 --- a/test/bulk_insert/worker_test.rb +++ b/test/bulk_insert/worker_test.rb @@ -269,6 +269,17 @@ class BulkInsertWorkerTest < ActiveSupport::TestCase assert_nil hello end + test "meaningful error is raised when specifying non existent columns" do + assert_raises(KeyError) { + BulkInsert::Worker.new( + Testing.connection, + Testing.table_name, + 'id', + %w(no_such_column) + ) + } + end + test "adapter dependent SQLite methods" do connection = Testing.connection stub_connection_if_needed(connection, 'SQLite') do