Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

[BUG] JSQLParser Version 5.3: LIMIT with subquery fails: Was expecting: "BY" #2359

Open
Labels
@johaasen

Description

Failing SQL Feature:

  • LIMIT with subquery cannot be parsed, although valid PostgreSQL
  • Error discovered during upgrade from JSQLParser 5.2 to 5.3 within a spring-boot / spring-data application
  • Online example
  • Seems to recognize a limit-by expression, although plain-limit
Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token:<EOF>
 at line X, column Y.
Was expecting:
 "BY"
	at app//net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:53111)
	at app//net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:52929)
	at app//net.sf.jsqlparser.parser.CCJSqlParser.LimitBy(CCJSqlParser.java:16031)
	at app//net.sf.jsqlparser.parser.CCJSqlParser.PlainSelect(CCJSqlParser.java:11805)
	at app//net.sf.jsqlparser.parser.CCJSqlParser.Select(CCJSqlParser.java:10144)
	at app//net.sf.jsqlparser.parser.CCJSqlParser.SelectWithWithItems(CCJSqlParser.java:10108)
	at app//net.sf.jsqlparser.parser.CCJSqlParser.SingleStatement(CCJSqlParser.java:503)
	at app//net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:413)

SQL Example:

-- self contained / anonymized example
WITH some_table AS (
 SELECT 1 AS some_column, 2 AS another_column
), another_table AS (
 SELECT 'some_value' AS condition_column
)
SELECT some_column
FROM some_table
ORDER BY some_column
-- this kind of limit expression is not supported
LIMIT (SELECT COUNT(*) FROM another_table WHERE condition_column = 'some_value')
-- real world-like rather more complex, should also be supported
-- LIMIT GREATEST(0, 100 - (SELECT COUNT(*) FROM another_table WHERE condition_column = 'some_value'))

Software Information:

  • JSqlParser version 5.3 / 5.4
  • PostgreSQL

Metadata

Metadata

Labels

Type

Projects

No projects

Milestone

No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      AltStyle によって変換されたページ (->オリジナル) /