Skip to content

Commit d0f35fa

Browse files
committed
Enhance AST-based type inference for CTE and scalar subqueries
1 parent 2757809 commit d0f35fa

2 files changed

Lines changed: 367 additions & 135 deletions

File tree

CHECKLIST.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,14 @@ Status-Legende:
4646
- [x] Debug Logging für nested-json Gruppen entfernt (nur temporär für Verifikation genutzt)
4747
- [x] Kompatibilitätsentscheidung: Kein Feature Toggle für verschachtelte Records – immer aktiv (Dokumentation ergänzen)
4848

49+
### Aktualisierung 25.10.2025
50+
51+
- [x] CTE → Top-Level JSON Typweitergabe (z. B. WCalculation in invoice.CalculationFindAsJson)
52+
- [x] Dotted Scalar Subquery als skalar erkannt (z. B. invoice.invoiceId, kein ReturnsJson)
53+
- [x] ScalarSubquery Typisierung erweitert (AST-basiert, ohne Namensheuristik): - Einzelnes Select-Element wird vollständig analysiert; erkannter Typ wird übernommen - Aggregatfunktionen in ScalarSubquery: COUNT → int, COUNT_BIG → bigint, AVG → decimal(18,2), EXISTS → bit, SUM → decimal(18,2)
54+
- [~] Berechnete Felder (arithmetische Ausdrücke) weiter präzisieren (AST-basiert). Noch offen für komplexe mehrstufige Ausdrücke in WCalculation (Net/Success/Gross)
55+
Die typischen Betrag/Quota‑Berechnungen (Net/Success/Gross) stammen in dieser Prozedur aus mehrstufigen Ausdrücken (IIF, Fensterfunktionen, Kombinationen). Ich kann die AST‑Typableitung noch enger fassen (z. B. arithmetische Kombinationen aus int/decimal konsequent zu decimal(18,2)), rein aus den erkannten Operatoren – ebenfalls ohne Heuristik. Soll ich das für WCalculation konsistent ergänzen?
56+
4957
### Debug Phase (Aggregat & JSON Typisierung Erweiterungen 23.10.2025)
5058

5159
- Erweiterte Aggregat-Typinferenz (AST-basiert): - SUM über 0/1 bedingte Ausdrücke → int - COUNT → int, COUNT_BIG → bigint - AVG → decimal(18,2) - EXISTS → bit - SUM ansonsten Fallback decimal(18,2|18,4) abhängig von Literal-Erkennung (Integer vs. Decimal)
@@ -705,6 +713,8 @@ Status-Legende: [>] deferred (v5 Ziel) – Querverweis auf README / Roadmap Absc
705713
- [ ] Env Fallback Flag Planung (`SPOCR_JSON_REGEX_FALLBACK`): Entscheidung: SPOCR_JSON_REGEX_FALLBACK nicht verwenden, reines AST-Parsing.
706714
- [ ] `Ignored 3 Schemas [ai, ai-journal, dbo]` Log ganz entfernen (generell noch mal logs optimieren)
707715
- [ ] `debug\.spocr\schema\index.json`: FunctionsVersion überdenken / entfernen
716+
- [ ] Schema normalisieren: bit braucht keine MaxLength, int auch nicht, weitere Typen prüfen
717+
- [ ] wenn der --procedure Filter gesetzt ist, dürfen andere Prozeduren am Ende nicht gelöscht werden.
708718

709719
### 0. AST-basierte Typ-Inferenz Verbesserungen (P1 - Kritisch)
710720

0 commit comments

Comments
 (0)