phpmyadmin / phpmyadmin/sql-parser

CASE with alias is not properly parsed

Ouverte
#588 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

bug
Langage dominant
PHP
Étoiles
485
Forks
119
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

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.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par reproduire l’expression CASE fournie via le Parser et comparez les erreurs signalées ainsi que la sortie de build(). Suivez la manière dont les expressions CASE consomment les alias et les mots-clés, puis ajoutez un cas de régression montrant que ce SQL est analysé sans erreur et que build() est généré avec l’alias correctement préservé.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
php, sql
Domaine
compilers, databases
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
48/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.