diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2014-01-14 17:38:43 -0800 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2014-01-14 17:38:43 -0800 |
commit | e0b623a938583f8c02d925d2f812cc32dfed879e (patch) | |
tree | df3b5103bed520d937873077809771b5fe593eaa /activerecord | |
parent | 7d14e03d71861fac7926119dab903c984b89b568 (diff) | |
download | rails-e0b623a938583f8c02d925d2f812cc32dfed879e.tar.gz rails-e0b623a938583f8c02d925d2f812cc32dfed879e.tar.bz2 rails-e0b623a938583f8c02d925d2f812cc32dfed879e.zip |
translate exceptions on prepared statement failure
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract_adapter.rb | 13 | ||||
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb | 6 |
2 files changed, 13 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb index abf2cb3d3e..bb9a9b1b58 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb @@ -353,6 +353,13 @@ module ActiveRecord protected + def translate_exception(e, sql) + message = "#{e.class.name}: #{e.message}: #{sql}" + @logger.error message if @logger + exception = translate_exception(e, message) + exception.set_backtrace e.backtrace + end + def log(sql, name = "SQL", binds = [], statement_name = nil) @instrumenter.instrument( "sql.active_record", @@ -362,11 +369,7 @@ module ActiveRecord :statement_name => statement_name, :binds => binds) { yield } rescue => e - message = "#{e.class.name}: #{e.message}: #{sql}" - @logger.error message if @logger - exception = translate_exception(e, message) - exception.set_backtrace e.backtrace - raise exception + raise translate_exception(e, sql) end def translate_exception(exception, message) diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index 7e188907e1..ebbe918442 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -853,7 +853,11 @@ module ActiveRecord sql_key = sql_key(sql) unless @statements.key? sql_key nextkey = @statements.next_key - @connection.prepare nextkey, sql + begin + @connection.prepare nextkey, sql + rescue => e + raise translate_exception(e, sql) + end # Clear the queue @connection.get_last_result @statements[sql_key] = nextkey |