aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activerecord/lib/active_record/statement_cache.rb13
1 files changed, 5 insertions, 8 deletions
diff --git a/activerecord/lib/active_record/statement_cache.rb b/activerecord/lib/active_record/statement_cache.rb
index d2a0c6f618..c51145f62f 100644
--- a/activerecord/lib/active_record/statement_cache.rb
+++ b/activerecord/lib/active_record/statement_cache.rb
@@ -75,10 +75,11 @@ module ActiveRecord
end
def initialize(block = Proc.new)
- @mutex = Mutex.new
- @binds = nil
+ @mutex = Mutex.new
+ @binds = nil
@query_builder = nil
- @relation = block.call Params.new
+ @relation = block.call Params.new
+ @binds = BindMap.new @relation.bind_values
end
def execute(params)
@@ -86,7 +87,7 @@ module ActiveRecord
arel = rel.arel
klass = rel.klass
- bind_map = binds rel
+ bind_map = @binds
bind_values = bind_map.bind params
builder = query_builder klass.connection, arel
@@ -97,10 +98,6 @@ module ActiveRecord
alias :call :execute
private
- def binds(rel)
- @binds || @mutex.synchronize { @binds ||= BindMap.new rel.bind_values }
- end
-
def query_builder(connection, arel)
@query_builder || @mutex.synchronize {
@query_builder ||= connection.cacheable_query(arel)