.(SELECT CASE WHEN startdate > ROUND(EXTRACT('epoch' FROM NOW())) THEN false WHEN enddate < ROUND(EXTRACT('epoch' FROM NOW())) THEN false WHEN startdate < ROUND(EXTRACT('epoch' FROM NOW())) AND (enddate IS NULL OR (enddate IS NOT NULL AND (enddate > ROUND(EXTRACT('epoch' FROM NOW()))))) THEN true END)
at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:5901)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:5779)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:571)
at net.sf.jsqlparser.parser.CCJSqlParser.Select(CCJSqlParser.java:554)
at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:110)
at net.sf.jsqlparser.parser.CCJSqlParserManager.parse(CCJSqlParserManager.java:38)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'm trying to parse the folowing subquery:
.(SELECT CASE WHEN startdate > ROUND(EXTRACT('epoch' FROM NOW())) THEN false WHEN enddate < ROUND(EXTRACT('epoch' FROM NOW())) THEN false WHEN startdate < ROUND(EXTRACT('epoch' FROM NOW())) AND (enddate IS NULL OR (enddate IS NOT NULL AND (enddate > ROUND(EXTRACT('epoch' FROM NOW()))))) THEN true END)
gives the following error:
Caused by: net.sf.jsqlparser.parser.ParseException: Encountered "( SELECT CASE WHEN startdate > ROUND ( EXTRACT ( \'epoch\' FROM" at line 1, column 1.
Was expecting one of:
"WITH" ...
"SELECT" ...
"(" "SELECT" "ALL" ...
"(" "SELECT" "DISTINCT" ...
"(" "SELECT" "TOP" ...
"(" "SELECT" "*" ...
"(" "SELECT" <S_IDENTIFIER> ...
"(" "SELECT" <S_QUOTED_IDENTIFIER> ...
"(" "SELECT" "NULL" ...
"(" "SELECT" "CASE" "WHEN" "NULL" ...
"(" "SELECT" "CASE" "WHEN" "CASE" ...
"(" "SELECT" "CASE" "WHEN" "?" ...
"(" "SELECT" "CASE" "WHEN" "+" ...
"(" "SELECT" "CASE" "WHEN" "-" ...
"(" "SELECT" "CASE" "WHEN" "{fn" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> "." ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> "(" ...
"(" "SELECT" "CASE" "WHEN" <S_DOUBLE> ...
"(" "SELECT" "CASE" "WHEN" <S_INTEGER> ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> "*" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> "/" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> "+" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> "-" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> "NOT" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> "IN" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> "BETWEEN" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> "IS" ...
"(" "SELECT" "CASE" "WHEN" "NOT" ...
"(" "SELECT" "CASE" "WHEN" "EXISTS" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> "LIKE" ...
"(" "SELECT" "CASE" "WHEN" "ALL" ...
"(" "SELECT" "CASE" "WHEN" "ANY" ...
"(" "SELECT" "CASE" "WHEN" "SOME" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" "ALL" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" "ANY" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" "SOME" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" "NULL" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" "CASE" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" "?" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" "+" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" "-" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" "{fn" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "." ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" "NULL" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" "CASE" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" "?" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" "+" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" "-" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" "{fn" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "." ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "(" "NULL" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "(" "CASE" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "(" "?" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "(" "+" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "(" "-" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "(" "{fn" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "(" <S_IDENTIFIER> ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "(" <S_QUOTED_IDENTIFIER> ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "(" "REPLACE" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "(" <S_DOUBLE> ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "(" <S_INTEGER> ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "(" "(" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "(" <S_CHAR_LITERAL> "*" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "(" <S_CHAR_LITERAL> "/" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "(" <S_CHAR_LITERAL> "+" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "(" <S_CHAR_LITERAL> "-" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "(" <S_CHAR_LITERAL> "," ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "(" <S_CHAR_LITERAL> ")" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_DOUBLE> ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_INTEGER> ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "*" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "/" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "+" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "-" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> "," ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "(" <S_IDENTIFIER> ")" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_DOUBLE> ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "*" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "/" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "+" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "-" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "AND" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "OR" ...
"(" "SELECT" "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> "THEN" ...
"(" "SELECT" "CASE" "NULL" ...
"(" "SELECT" "CASE" "CASE" ...
"(" "SELECT" "CASE" "?" ...
"(" "SELECT" "CASE" "+" ...
"(" "SELECT" "CASE" "-" ...
"(" "SELECT" "CASE" "{fn" ...
"(" "SELECT" "CASE" <S_IDENTIFIER> ...
"(" "SELECT" "CASE" <S_QUOTED_IDENTIFIER> ...
"(" "SELECT" "CASE" "REPLACE" ...
"(" "SELECT" "CASE" <S_DOUBLE> ...
"(" "SELECT" "CASE" <S_INTEGER> ...
"(" "SELECT" "CASE" "(" ...
"(" "SELECT" "CASE" <S_CHAR_LITERAL> ...
"(" "SELECT" "CASE" "{d" ...
"(" "SELECT" "CASE" "{t" ...
"(" "SELECT" "CASE" "{ts" ...
"(" "SELECT" "?" ...
"(" "SELECT" "+" ...
"(" "SELECT" "-" ...
"(" "SELECT" "{fn" ...
"(" "SELECT" "REPLACE" ...
"(" "SELECT" <S_DOUBLE> ...
"(" "SELECT" <S_INTEGER> ...
"(" "SELECT" "(" ...
"(" "SELECT" <S_CHAR_LITERAL> ...
"(" "SELECT" "{d" ...
"(" "SELECT" "{t" ...
"(" "SELECT" "{ts" ...
at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:5901)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:5779)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:571)
at net.sf.jsqlparser.parser.CCJSqlParser.Select(CCJSqlParser.java:554)
at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:110)
at net.sf.jsqlparser.parser.CCJSqlParserManager.parse(CCJSqlParserManager.java:38)
there's a dot (.) at the very beginning of the statement: is that ok?
Don't mind the dot ;)