Parser hangs in some queries
See original GitHub issueParser hangs during parse of a query with big number of comas.
Steps to reproduce
Parse query
SELECT * FROM ((((((((((((((((tblA))))))))))))))))
Parser hangs (loops infinitely consuming 100% of cpu)
This issue was reported in https://github.com/dbeaver/dbeaver/issues/9054
Stack from the thread dump:
java.lang.Thread.State: RUNNABLE
at net.sf.jsqlparser.parser.CCJSqlParser.jj_add_error_token(CCJSqlParser.java:24965)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_scan_token(CCJSqlParser.java:24895)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_385(CCJSqlParser.java:18292)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_515(CCJSqlParser.java:18130)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_421(CCJSqlParser.java:18138)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_354(CCJSqlParser.java:24089)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_193(CCJSqlParser.java:24132)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_502(CCJSqlParser.java:22742)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_388(CCJSqlParser.java:22907)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_275(CCJSqlParser.java:22938)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_129(CCJSqlParser.java:22428)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_561(CCJSqlParser.java:22816)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_498(CCJSqlParser.java:22852)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_388(CCJSqlParser.java:22896)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_275(CCJSqlParser.java:22938)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_129(CCJSqlParser.java:22428)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_561(CCJSqlParser.java:22816)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_498(CCJSqlParser.java:22852)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_388(CCJSqlParser.java:22896)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_275(CCJSqlParser.java:22938)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_129(CCJSqlParser.java:22428)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_561(CCJSqlParser.java:22816)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_498(CCJSqlParser.java:22852)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_388(CCJSqlParser.java:22896)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_275(CCJSqlParser.java:22938)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_129(CCJSqlParser.java:22428)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_561(CCJSqlParser.java:22816)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_498(CCJSqlParser.java:22852)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_388(CCJSqlParser.java:22896)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_275(CCJSqlParser.java:22938)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_562(CCJSqlParser.java:22767)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_498(CCJSqlParser.java:22856)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_388(CCJSqlParser.java:22896)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_275(CCJSqlParser.java:22938)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_562(CCJSqlParser.java:22767)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_498(CCJSqlParser.java:22856)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_388(CCJSqlParser.java:22896)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_275(CCJSqlParser.java:22938)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_562(CCJSqlParser.java:22767)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_498(CCJSqlParser.java:22856)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_388(CCJSqlParser.java:22896)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_275(CCJSqlParser.java:22938)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_562(CCJSqlParser.java:22767)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_498(CCJSqlParser.java:22856)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_388(CCJSqlParser.java:22896)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_275(CCJSqlParser.java:22938)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_562(CCJSqlParser.java:22767)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_498(CCJSqlParser.java:22856)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_388(CCJSqlParser.java:22896)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_275(CCJSqlParser.java:22938)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_129(CCJSqlParser.java:22428)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_561(CCJSqlParser.java:22816)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_498(CCJSqlParser.java:22852)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_388(CCJSqlParser.java:22896)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_275(CCJSqlParser.java:22938)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_562(CCJSqlParser.java:22767)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_498(CCJSqlParser.java:22856)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_388(CCJSqlParser.java:22896)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_275(CCJSqlParser.java:22938)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_129(CCJSqlParser.java:22428)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_561(CCJSqlParser.java:22816)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_498(CCJSqlParser.java:22852)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_388(CCJSqlParser.java:22896)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_275(CCJSqlParser.java:22938)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_129(CCJSqlParser.java:22428)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_561(CCJSqlParser.java:22816)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_498(CCJSqlParser.java:22852)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_388(CCJSqlParser.java:22896)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_275(CCJSqlParser.java:22938)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_129(CCJSqlParser.java:22428)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_561(CCJSqlParser.java:22816)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_498(CCJSqlParser.java:22852)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_388(CCJSqlParser.java:22896)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_275(CCJSqlParser.java:22938)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_129(CCJSqlParser.java:22428)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_561(CCJSqlParser.java:22816)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_498(CCJSqlParser.java:22852)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_388(CCJSqlParser.java:22896)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_275(CCJSqlParser.java:22938)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3R_129(CCJSqlParser.java:22428)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_3_47(CCJSqlParser.java:22730)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_rescan_token(CCJSqlParser.java:25106)
at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:25025)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:24875)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:4281)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3923)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:4255)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3923)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:4255)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3923)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:4255)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3923)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:4255)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3923)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:4255)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3923)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:4255)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3923)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:4255)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3923)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:4255)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3923)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:4255)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3923)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:4255)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3923)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:4255)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3923)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:4255)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3923)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:4255)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3923)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:4255)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3923)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:4255)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3923)
at net.sf.jsqlparser.parser.CCJSqlParser.SubSelect(CCJSqlParser.java:12580)
at net.sf.jsqlparser.parser.CCJSqlParser.FromItem(CCJSqlParser.java:5840)
at net.sf.jsqlparser.parser.CCJSqlParser.PlainSelect(CCJSqlParser.java:4055)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:4264)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3923)
at net.sf.jsqlparser.parser.CCJSqlParser.Select(CCJSqlParser.java:3916)
at net.sf.jsqlparser.parser.CCJSqlParser.SingleStatement(CCJSqlParser.java:130)
at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:81)
System
- Any database
- Java 11
- JSQLParser 3.2
Issue Analytics
- State:
- Created 3 years ago
- Comments:10 (5 by maintainers)
Top Results From Across the Web
Query Hangs while Parsing - Oracle Communities
In one of our databases, one of the Select query hangs at the parsing stage. The query was working fine few days back....
Read more >Parser hangs on query with multiple "case when" statements · Issue ...
Describe the bug Our users experience problems running queries which contain multiple "case when" statements: dbeaver/dbeaver#10704 To Reproduce Use the ...
Read more >MySQL workbench freezes for around 20 seconds on first ...
The program was unable to parse some of the files, presumably because they were generated by a previous version of MySQL workbench.
Read more >Bug #730739 “query parser error - bib search hangs on query with ...
I've pushed a branch which ignores empty query atoms (including those that have a - in front of them, and those that look...
Read more >Parse Server crashing when I running a query on a single row
this is a dupe of Node.js heap out of memory. You can try bumping up how much memory your node process has with ......
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Sorry. It’s a bit late.
I included a test for
This one now parses in <0.2 secs.
Thank you!