Class: Gitlab::Database::QueryAnalyzers::PreventSetOperatorMismatch
- Defined in:
 - lib/gitlab/database/query_analyzers/prevent_set_operator_mismatch.rb,
lib/gitlab/database/query_analyzers/prevent_set_operator_mismatch/node.rb,
lib/gitlab/database/query_analyzers/prevent_set_operator_mismatch/type.rb,
lib/gitlab/database/query_analyzers/prevent_set_operator_mismatch/froms.rb,
lib/gitlab/database/query_analyzers/prevent_set_operator_mismatch/columns.rb,
lib/gitlab/database/query_analyzers/prevent_set_operator_mismatch/targets.rb,
lib/gitlab/database/query_analyzers/prevent_set_operator_mismatch/references.rb,
lib/gitlab/database/query_analyzers/prevent_set_operator_mismatch/select_stmt.rb,
lib/gitlab/database/query_analyzers/prevent_set_operator_mismatch/common_table_expressions.rb 
Defined Under Namespace
Modules: Type Classes: Columns, CommonTableExpressions, Froms, Node, References, SelectStmt, Targets
Constant Summary collapse
- SetOperatorStarError =
 Class.new(QueryAnalyzerError)
- DETECT_REGEX =
 /.*SELECT.+\b(UNION|EXCEPT|INTERSECT)\b/i
Constants inherited from Base
Class Method Summary collapse
Methods inherited from Base
analyzer_key, begin!, context, context_key, end!, requires_tracking?, suppress=, suppress_key, suppress_schema_issues_for_decomposed_tables, suppressed?, with_suppressed
Class Method Details
.analyze(parsed) ⇒ Object
      17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32  | 
    
      # File 'lib/gitlab/database/query_analyzers/prevent_set_operator_mismatch.rb', line 17 def analyze(parsed) return unless requires_detection?(parsed.sql) # This analyzer requires the PgQuery parsed query to be present return unless parsed.pg # Only handle SELECT queries. parsed.pg.tree.stmts.each do |stmt| select_stmt = next_select_stmt(stmt) next unless select_stmt types = SelectStmt.new(select_stmt).types raise SetOperatorStarError if types.any?(Type::INVALID) end end  | 
  
.enabled? ⇒ Boolean
      12 13 14 15  | 
    
      # File 'lib/gitlab/database/query_analyzers/prevent_set_operator_mismatch.rb', line 12 def enabled? ::Feature::FlipperFeature.table_exists? && Feature.enabled?(:query_analyzer_gitlab_schema_metrics, type: :ops) end  |