Skip to content

Regression on the parsing of LIKE escape expression in JSQLParser 4.3 #1444

Description

@tmortagne

Describe the bug

Version 4.3 of JSQLParser seems to introduce a regression in the way LIKE escape expressions are parsed. I assume caused by #420 but did not really look at the code in details.

To Reproduce
Steps to reproduce the behavior:

Given a code which looks like

Select select = (Select) CCJSqlParserUtil.parse("select doc.fullName from XWikiDocument doc where doc.fullName like :fullName escape '/' and doc.author like :author escape '!'");
PlainSelect plainSelect = (PlainSelect) select.getSelectBody();
Expression where = plainSelect.getWhere();

I end up with where being a single LikeExpression in which the escape expression includes the whole '/' AND doc.author LIKE :author ESCAPE '!' part.

Expected behavior

In 4.2 the where variable is a AndExpression containing 2 LikeExpression.

System

  • Java Version: 1.8.0_302
  • JSqlParser version: 4.3

Activity

  1. manticore-projects commented on Dec 13, 2021

    @manticore-projects
    Contributor

    Greetings,

    good catch!
    The problem here is the priority of the expressions, the AND belongs to the WHERE but not to the ESCAPE.

    I will have a look into this tomorrow.

  2. manticore-projects commented on Nov 22, 2022

    @manticore-projects
    Contributor

    I think, that has been solved since a while. JSQLParser 4.6 Snapshot parses it just fine:

    -- Input
    select doc.fullName from XWikiDocument doc where doc.fullName like :fullName escape '/' and doc.author like :author escape '!';
    
    -- Output
    SELECT doc.fullname
    FROM xwikidocument doc
    WHERE doc.fullname LIKE :fullName ESCAPE '/'
            AND doc.author LIKE :author ESCAPE '!'
    ;

    Closed.

  3. tmortagne commented on Nov 30, 2022

    @tmortagne
    Author

    OK, thanks @manticore-projects! I'm looking forward to 4.6 then (I still reproduce with 4.5).

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