Incorrect parsing of WHERE LIKE with parameter
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 45/100
Línea de trabajo
Comience con el flujo de tokenización del Parser usando el ejemplo proporcionado WHERE foo LIKE :bar y compárelo con los casos de la columna entre backticks y =. Rastree por qué la columna sin comillas, el operador LIKE y el parámetro con nombre se combinan, y luego añada una prueba de regresión que muestre que foo, el espacio en blanco, LIKE, el espacio en blanco y :bar son tokens separados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
When trying to parse a WHERE clause such as WHERE foo LIKE :bar it returns foo LIKE : as a single token, where as I would expect it to return foo LIKE :bar as individual tokens. It doesn't have this issue when using back ticks on the columns, or = instead of LIKE.
Sample script:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use PhpMyAdmin\SqlParser\Parser;
use PhpMyAdmin\SqlParser\Token;
use PhpMyAdmin\SqlParser\TokensList;
$sql = 'SELECT * FROM test WHERE foo LIKE :bar';
echo 'sql: ' . $sql . PHP_EOL;
$parser = new Parser($sql);
foreach ($parser->list->tokens as $i => $token) {
echo 'token: ' . $token->token , PHP_EOL;
}
$sql = 'SELECT * FROM test WHERE `foo` LIKE :bar';
echo 'sql: ' . $sql . PHP_EOL;
$parser = new Parser($sql);
foreach ($parser->list->tokens as $i => $token) {
echo 'token: ' . $token->token , PHP_EOL;
}
$sql = 'SELECT * FROM test WHERE foo = :bar';
echo 'sql: ' . $sql . PHP_EOL;
$parser = new Parser($sql);
foreach ($parser->list->tokens as $i => $token) {
echo 'token: ' . $token->token , PHP_EOL;
}
Output:
sql: SELECT * FROM test WHERE foo LIKE :bar
token: SELECT
token:
token: *
token:
token: FROM
token:
token: test
token:
token: WHERE
token:
token: foo LIKE :
token: bar
token:
sql: SELECT * FROM test WHERE `foo` LIKE :bar
token: SELECT
token:
token: *
token:
token: FROM
token:
token: test
token:
token: WHERE
token:
token: `foo`
token:
token: LIKE
token:
token: :bar
token:
sql: SELECT * FROM test WHERE foo = :bar
token: SELECT
token:
token: *
token:
token: FROM
token:
token: test
token:
token: WHERE
token:
token: foo
token:
token: =
token:
token: :bar
token:
- Lenguaje dominante
- PHP
- Estrellas
- 485
- Forks
- 119
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de phpmyadmin/sql-parser
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
phpmyadmin/sql-parser#655 · 1 reacción ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
phpmyadmin/sql-parser#666 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 65/100
phpmyadmin/sql-parser#662 · 2 reacciones ·
-
MariaDB and MySQL contexts Abiertokind/support
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
phpmyadmin/sql-parser#653 · 1 reacción ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 70/100
phpmyadmin/sql-parser#649 ·
Todos los issues de phpmyadmin/sql-parser
Issues similares
-
status/awaiting_triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
WordPress/plugin-check#1486 ·
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
az-digital/az_quickstart#6019 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
grokability/snipe-it#19688 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100