Class: QueryGuard::Analysis::SelectStarRiskDetector
- Inherits:
-
RiskDetector
- Object
- RiskDetector
- QueryGuard::Analysis::SelectStarRiskDetector
- Defined in:
- lib/query_guard/analysis/risk_detectors.rb
Overview
Detects SELECT * usage patterns
Constant Summary collapse
- SELECT_STAR_PATTERN =
/\bSELECT\s+\*/i.freeze
Instance Attribute Summary
Attributes inherited from RiskDetector
Instance Method Summary collapse
- #detect(query, config) ⇒ Object
-
#initialize ⇒ SelectStarRiskDetector
constructor
A new instance of SelectStarRiskDetector.
Constructor Details
#initialize ⇒ SelectStarRiskDetector
Returns a new instance of SelectStarRiskDetector.
39 40 41 |
# File 'lib/query_guard/analysis/risk_detectors.rb', line 39 def initialize super(:select_star_risk) end |
Instance Method Details
#detect(query, config) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/query_guard/analysis/risk_detectors.rb', line 43 def detect(query, config) risks = [] return risks unless matches_pattern?(query.sql, SELECT_STAR_PATTERN) risks << { pattern: :select_star, risk_level: :medium, message: "SELECT * can fetch unnecessary columns, increasing bandwidth and reducing query efficiency", metadata: { recommendation: "Specify only required columns explicitly", impact: "Unnecessary data transfer; harder schema evolution" } } risks end |