apache / apache/datafusion-sqlparser-rs

Fails to parse FORCE INDEX(idx_test)

Abierto
#1,722 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Rust
Estrellas
3.5k
Forks
772
Merge medio
4 d 9 h
PR fusionados (30 d)
17

Descripción

```
fn main() -> Result<()> {
use sqlparser::dialect::GenericDialect;
use sqlparser::parser::Parser;
let dialect = GenericDialect {}; // or AnsiDialect, or MySqlDialect
let sql = "SELECT a, b, 123, myfunc(b) \
FROM table_1 FORCE INDEX (idx_name)\
WHERE a > b AND b < 100 \
ORDER BY a DESC, b";

let ast = Parser::parse_sql(&dialect, sql).unwrap();
println!("AST: {:?}", ast);
Ok(())
}

```

throws

```
DEBUG sqlparser::dialect: get_next_precedence_full() TokenWithSpan { token: Word(Word { value: "FROM", quote_style: None, keyword: FROM }), span: Span(Location(1,29)..Location(1,33)) }
2025-02-10T19:22:33.781308Z DEBUG sqlparser::parser: next precedence: 0
thread 'main' panicked at standalone/src/main.rs:19:48:
called `Result::unwrap()` on an `Err` value: ParserError("Expected: end of statement, found: INDEX at Line: 1, Column: 48")
stack backtrace:
0: rust_begin_unwind
at /rustc/9fc6b43126469e3858e2fe86cafb4f0fd5068869/library/std/src/panicking.rs:665:5
1: core::panicking::panic_fmt
at /rustc/9fc6b43126469e3858e2fe86cafb4f0fd5068869/library/core/src/panicking.rs:76:14
2: core::result::unwrap_failed
at /rustc/9fc6b43126469e3858e2fe86cafb4f0fd5068869/library/core/src/result.rs:1699:5
3: core::result::Result::unwrap
at /Users/jasonhansen/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/result.rs:1104:23
4: standalone::main
at ./src/main.rs:19:15
5: core::ops::function::FnOnce::call_once
at /Users/jasonhansen/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
```

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Empieza ejecutando la reproducción en standalone/src/main.rs con GenericDialect, AnsiDialect y MySqlDialect; después, sigue el punto de entrada del parser que gestiona la cláusula FROM y FORCE INDEX. La tarea está terminada cuando el SELECT proporcionado se analiza sin el error de INDEX indicado y el AST resultante se genera correctamente.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
rust
Área
databases
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.