phpmyadmin / phpmyadmin/sql-parser
CASE with alias is not properly parsed
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- PHP
- Sterne
- 485
- Forks
- 119
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
Feeding this SQL to the Parser:
SELECT
CASE
WHEN a.kol = 1 THEN 'one'
ELSE a.kol
END as 'case'
FROM foo a;
will result in errors, and calling build() on the statement will result in this SQL:
SELECT CASE 'case' ELSE a.kol AS `END` END FROM foo AS `a`
The errors array contains these errors:
An alias was previously found.An alias was expected.Unexpected keyword.Unexpected end of CASE expression
I encountered this problem since I upgraded from 5.8.2 to 5.9.1.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, den bereitgestellten CASE-Ausdruck über den Parser zu reproduzieren und die gemeldeten Fehler sowie die Ausgabe von build() zu vergleichen. Verfolge anschließend, wie CASE-Ausdrücke Aliase und Schlüsselwörter konsumieren, und füge dann einen Regressionstest hinzu, der zeigt, dass dieses SQL ohne Fehler geparst wird und build() mit dem korrekt beibehaltenen Alias erstellt wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- php, sql
- Bereich
- compilers, databases
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Ruhig
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 48/100