Skip to content

Fail to parse ESCAPE '\' with two Columns Escaped #832

Closed
@Preston-Crary

Description

@Preston-Crary

Actual Behavior

JSQLParserException is thrown:

at net.sf.jsqlparser.parser.CCJSqlParserManager.parse(CCJSqlParserManager.java:40)
Caused by: net.sf.jsqlparser.parser.TokenMgrException: Lexical error at line 1, column 81.  Encountered: "\\" (92), after : ""
	at net.sf.jsqlparser.parser.CCJSqlParserTokenManager.getNextToken(CCJSqlParserTokenManager.java:3600)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_ntk_f(CCJSqlParser.java:19297)
	at net.sf.jsqlparser.parser.CCJSqlParser.AndExpression(CCJSqlParser.java:6101)
	at net.sf.jsqlparser.parser.CCJSqlParser.OrExpression(CCJSqlParser.java:6051)
	at net.sf.jsqlparser.parser.CCJSqlParser.AndExpression(CCJSqlParser.java:6087)
	at net.sf.jsqlparser.parser.CCJSqlParser.OrExpression(CCJSqlParser.java:6051)
	at net.sf.jsqlparser.parser.CCJSqlParser.AndExpression(CCJSqlParser.java:6142)
	at net.sf.jsqlparser.parser.CCJSqlParser.OrExpression(CCJSqlParser.java:6051)
	at net.sf.jsqlparser.parser.CCJSqlParser.Expression(CCJSqlParser.java:6022)
	at net.sf.jsqlparser.parser.CCJSqlParser.WhereClause(CCJSqlParser.java:5379)
	at net.sf.jsqlparser.parser.CCJSqlParser.PlainSelect(CCJSqlParser.java:3195)
	at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:3351)
	at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3059)
	at net.sf.jsqlparser.parser.CCJSqlParser.SubSelect(CCJSqlParser.java:9738)
	at net.sf.jsqlparser.parser.CCJSqlParser.FromItem(CCJSqlParser.java:4556)
	at net.sf.jsqlparser.parser.CCJSqlParser.PlainSelect(CCJSqlParser.java:3185)
	at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:3351)
	at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3059)
	at net.sf.jsqlparser.parser.CCJSqlParser.Select(CCJSqlParser.java:3052)
	at net.sf.jsqlparser.parser.CCJSqlParser.SingleStatement(CCJSqlParser.java:132)
	at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:83)
	at net.sf.jsqlparser.parser.CCJSqlParserManager.parse(CCJSqlParserManager.java:38)

Expected Behavior

Can parse this without issues.

Steps to Reproduce the Problem

Parse this SQL:
SELECT * FROM T1 WHERE (name LIKE ? ESCAPE '\') AND (description LIKE ? ESCAPE '\')

Code Used

Statement statement = new CCJSqlParserManager().parse(new StringReader("SELECT * FROM T1 WHERE (name LIKE ? ESCAPE '\') AND (description LIKE ? ESCAPE '\')"))

Note

This parses without issues, having the 2nd escape is needed to see the problem:
SELECT * FROM T1 WHERE (name LIKE ? ESCAPE '\') AND (description LIKE ?)

Specifications

Tried using com.github.jsqlparser:jsqlparser:1.4 and com.github.jsqlparser:jsqlparser:2.1

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