Hex string literal x'...' incorrectly parsed as keyword + string
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 70/100
Piste de recherche
Commencez dans la machine à états du Lexer dédiée à l'analyse des nombres, en particulier dans les états 7-9 qui gèrent les littéraux b'...', et comparez-les à la manière dont x est actuellement reconnu comme mot-clé. Réexécutez la reproduction fournie de Parser et confirmez que l'instruction CREATE TABLE produite conserve DEFAULT x'...' au lieu de produire x AS suivi d'une chaîne.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Bug
The lexer incorrectly tokenizes hex string literals x'...' as two separate tokens (keyword x + string '...'),
causing the builder to produce invalid SQL x AS '...' instead of x'...'.
This affects CREATE TABLE statements with binary column defaults on MariaDB 11.8+ which outputs DEFAULT x'...'
in SHOW CREATE TABLE.
The b'...' binary string literal format is handled correctly — only x'...' is affected.
To Reproduce
$parser = new Parser("CREATE TABLE test (IP binary(16) NOT NULL DEFAULT x'00000000000000000000000000000000')");
echo $parser->statements[0]->build();
// Output: ... DEFAULT x AS `00000000000000000000000000000000`
// Expected: ... DEFAULT x'00000000000000000000000000000000'
Affected versions
Both 5.11.x and master.
Root cause
The Lexer's number parsing state machine has states 7-9 for b'...' binary literals, but no equivalent states for
x'...' hex string literals. The x is instead matched as a keyword.
- Langage dominant
- PHP
- Étoiles
- 485
- Forks
- 119
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de phpmyadmin/sql-parser
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
phpmyadmin/sql-parser#655 · 1 réaction ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
phpmyadmin/sql-parser#666 ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 65/100
phpmyadmin/sql-parser#662 · 2 réactions ·
-
MariaDB and MySQL contexts Ouvertekind/support
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
phpmyadmin/sql-parser#653 · 1 réaction ·
-
Support `PAGE_COMPRESSED`=1` Ouvertebug
Difficulté 3/5 1-2 jours Accessibilité débutants 25/100
phpmyadmin/sql-parser#643 · 1 commentaire ·
Toutes les issues de phpmyadmin/sql-parser
Issues similaires
-
Solved site promotion gate fails on runner PHP patch drift (expects 8.2.33, runner installs 8.2.34) Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Automattic/blocks-engine#2161 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Automattic/static-site-importer#1824 ·
-
[Chore] Keep one viget-block-generator skill and replicate it, instead of four tracked copies Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
-
Cannot reset column width Ouverte0. Needs triage bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
0. Needs triage 35-feedback bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100