Hello, I have logged a CALCITE-5024 <https://issues.apache.org/jira/browse/CALCITE-5024> and submitted a pr-2732 <https://github.com/apache/calcite/pull/2732>, welcome suggestions and review.
Yanjing Wang <zhuangzixiao...@gmail.com> 于2022年2月25日周五 18:16写道: > When I override the RelDataTypeSystemImpl#getDefaultPrecision method to > force INTERVAL_HOUR type having precision 10, the validation passes, but > converting to rel fails. > > The problem is SqlLiteral.getValueAs(Long.class) will > invoke intervalToMillis and which invokes > intervalQualifier.evaluateIntervalLiteral(literal, > intervalQualifier.getParserPosition(), > RelDataTypeSystem.DEFAULT). > > and you can find that RelDataTypeSystem.DEFAULT has been hard coded. > > Yanjing Wang <zhuangzixiao...@gmail.com> 于2022年2月25日周五 16:39写道: > >> Hello, >> >> I found the calcite INTERVAL HOUR default type is HOUR(2), and the range >> is 0-99. >> for example: >> @Test void testIntervalHourRange() { >> String expr = "interval '100' hour"; >> expr(expr).ok(); >> } >> This test will throw CalciteContextException: From line 1, column 1 to >> line 1, column 19: Interval field value 100 exceeds precision of HOUR(2) >> field. >> >> I have tried this test on MYSQL, PG, BigQuery, SparkSql, all of them >> succeed and I think they may support out of range INTERVAL HOUR. >> >> In the PG doc, I found the piece "Functions justify_days and >> justify_hours are available for adjusting days and hours that overflow >> their normal ranges.". >> >> Would calcite support this automatic precision increase? >> >> >> >> >> >>