aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2018-12-06 02:31:27 +0900
committerGitHub <noreply@github.com>2018-12-06 02:31:27 +0900
commitb802e08273f899d5f3b199f7c6a4f5d514c1b0e1 (patch)
treeb5d4311248bc42e52f63ffdec81957a22a5f7cc3
parent299a213a738e078c6fbddd488a711ea9bb066fe2 (diff)
parent93f19071ad9d337a9f6f2fc9278c33e05597951d (diff)
downloadrails-b802e08273f899d5f3b199f7c6a4f5d514c1b0e1.tar.gz
rails-b802e08273f899d5f3b199f7c6a4f5d514c1b0e1.tar.bz2
rails-b802e08273f899d5f3b199f7c6a4f5d514c1b0e1.zip
Merge pull request #34626 from gmcgibbon/sqlite_pluck_quoting
Fix join table column quoting with SQLite.
-rw-r--r--activerecord/CHANGELOG.md4
-rw-r--r--activerecord/lib/active_record/connection_adapters/sqlite3/quoting.rb4
-rw-r--r--activerecord/test/cases/calculations_test.rb4
3 files changed, 12 insertions, 0 deletions
diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md
index 587831f1bb..6f2b49c428 100644
--- a/activerecord/CHANGELOG.md
+++ b/activerecord/CHANGELOG.md
@@ -1,3 +1,7 @@
+* Fix join table column quoting with SQLite.
+
+ *Gannon McGibbon*
+
* Allow disabling scopes generated by `ActiveRecord.enum`.
*Alfred Dominic*
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3/quoting.rb b/activerecord/lib/active_record/connection_adapters/sqlite3/quoting.rb
index b2dcdb5373..29f0e19a98 100644
--- a/activerecord/lib/active_record/connection_adapters/sqlite3/quoting.rb
+++ b/activerecord/lib/active_record/connection_adapters/sqlite3/quoting.rb
@@ -12,6 +12,10 @@ module ActiveRecord
quote_column_name(attr)
end
+ def quote_table_name(name)
+ @quoted_table_names[name] ||= super.gsub(".", "\".\"").freeze
+ end
+
def quote_column_name(name)
@quoted_column_names[name] ||= %Q("#{super.gsub('"', '""')}")
end
diff --git a/activerecord/test/cases/calculations_test.rb b/activerecord/test/cases/calculations_test.rb
index 4cb0dc66ed..4d3db912c5 100644
--- a/activerecord/test/cases/calculations_test.rb
+++ b/activerecord/test/cases/calculations_test.rb
@@ -721,6 +721,10 @@ class CalculationsTest < ActiveRecord::TestCase
assert_equal [], Topic.includes(:replies).order(:id).offset(5).pluck(:id)
end
+ def test_pluck_with_join
+ assert_equal [[2, 2], [4, 4]], Reply.includes(:topic).pluck(:id, :"topics.id")
+ end
+
def test_group_by_with_limit
expected = { "Post" => 8, "SpecialPost" => 1 }
actual = Post.includes(:comments).group(:type).order(:type).limit(2).count("comments.id")