File size: 3,196 Bytes
90fc756
 
 
b83c8ad
90fc756
 
 
 
 
 
852b5ea
 
90fc756
852b5ea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b83c8ad
 
 
 
 
 
 
 
852b5ea
b83c8ad
90fc756
b83c8ad
852b5ea
b83c8ad
852b5ea
b83c8ad
852b5ea
b83c8ad
852b5ea
 
 
b83c8ad
852b5ea
b83c8ad
852b5ea
b83c8ad
 
 
 
 
852b5ea
b83c8ad
 
 
 
 
852b5ea
 
 
b83c8ad
852b5ea
 
 
 
 
 
 
 
 
 
 
 
 
 
90fc756
b83c8ad
 
 
 
 
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
name: sql-query-reviewer
description: "AI agent reviews SQL queries for correctness, performance, and security."
author: Hellinferno
version: "0.2.0"
tags:
  - openenv
  - sql
  - code-review
  - security
tasks:
  - id: easy_001
    name: Syntax Keyword Typos
    difficulty: easy
    description: "Detect misspelled SQL keywords (SELCT, FORM, WEHRE) and unnecessary SELECT *."
  - id: easy_002
    name: Missing FROM Clause
    difficulty: easy
    description: "Find missing FROM keyword before table name."
  - id: easy_003
    name: NULL Comparison Logic
    difficulty: easy
    description: "Detect = NULL instead of IS NULL."
  - id: easy_004
    name: Unclosed String Literal
    difficulty: easy
    description: "Find unterminated quote in WHERE clause."
  - id: easy_005
    name: Unknown Column Name
    difficulty: easy
    description: "Detect column name typo (statuz vs status)."
  - id: easy_006
    name: DELETE Without WHERE
    difficulty: easy
    description: "Detect dangerous unconditional DELETE statement."
  - id: easy_007
    name: Column Self-Comparison
    difficulty: easy
    description: "Detect column compared to itself instead of a value."
  - id: medium_001
    name: Wide Table SELECT Star
    difficulty: medium
    description: "Identify schema-aware performance problems like SELECT * on wide JSON tables."
  - id: medium_002
    name: Correlated Subquery
    difficulty: medium
    description: "Find correlated subqueries that could be rewritten as JOINs."
  - id: medium_003
    name: Redundant DISTINCT
    difficulty: medium
    description: "Detect unnecessary DISTINCT on unique columns."
  - id: medium_004
    name: Function on Indexed Column
    difficulty: medium
    description: "Detect DATE() function preventing index usage."
  - id: medium_005
    name: Leading Wildcard Search
    difficulty: medium
    description: "Identify LOWER() and leading wildcard preventing index usage."
  - id: medium_006
    name: DATE Function Index Bypass
    difficulty: medium
    description: "Detect DATE() function on indexed column preventing efficient lookups."
  - id: medium_007
    name: ORDER BY RAND Performance
    difficulty: medium
    description: "Detect expensive random ordering on large tables."
  - id: hard_001
    name: SQL Injection Detection
    difficulty: hard
    description: "Find string interpolation enabling SQL injection vectors."
  - id: hard_002
    name: Privilege Escalation via UNION
    difficulty: hard
    description: "Detect UNION with system tables exposing sensitive data."
  - id: hard_003
    name: PII Data Leakage
    difficulty: hard
    description: "Find unfiltered JOINs exposing personally identifiable information."
  - id: hard_004
    name: Self-Join Optimization
    difficulty: hard
    description: "Detect self-joins replaceable with window functions for 10x improvement."
  - id: hard_005
    name: Transaction Isolation Issues
    difficulty: hard
    description: "Find missing transaction isolation causing partial failure corruption."
  - id: hard_006
    name: Race Condition in Balance Update
    difficulty: hard
    description: "Detect TOCTOU race condition allowing double-spending."