blob: 1a1415dd8f228c7f666f63241dc658e59b1577c3 (
plain)
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
|