Skip to content

mysql: DROP INDEX idx_xxx on t and an error occurs #1863

Open
@vimko

Description

@vimko

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.

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.

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions