diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2016-07-01 16:10:27 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2016-07-01 16:10:27 +0900 |
commit | 5d3a0b14c0439beab8e3af946dec88fddc07f896 (patch) | |
tree | 09969a55a032a695593388f82826cbba29352ef8 | |
parent | 49a881e0db1ef64fcbae2b7ddccfd5ccea26ae01 (diff) | |
download | rails-5d3a0b14c0439beab8e3af946dec88fddc07f896.tar.gz rails-5d3a0b14c0439beab8e3af946dec88fddc07f896.tar.bz2 rails-5d3a0b14c0439beab8e3af946dec88fddc07f896.zip |
Pass `pk: false` to `connection.insert` explicitly if do not have a primary key
Because causing an extra query by `sql_for_insert` for guessing a
primary key.
https://github.com/rails/rails/blob/v5.0.0/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb#L121-L125
-rw-r--r-- | activerecord/lib/active_record/relation.rb | 2 | ||||
-rw-r--r-- | activerecord/test/cases/primary_keys_test.rb | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb index 7a1552856b..93baa882ad 100644 --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -65,7 +65,7 @@ module ActiveRecord @klass.connection.insert( im, 'SQL', - primary_key, + primary_key || false, primary_key_value, nil, binds) diff --git a/activerecord/test/cases/primary_keys_test.rb b/activerecord/test/cases/primary_keys_test.rb index 52eac4a124..66b625cff5 100644 --- a/activerecord/test/cases/primary_keys_test.rb +++ b/activerecord/test/cases/primary_keys_test.rb @@ -174,6 +174,14 @@ class PrimaryKeysTest < ActiveRecord::TestCase assert_equal '2', dashboard.id end + def test_create_without_primary_key_no_extra_query + klass = Class.new(ActiveRecord::Base) do + self.table_name = 'dashboards' + end + klass.create! # warmup schema cache + assert_queries(3, ignore_none: true) { klass.create! } + end + if current_adapter?(:PostgreSQLAdapter) def test_serial_with_quoted_sequence_name column = MixedCaseMonkey.columns_hash[MixedCaseMonkey.primary_key] |