Skip to content

Commit 911deaf

Browse files
committed
feat: add full TRIGGER parsing support
1 parent 83fc311 commit 911deaf

File tree

8 files changed

+1177
-5
lines changed

8 files changed

+1177
-5
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,11 @@ See [docs/EXAMPLES.md](docs/EXAMPLES.md) for comprehensive usage examples.
8181
### DDL (Data Definition Language)
8282

8383
-**CREATE TABLE** - Columns, constraints, foreign keys, IF NOT EXISTS
84-
-**DROP** - TABLE/DATABASE/INDEX/VIEW with IF EXISTS and CASCADE
84+
-**DROP** - TABLE/DATABASE/INDEX/VIEW/TRIGGER with IF EXISTS and CASCADE
8585
-**ALTER TABLE** - ADD/DROP/MODIFY/CHANGE columns and constraints
8686
-**CREATE INDEX** - Simple and unique indexes with IF NOT EXISTS
8787
-**CREATE VIEW** - Views and materialized views with OR REPLACE, IF NOT EXISTS, WITH CHECK OPTION
88+
-**CREATE TRIGGER** - BEFORE/AFTER/INSTEAD OF triggers, multiple events, FOR EACH ROW/STATEMENT, WHEN conditions
8889

8990
### Transaction Control
9091

@@ -271,12 +272,12 @@ make dev-log
271272
- [x] Query execution plan analysis
272273
- [x] Stored procedures and functions
273274
- [x] View definitions (CREATE VIEW, CREATE MATERIALIZED VIEW)
275+
- [x] Trigger parsing (CREATE TRIGGER, DROP TRIGGER)
274276
- [x] Performance benchmarking
275277
- [x] Dialect-specific optimizations
276278

277279
### 🚧 Planned Features
278280

279-
- [ ] Trigger parsing
280281
- [ ] Real-time log monitoring
281282
- [ ] Integration with monitoring tools
282283

ai.md

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
🚀 SQLens – Roadmap IA
2+
3+
Objectif : Ajouter une couche d’IA fiable sur SQLens en combinant la puissance du parsing formel + les capacités de raisonnement des LLM.
4+
5+
🎯 Vision
6+
7+
SQLens ne veut pas remplacer ChatGPT.
8+
SQLens veut être un copilote SQL professionnel, fiable, localisable, et intégré aux outils dev/ops.
9+
10+
Grâce au moteur de parsing et d’analyse déjà présent dans le projet, l’IA devient assistée par AST, ce que les LLM généralistes ne peuvent pas offrir.
11+
12+
📌 Roadmap IA (MVP → Avancée)
13+
✅ 1. Intégration LLM (MVP)
14+
15+
Ajouter un package ai/
16+
17+
Support OpenAI / Mistral / Claude via HTTP
18+
19+
Support Ollama (local)
20+
21+
Fonction générique :
22+
AskLLM(ctx context.Context, prompt string) (string, error)
23+
24+
✅ 2. Explain SQL
25+
26+
Export AST → JSON
27+
28+
Prompt IA : “Explique clairement cette requête SQL.”
29+
30+
Retour structuré : sections, points clés, risques éventuels
31+
32+
CLI :
33+
34+
sqlens ai explain "SELECT * FROM users"
35+
36+
✅ 3. Correction automatique (“AI Auto-Fix”)
37+
38+
Récupérer l’erreur exacte du parser/analyzer
39+
40+
Prompt IA : “Voici la requête et l’erreur, propose une correction.”
41+
42+
Reparser la suggestion pour validation
43+
44+
Retourner la meilleure correction valide
45+
46+
CLI :
47+
48+
sqlens ai fix "SELECT name FROM users u WHERE u.age =="
49+
50+
✅ 4. Optimisation SQL (AI Rewrite)
51+
52+
Détecter anti-patterns (SELECT *, subqueries inutiles…)
53+
54+
Prompt IA : “Réécris cette requête pour être plus performante.”
55+
56+
Comparer AST (diff) entre original et suggestion
57+
58+
Proposer une version optimisée validée
59+
60+
CLI :
61+
62+
sqlens ai optimize "SELECT * FROM orders"
63+
64+
✅ 5. Analyse des logs SQL Server
65+
66+
Parser logs SQL Server déjà supportés
67+
68+
Identifier requêtes lentes (duration, reads, writes)
69+
70+
Prompt IA : “Explique pourquoi cette requête est lente.”
71+
72+
Générer pistes d’optimisation (index, refactor SQL, join hints)
73+
74+
CLI :
75+
76+
sqlens ai analyze-log slow.log
77+
78+
✅ 6. Caching IA
79+
80+
Hash du prompt
81+
82+
Petit cache local .sqlens/cache.db
83+
84+
Expiration configurable
85+
86+
Désactivable via variable d’env (SQLENS_AI_CACHE=0)
87+
88+
89+
🧬 8. Fonctionnalités IA avancées (étape suivante)
90+
91+
Analyse du schéma DB réel pour optimiser mieux
92+
93+
Index advisor intelligent (LLM + heuristiques)
94+
95+
Suggestions de partitionnement / clustering
96+
97+
Mode “review SQL pour PR GitHub”
98+
99+
Fine-tuning léger local sur AST + requêtes examples

claude.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -491,12 +491,25 @@ go tool pprof cpu.prof
491491
- **Schema-qualified views** - Support for schema.view_name syntax
492492
- **27 comprehensive tests** - All passing across all dialects
493493
- **231 lines of examples** - Complete examples in view_examples.sql
494+
- **Trigger Support** ✅ 🆕
495+
- **CREATE TRIGGER** - Full trigger creation with timing, events, and body
496+
- **BEFORE/AFTER/INSTEAD OF** - All trigger timings supported
497+
- **Multiple events** - INSERT, UPDATE, DELETE with OR combinations
498+
- **FOR EACH ROW/STATEMENT** - Row-level and statement-level triggers
499+
- **WHEN conditions** - Optional trigger conditions (PostgreSQL)
500+
- **IF NOT EXISTS** - Safe trigger creation (MySQL)
501+
- **OR REPLACE** - Idempotent trigger definitions (PostgreSQL)
502+
- **DROP TRIGGER** - Simple and conditional (IF EXISTS) trigger dropping
503+
- **BEGIN...END blocks** - Trigger body parsing
504+
- **Multi-dialect support** - MySQL, PostgreSQL, SQL Server, SQLite, Oracle
505+
- **Schema-qualified tables** - Support for triggers on schema.table
506+
- **23 comprehensive tests** - All passing across all dialects
507+
- **450 lines of examples** - Complete real-world examples in trigger_examples.sql
494508

495509
### 🚧 In Progress / Planned
496510
- [ ] Real-time log monitoring
497511
- [ ] Integration with monitoring tools
498512
- [ ] Control flow statements (IF, WHILE, FOR, LOOP)
499-
- [ ] Triggers
500513

501514
### ❌ Not Planned
502515
- Web interface (project stays CLI-focused)

0 commit comments

Comments
 (0)