Uploaded image for project: 'Calcite'
  1. Calcite
  2. CALCITE-1673

Query with ORDER BY or GROUP BY on TIMESTAMP column throws CompileException

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.11.0
    • Fix Version/s: 1.12.0
    • Component/s: core
    • Labels:
      None
    • Flags:
      Important

      Description

      Getting below error while executing the 'order by' or 'group by' queries with timestamp data type column.

      Caused by: org.codehaus.commons.compiler.CompileException: Line 11, Column 76: No applicable constructor/method found for actual parameters "java.lang.Object"; candidates are: "public static java.sql.Timestamp org.apache.calcite.runtime.SqlFunctions.internalToTimestamp(java.lang.Long)", "public static java.sql.Timestamp org.apache.calcite.runtime.SqlFunctions.internalToTimestamp(long)"
      

      I could able to reproduce this problem in CsvTests.
      Fire a test with query "select * from \"DATE\" order by \"JOINTIMES\"" you will see test failing with exception.

      Root cause and fix:
      The fix for this to overload the SqlFunctions.internalToTimestamp() to accept the timestamp or object and return timestamp value. I tested and it's working

      Stack trace
      at org.apache.calcite.avatica.Helper.wrap(Helper.java:37)
      	at org.apache.calcite.adapter.enumerable.EnumerableInterpretable.toBindable(EnumerableInterpretable.java:108)
      	at org.apache.calcite.prepare.CalcitePrepareImpl$CalcitePreparingStmt.implement(CalcitePrepareImpl.java:1233)
      	at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:303)
      	at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:200)
      	at org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:761)
      	at org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:617)
      	at org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:587)
      	at org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:214)
      	at org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:595)
      	at org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:615)
      	at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:148)
      	... 29 more
      Caused by: org.codehaus.commons.compiler.CompileException: Line 11, Column 76: No applicable constructor/method found for actual parameters "java.lang.Object"; candidates are: "public static java.sql.Timestamp org.apache.calcite.runtime.SqlFunctions.internalToTimestamp(java.lang.Long)", "public static java.sql.Timestamp org.apache.calcite.runtime.SqlFunctions.internalToTimestamp(long)"
      	at org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:10092)
      	at org.codehaus.janino.UnitCompiler.findMostSpecificIInvocable(UnitCompiler.java:7506)
      	at org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:7376)
      	at org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:7280)
      	at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:3850)
      	at org.codehaus.janino.UnitCompiler.access$6900(UnitCompiler.java:183)
      	at org.codehaus.janino.UnitCompiler$10.visitMethodInvocation(UnitCompiler.java:3251)
      	at org.codehaus.janino.Java$MethodInvocation.accept(Java.java:3974)
      	at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:3278)
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                julianhyde Julian Hyde
                Reporter:
                Gkairi Gangadhar Kairi
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - 2h
                  2h
                  Remaining:
                  Remaining Estimate - 2h
                  2h
                  Logged:
                  Time Spent - Not Specified
                  Not Specified