diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2017-11-27 11:54:59 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-27 11:54:59 +0900 |
commit | 0e2cd3d749dadcdb5027d48399aea02ef74815f3 (patch) | |
tree | e3a8bbc17d2b33a0c373c7aa9343079f2f9999e9 /activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb | |
parent | ad0630f0ae2d65bc0adda4097af8009a985b6f15 (diff) | |
download | rails-0e2cd3d749dadcdb5027d48399aea02ef74815f3.tar.gz rails-0e2cd3d749dadcdb5027d48399aea02ef74815f3.tar.bz2 rails-0e2cd3d749dadcdb5027d48399aea02ef74815f3.zip |
Add new error class `QueryCanceled` which will be raised when canceling statement due to user request (#31235)
This changes `StatementTimeout` to `QueryCanceled` for PostgreSQL.
In MySQL, errno 1317 (`ER_QUERY_INTERRUPTED`) is only used when the
query is manually cancelled.
But in PostgreSQL, `QUERY_CANCELED` error code (57014) which is used
`StatementTimeout` is also used when the both case. And, we can not tell
which reason happened.
So I decided to introduce new error class `QueryCanceled` closer to the
error code name.
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb index 77ccac54bf..ede8a9c1e2 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb @@ -635,6 +635,7 @@ module ActiveRecord ER_CANNOT_ADD_FOREIGN = 1215 ER_CANNOT_CREATE_TABLE = 1005 ER_LOCK_WAIT_TIMEOUT = 1205 + ER_QUERY_INTERRUPTED = 1317 ER_QUERY_TIMEOUT = 3024 def translate_exception(exception, message) @@ -663,6 +664,8 @@ module ActiveRecord LockWaitTimeout.new(message) when ER_QUERY_TIMEOUT StatementTimeout.new(message) + when ER_QUERY_INTERRUPTED + QueryCanceled.new(message) else super end |