aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/mysql
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2019-04-23 22:35:28 +0900
committerRyuta Kamizono <kamipo@gmail.com>2019-05-22 00:38:29 +0900
commit36f6327b75820e19b0018c1e7afd4b30d1218002 (patch)
tree9808e12808d5efb42d4515b3c68bc505e7ea16f7 /activerecord/lib/active_record/connection_adapters/mysql
parent439145c9a8bc811a98946a620afc69469ea82e84 (diff)
downloadrails-36f6327b75820e19b0018c1e7afd4b30d1218002.tar.gz
rails-36f6327b75820e19b0018c1e7afd4b30d1218002.tar.bz2
rails-36f6327b75820e19b0018c1e7afd4b30d1218002.zip
Put all `explain` methods into `DatabaseStatements` module
Almost all database statements methods except `explain` was moved into `DatabaseStatements` at #35922. This moves the last one method.
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/mysql')
-rw-r--r--activerecord/lib/active_record/connection_adapters/mysql/database_statements.rb9
1 files changed, 9 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/mysql/database_statements.rb b/activerecord/lib/active_record/connection_adapters/mysql/database_statements.rb
index 2132e5d248..bbcdc96cdc 100644
--- a/activerecord/lib/active_record/connection_adapters/mysql/database_statements.rb
+++ b/activerecord/lib/active_record/connection_adapters/mysql/database_statements.rb
@@ -26,6 +26,15 @@ module ActiveRecord
!READ_QUERY.match?(sql)
end
+ def explain(arel, binds = [])
+ sql = "EXPLAIN #{to_sql(arel, binds)}"
+ start = Concurrent.monotonic_time
+ result = exec_query(sql, "EXPLAIN", binds)
+ elapsed = Concurrent.monotonic_time - start
+
+ MySQL::ExplainPrettyPrinter.new.pp(result, elapsed)
+ end
+
# Executes the SQL statement in the context of this connection.
def execute(sql, name = nil)
if preventing_writes? && write_query?(sql)