Skip to content

Lexical error from backslash in string literal #1173

Closed
@erilong

Description

@erilong

Describe the bug
Lexical error for Oracle update statement when where clause has backslash in string literal.

To Reproduce
Steps to reproduce the behavior:

  1. update PARAM_TBL set PARA_DESC = null where PARA_DESC = '\' and DEFAULT_VALUE = '\'
  2. Parsing this SQL using JSqlParser with this statements:
import net.sf.jsqlparser.parser.CCJSqlParserUtil;

public class SqlParse {

    public static void main(String[] args) throws Exception {
        String sql = "update PARAM_TBL set PARA_DESC = null where PARA_DESC = '\\' and DEFAULT_VALUE = '\\'";
        CCJSqlParserUtil.parse(sql);
    }
}

  1. Exception
Exception in thread "main" net.sf.jsqlparser.JSQLParserException: Lexical error at line 1, column 82.  Encountered: "\\" (92), after : ""
	at net.sf.jsqlparser.parser.CCJSqlParserUtil.parseStatement(CCJSqlParserUtil.java:165)
	at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:59)
	at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:37)
	at SqlParse.main(SqlParse.java:7)
Caused by: net.sf.jsqlparser.parser.TokenMgrException: Lexical error at line 1, column 82.  Encountered: "\\" (92), after : ""
	at net.sf.jsqlparser.parser.CCJSqlParserTokenManager.getNextToken(CCJSqlParserTokenManager.java:4759)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_scan_token(CCJSqlParser.java:26392)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_PrimaryExpression_3279_9_631(CCJSqlParser.java:24982)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_PrimaryExpression_3217_5_117(CCJSqlParser.java:25491)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_BitwiseXor_3187_5_184(CCJSqlParser.java:25612)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_MultiplicativeExpression_3157_5_179(CCJSqlParser.java:25743)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_AdditiveExpression_3133_5_360(CCJSqlParser.java:25826)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_BitwiseAndOr_3101_5_176(CCJSqlParser.java:26047)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_ConcatExpression_3078_5_258(CCJSqlParser.java:26100)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_SimpleExpression_3054_5_115(CCJSqlParser.java:18471)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_93(CCJSqlParser.java:18642)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_ComparisonItem_3008_3_158(CCJSqlParser.java:18744)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_RegularCondition_2665_9_334(CCJSqlParser.java:20825)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_RegularCondition_2633_5_157(CCJSqlParser.java:21160)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_Condition_2616_9_310(CCJSqlParser.java:21226)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_Condition_2614_5_154(CCJSqlParser.java:21260)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_70(CCJSqlParser.java:21352)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_2_70(CCJSqlParser.java:17723)
	at net.sf.jsqlparser.parser.CCJSqlParser.AndExpression(CCJSqlParser.java:8424)
	at net.sf.jsqlparser.parser.CCJSqlParser.OrExpression(CCJSqlParser.java:8400)
	at net.sf.jsqlparser.parser.CCJSqlParser.Expression(CCJSqlParser.java:8371)
	at net.sf.jsqlparser.parser.CCJSqlParser.WhereClause(CCJSqlParser.java:7284)
	at net.sf.jsqlparser.parser.CCJSqlParser.Update(CCJSqlParser.java:1408)
	at net.sf.jsqlparser.parser.CCJSqlParser.SingleStatement(CCJSqlParser.java:138)
	at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:81)
	at net.sf.jsqlparser.parser.CCJSqlParserUtil.parseStatement(CCJSqlParserUtil.java:163)
	... 3 more

System

  • Oracle 10
  • Java 8
  • JSqlParser 4.0

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