[ 
https://issues.apache.org/jira/browse/CALCITE-5135?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17537015#comment-17537015
 ] 

Jiajun Xie commented on CALCITE-5135:
-------------------------------------

[~julianhyde]  I think the reason for the failure of parsing is that the 
keyword is neither in ReservedFunctionName nor in nonReservedKeywords{*}.{*}

TIMESTAMP was missed besides DAY, so parse will fail

 
{code:java}
// Not support timestamp function syntax
sql("SELECT ^TIMESTAMP^('1969-07-20')") // 
    .fails; 
sql("SELECT ^TIMESTAMP^('2003-12-31 12:00:00','12:00:00')")
    .fails;
// Support timestamp literal syntax
final String expected2 = "SELECT TIMESTAMP '1980-01-01 00:00:00'\n"
    + "FROM `T`";
sql("select timestamp '1980-01-01 00:00:00' from t").ok(expected2);{code}
 

Here is TIMESTAMP function example:

[https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_timestamp]

[https://docs.oracle.com/javadb/10.6.2.1/ref/rreftimestampfunc.html]
 
Should I implement TIMESTAMP on this PR? DAY function is ready for review: 
[https://github.com/apache/calcite/pull/2795]

> Planner#parse can't parse DAY() function
> ----------------------------------------
>
>                 Key: CALCITE-5135
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5135
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.30.0
>            Reporter: Mitsunori Komatsu
>            Priority: Major
>
> Hi team,
> I might be missing something, but `Planner#parse` can't parse `DAY()` 
> function while it can parse other YEAR(), MONTH(), HOUR() and so on.
>  
> {code:java}
> import org.apache.calcite.sql.parser.SqlParseException;
> import org.apache.calcite.sql.validate.SqlValidator;
> import org.apache.calcite.tools.FrameworkConfig;
> import org.apache.calcite.tools.Frameworks;
> import org.apache.calcite.tools.Planner;
> public class Main {
>     public static void main(String[] args) throws SqlParseException {
>         FrameworkConfig config = Frameworks.newConfigBuilder().build();
>         {
>             Planner planner = Frameworks.getPlanner(config);
>             System.out.println(planner.parse("select months(t) from tbl"));
>         }
>         {
>             Planner planner = Frameworks.getPlanner(config);
>             System.out.println(planner.parse("select month(t) from tbl"));
>         }
>         {
>             Planner planner = Frameworks.getPlanner(config);
>             System.out.println(planner.parse("select hours(t) from tbl"));
>         }
>         {
>             Planner planner = Frameworks.getPlanner(config);
>             System.out.println(planner.parse("select hour(t) from tbl"));
>         }
>         {
>             Planner planner = Frameworks.getPlanner(config);
>             System.out.println(planner.parse("select days(t) from tbl"));
>         }
>         {
>             Planner planner = Frameworks.getPlanner(config);
>             // This throws `org.apache.calcite.sql.parser.SqlParseException: 
> Encountered "day" ...`
>             System.out.println(planner.parse("select day(t) from tbl"));
>         }
>     }
> }
>  {code}
> Is this a bug? Is there any way to parse DAY() function? Thanks.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to