aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2019-02-16 14:07:50 +0900
committerRyuta Kamizono <kamipo@gmail.com>2019-02-16 14:16:44 +0900
commitb35339184671ef5ee6ec6f4b09f47ea81118079a (patch)
treea22101357779ea41a6b8cff6b38567e1c87e4c44 /activerecord/lib
parentf851e4a5db06d3d18935709ace49d7900dbb6860 (diff)
parent795c0f8205a23af4dc928b46d15279b57d8ef3c3 (diff)
downloadrails-b35339184671ef5ee6ec6f4b09f47ea81118079a.tar.gz
rails-b35339184671ef5ee6ec6f4b09f47ea81118079a.tar.bz2
rails-b35339184671ef5ee6ec6f4b09f47ea81118079a.zip
Merge pull request #35286 from matthewdunbar/master
Properly handle cached queries with too many bind parameters
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb6
1 files changed, 6 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb b/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb
index 4e55fcae2f..d950099bab 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb
@@ -96,6 +96,12 @@ module ActiveRecord
if @query_cache_enabled && !locked?(arel)
arel = arel_from_relation(arel)
sql, binds = to_sql_and_binds(arel, binds)
+
+ if binds.length > bind_params_length
+ sql, binds = unprepared_statement { to_sql_and_binds(arel) }
+ preparable = false
+ end
+
cache_sql(sql, name, binds) { super(sql, name, binds, preparable: preparable) }
else
super