diff options
author | Richard Monette <richard.monette@shopify.com> | 2016-12-12 16:51:39 -0500 |
---|---|---|
committer | Richard Monette <richard.monette@shopify.com> | 2016-12-15 16:38:35 -0500 |
commit | e220fda3e5a497f4b971cf1bb59b2020059634bf (patch) | |
tree | 9ece2b2f7e1d1e4dd82caa26576ec9b530d15c3f /activerecord/lib | |
parent | 4b576f482152411097ecda0c4527bfb01a1d2965 (diff) | |
download | rails-e220fda3e5a497f4b971cf1bb59b2020059634bf.tar.gz rails-e220fda3e5a497f4b971cf1bb59b2020059634bf.tar.bz2 rails-e220fda3e5a497f4b971cf1bb59b2020059634bf.zip |
fix QueryCache nil dup
make sql statements frozen
dup if arel is not our string
expect runtime error
dont wrap runtime error in invalid
log errors will now be treated as runtime errors
update changelog
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb | 4 | ||||
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract_adapter.rb | 7 |
2 files changed, 8 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb b/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb index faccd1d641..947796eea0 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb @@ -10,9 +10,9 @@ module ActiveRecord def to_sql(arel, binds = []) if arel.respond_to?(:ast) collected = visitor.accept(arel.ast, collector) - collected.compile(binds, self) + collected.compile(binds, self).freeze else - arel + arel.dup.freeze end end diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb index 237367c8b3..284529b46e 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb @@ -598,7 +598,12 @@ module ActiveRecord def translate_exception(exception, message) # override in derived class - ActiveRecord::StatementInvalid.new(message) + case exception + when RuntimeError + exception + else + ActiveRecord::StatementInvalid.new(message) + end end def without_prepared_statement?(binds) |