mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
log the sql that is actually sent to the database
If I have a query that produces sql `WHERE "users"."name" = 'a b'` then in the log all the whitespace is being squeezed. So the sql that is printed in the log is `WHERE "users"."name" = 'a b'`. This can be confusing. This commit fixes it by ensuring that whitespace is not squeezed. fixes #10982
This commit is contained in:
parent
615ad88457
commit
6fb5f6f3d6
3 changed files with 19 additions and 1 deletions
|
@ -1,3 +1,14 @@
|
|||
* Log the sql that is actually sent to the database.
|
||||
|
||||
If I have a query that produces sql
|
||||
`WHERE "users"."name" = 'a b'` then in the log all the
|
||||
whitespace is being squeezed. So the sql that is printed in the
|
||||
log is `WHERE "users"."name" = 'a b'`.
|
||||
|
||||
Do not squeeze whitespace out of sql queries. Fixes #10982.
|
||||
|
||||
*Neeraj Singh*
|
||||
|
||||
* Do not load all child records for inverse case.
|
||||
|
||||
currently `post.comments.find(Comment.first.id)` would load all
|
||||
|
|
|
@ -41,7 +41,7 @@ module ActiveRecord
|
|||
return if IGNORE_PAYLOAD_NAMES.include?(payload[:name])
|
||||
|
||||
name = "#{payload[:name]} (#{event.duration.round(1)}ms)"
|
||||
sql = payload[:sql].squeeze(' ')
|
||||
sql = payload[:sql]
|
||||
binds = nil
|
||||
|
||||
unless (payload[:binds] || []).empty?
|
||||
|
|
|
@ -56,6 +56,13 @@ class LogSubscriberTest < ActiveRecord::TestCase
|
|||
assert_equal 2, logger.debugs.length
|
||||
end
|
||||
|
||||
def test_sql_statements_are_not_squeezed
|
||||
event = Struct.new(:duration, :payload)
|
||||
logger = TestDebugLogSubscriber.new
|
||||
logger.sql(event.new(0, sql: 'ruby rails'))
|
||||
assert_match(/ruby rails/, logger.debugs.first)
|
||||
end
|
||||
|
||||
def test_ignore_binds_payload_with_nil_column
|
||||
event = Struct.new(:duration, :payload)
|
||||
|
||||
|
|
Loading…
Reference in a new issue