aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/sqlite3
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/sqlite3
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/sqlite3')
-rw-r--r--activerecord/lib/active_record/connection_adapters/sqlite3/database_statements.rb6
1 files changed, 5 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3/database_statements.rb b/activerecord/lib/active_record/connection_adapters/sqlite3/database_statements.rb
index 73b80e8c15..85053acf91 100644
--- a/activerecord/lib/active_record/connection_adapters/sqlite3/database_statements.rb
+++ b/activerecord/lib/active_record/connection_adapters/sqlite3/database_statements.rb
@@ -11,6 +11,11 @@ module ActiveRecord
!READ_QUERY.match?(sql)
end
+ def explain(arel, binds = [])
+ sql = "EXPLAIN QUERY PLAN #{to_sql(arel, binds)}"
+ SQLite3::ExplainPrettyPrinter.new.pp(exec_query(sql, "EXPLAIN", []))
+ end
+
def execute(sql, name = nil) #:nodoc:
if preventing_writes? && write_query?(sql)
raise ActiveRecord::ReadOnlyError, "Write query attempted while in readonly mode: #{sql}"
@@ -79,7 +84,6 @@ module ActiveRecord
log("rollback transaction", "TRANSACTION") { @connection.rollback }
end
-
private
def execute_batch(sql, name = nil)
if preventing_writes? && write_query?(sql)