当前使用版本(必填,否则不予处理)
3.5.5snapshot
该问题是如何引起的?(确定最新版也有问题再提!!!)
默认依赖jsqlparser 4.6 与pagehelper 依赖的4.7版本冲突
重现步骤(如果有就写完整)
报错信息
Comment From: pigeon2049
https://github.com/JSQLParser/JSqlParser/commit/b9057d2b75cd1d7df768bda4f3e8ed7c5de1e5e6
Comment From: pigeon2049
Comment From: pigeon2049
Comment From: pigeon2049
Comment From: chess3cake
mark
Comment From: lzysuqianqiu
4.8出来了
Comment From: 805728578
@nieqiurong 计划什么时候适配jsqlparser:4.7+版本
Comment From: JellyBo
jsqlparser4.7版本大重构了,升级有点风险。https://jsqlparser.github.io/JSqlParser/migration.html
Comment From: 805728578
@JellyBo 升级是有风险,是不是可以考虑试用升级一下,pagehelper已经升级了jsqlparser:4.7,老是和咱这里冲突
Comment From: q876625596
希望能直接升级到4.8,目前4.6有些sql无法解析,例如:
select * form my_order as mo where mo.order_type & b'10' = b'10';
会导致以下报错:
Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "?" "?" at line 1, column 1574.
Was expecting one of:
"&"
"::"
"<<"
">>"
"CONNECT"
"EMIT"
"GROUP"
"HAVING"
"START"
"WINDOW"
"["
"^"
"|"
<EOF>
<ST_SEMICOLON>
at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:38866)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:38696)
at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:306)
at net.sf.jsqlparser.parser.CCJSqlParserUtil$1.call(CCJSqlParserUtil.java:253)
at net.sf.jsqlparser.parser.CCJSqlParserUtil$1.call(CCJSqlParserUtil.java:250)
at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:317)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
... 1 common frames omitted
Comment From: lzysuqianqiu
any progress?
Comment From: lzysuqianqiu
4.9出来了
Comment From: haoyang7
希望能尽快适配呀,4.7之前线程池的性能问题有点严重 https://github.com/JSQLParser/JSqlParser/issues/1853
Comment From: nieqiurong
已升级至4.9版本, 使用快照版本 3.5.6-jsqlparser-SNAPSHOT 收集一下问题.
Comment From: haoyang7
@nieqiurong 大佬,可以优化一下com.baomidou.mybatisplus.extension.parser.JsqlParserGlobal这里的方法,CCJSqlParserUtil::parse、CCJSqlParserUtil::parseStatements每次会创建一个临时的线程池。
jsqlparser 4.7中提供了方法接收一个ExecutorService:
net.sf.jsqlparser.parser.CCJSqlParserUtil#parse(java.lang.String, java.util.concurrent.ExecutorService, java.util.function.Consumer
Comment From: nieqiurong
@nieqiurong 大佬,可以优化一下com.baomidou.mybatisplus.extension.parser.JsqlParserGlobal这里的方法,CCJSqlParserUtil::parse、CCJSqlParserUtil::parseStatements每次会创建一个临时的线程池。 jsqlparser 4.7中提供了方法接收一个ExecutorService: net.sf.jsqlparser.parser.CCJSqlParserUtil#parse(java.lang.String, java.util.concurrent.ExecutorService, java.util.function.Consumer
) net.sf.jsqlparser.parser.CCJSqlParserUtil#parseStatements(java.lang.String, java.util.concurrent.ExecutorService, java.util.function.Consumer )
快照版本已更新.
Comment From: nieqiurong
合并更新 3.5.6-SNAPSHOT