aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/statement_cache.rb
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2014-04-10 17:00:12 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2014-04-10 17:00:12 -0700
commit496204009eb3265a71d27c8a5513ca0dd803ea45 (patch)
treefc642a9e7583507ee9871fc110bd98d1a3ea5dd3 /activerecord/lib/active_record/statement_cache.rb
parent47037b648d1b56470dba35798fc5e30f1143eb95 (diff)
downloadrails-496204009eb3265a71d27c8a5513ca0dd803ea45.tar.gz
rails-496204009eb3265a71d27c8a5513ca0dd803ea45.tar.bz2
rails-496204009eb3265a71d27c8a5513ca0dd803ea45.zip
eagerly build the bind map
Diffstat (limited to 'activerecord/lib/active_record/statement_cache.rb')
-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)