Class: ActiveMonitoring::SqlNormalizer
- Inherits:
-
Object
- Object
- ActiveMonitoring::SqlNormalizer
- Defined in:
- lib/active_monitoring/sql_normalizer.rb
Instance Method Summary collapse
-
#initialize(query:) ⇒ SqlNormalizer
constructor
A new instance of SqlNormalizer.
- #to_s ⇒ Object
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_s ⇒ Object
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 |