Menu

Postgresql Extract function can't parse

2008-12-10
2012-12-07
  • Nobody/Anonymous

    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)

     
    • Leonardo Francalanci

      there's a dot (.) at the very beginning of the statement: is that ok?

       
      • Nobody/Anonymous

        Don't mind the dot ;)

         

Log in to post a comment.