Class: ActiveMonitoring::SqlNormalizer

Inherits:
Object
  • Object
show all
Defined in:
lib/active_monitoring/sql_normalizer.rb

Instance Method Summary collapse

Constructor Details

#initialize(query:) ⇒ SqlNormalizer

Returns a new instance of SqlNormalizer.



3
4
5
# File 'lib/active_monitoring/sql_normalizer.rb', line 3

def initialize(query:)
  @query = query
end

Instance Method Details

#to_sObject



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/active_monitoring/sql_normalizer.rb', line 7

def to_s
  query.squish!
  query.gsub!(/(\s(=|>|<|>=|<=|<>|!=)\s)('[^']+'|[\$\+\-\w\.]+)/, '\1xxx')
  query.gsub!(/(\sIN\s)\([^\(\)]+\)/i, '\1(xxx)')
  regex = /(\sBETWEEN\s)('[^']+'|[\+\-\w\.]+)(\sAND\s)('[^']+'|[\+\-\w\.]+)/i
  query.gsub!(regex, '\1xxx\3xxx')
  query.gsub!(/(\sVALUES\s)\(.+\)/i, '\1(xxx)')
  query.gsub!(/(\s(LIKE|ILIKE|SIMILAR TO|NOT SIMILAR TO)\s)('[^']+')/i, '\1xxx')
  query.gsub!(/(\s(LIMIT|OFFSET)\s)(\d+)/i, '\1xxx')
  query
end