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

Julian Hyde commented on CALCITE-2974:
--------------------------------------

That seems pretty compelling.

Now, if we were to put code for simplifying casts into RexSimplify, now we have 
the same code in two places. How do we make sure that the code stays consistent?

> Timestamp conversion performance can be improved
> ------------------------------------------------
>
>                 Key: CALCITE-2974
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2974
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 1.19.0
>            Reporter: Valeriy Trofimov
>            Priority: Major
>              Labels: easyfix, performance
>             Fix For: next
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> RexSimplify.simplifyCast() is slow when converting a string to SQL Timestamp 
> value. The slowness is caused by this line:
> {code:java}
> executor.reduce(rexBuilder, ImmutableList.of(e), reducedValues);
> {code}
> Debugging this code line with my team showed that for timestamp conversion it 
> loads a pre-compiled conversion code, which makes it slow. My team proposes 
> to replace this line with the following code that greately improves 
> performance:
> {code:java}
> if (typeName == SqlTypeName.CHAR && e.getType().getSqlTypeName() == 
> SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE) {
>     if (literal.getValue() instanceof NlsString) {
>         String timestampStr = ((NlsString) literal.getValue()).getValue();
>         Long timestampLong = 
> SqlFunctions.toTimestampWithLocalTimeZone(timestampStr);
>         reducedValues.add(rexBuilder.makeLiteral(timestampLong, e.getType(), 
> true));
>     }
> }
> if (reducedValues.isEmpty()) {
>     executor.reduce(rexBuilder, ImmutableList.of(e), reducedValues);
> }
> {code}
> Let us know if we can submit a pull request with this code change or if we've 
> missed anything. Do you know the reason behind using a pre-compiled code for 
> timestamp conversion?



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to