Skip to content

No support for LOCK TABLES #1142

Closed
Closed

Description

@ksqsf

Describe the bug
JSqlParser doesn't support LOCK TABLES and throws ParseException: Encountered unexpected token.

To Reproduce
SQL:

-- Other Parsable Statements;
LOCK TABLES `table` WRITE;
-- Other Parsable Statements;
-- UNLOCK...

Parsing:

        val file = File(path).bufferedReader()
        val parser = CCJSqlParser(file.readText())

Exception:

Exception in thread "main" net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "LOCK" <S_IDENTIFIER>
    at line 42, column 1.

Was expecting one of:

    "("
    ";"
    "ALTER"
    "BEGIN"
    "CALL"
    "COMMENT"
    "COMMIT"
    "CREATE"
    "DECLARE"
    "DELETE"
    "DESCRIBE"
    "DROP"
    "EXEC"
    "EXECUTE"
    "EXPLAIN"
    "GRANT"
    "INSERT"
    "MERGE"
    "REPLACE"
    "SET"
    "SHOW"
    "TRUNCATE"
    "UPDATE"
    "UPSERT"
    "USE"
    "VALUES"
    "WITH"
    <K_SELECT>

	at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:26538)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:26377)
	at net.sf.jsqlparser.parser.CCJSqlParser.Statements(CCJSqlParser.java:511)

Expected behavior
Parse it into an AST.

System
Ref: https://dev.mysql.com/doc/refman/8.0/en/lock-tables.html

Activity

  1. ksqsf commented on Mar 27, 2021

    @ksqsf
    Author

    Is there a way to ignore such unparsable statements?

  2. wumpz commented on Apr 10, 2021

    @wumpz
    Member

    Look into StatementsTest. There are examples of parser.setErrorRecovery(true);. This skips unparsable statements.

  3. manticore-projects commented on Apr 18, 2024

    @manticore-projects
    Contributor

    See UnsupportedStatements as explain in #1945 (unless you will sponsor or provide a specific implementation of this feature.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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