apache / apache/datafusion-sqlparser-rs

mysql: `DROP INDEX idx_xxx on t` and an error occurs

Offen
#1,863 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Rust
Sterne
3.5k
Forks
772
Ø Merge
4 T. 9 Std.
Gemergte PRs (30 T.)
17

Beschreibung

With v0.56.0 using the mysql dialect, use the `parse_sql` function to parse `DROP INDEX idx_name ON table_demo;` or `ALTER TABLE tbl_name DROP INDEX idx_name;` and an error occurs.

```rust
use sqlparser::dialect::MySqlDialect;
use sqlparser::parser::Parser;

fn main() {
let sql = "DROP INDEX idx_name ON table_demo;";

let dialect = MySqlDialect {}; // or AnsiDialect, or your own dialect ...

let ast = Parser::parse_sql(&dialect, sql).unwrap();

println!("AST: {:?}", ast);
}

```

Report the following error:

```
called `Result::unwrap()` on an `Err` value: ParserError("Expected: end of statement, found: ON at Line: 1, Column: 21")
```

In the official documentation of MySQL, when deleting an index, you need to specify the table where the index is located.

```sql
DROP INDEX index_name ON tbl_name
[algorithm_option | lock_option] ...

algorithm_option:
ALGORITHM [=] {DEFAULT | INPLACE | COPY}

lock_option:
LOCK [=] {DEFAULT | NONE | SHARED | EXCLUSIVE}

```

https://dev.mysql.com/doc/refman/8.0/en/drop-index.html

Would you classify this as a bug?

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Reproduzieren Sie den Fehler mit MySqlDialect und Parser::parse_sql, indem Sie sowohl die Formen DROP INDEX ... ON ... als auch ALTER TABLE ... DROP INDEX verwenden. Verfolgen Sie, wie diese Anweisungen geparst werden, und überprüfen Sie, dass die Regressionstestabdeckung die dokumentierte MySQL-Syntax ohne den gemeldeten Parser-Fehler akzeptiert.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
mysql, rust
Bereich
databases
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.