1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
# frozen_string_literal: true
require_relative 'base'
class Database
class QueryAnalyzers
class MultiplePartitionScanDetector < Database::QueryAnalyzers::Base
def analyze(query)
super
return if config['todos']&.include?(query['fingerprint'])
config['tables'].each do |table_name|
if query['query'].include?(table_name) && query['plan'].to_s.include?('"Subplans Removed"=>0')
(output[table_name] ||= []) << query
end
end
end
def save!
config['tables'].each do |table_name|
next unless output[table_name]
Zlib::GzipWriter.open(output_path("#{table_name}_multiple_partition_scans.ndjson")) do |file|
output[table_name].each do |query|
file.puts(JSON.generate(query))
end
end
end
end
end
end
end
|