[ 
https://issues.apache.org/jira/browse/KYLIN-4497?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

xuekaiqi updated KYLIN-4497:
----------------------------
    Sprint:   (was: Sprint 53)

> PreparedStatement query do not support "limit ? offset ?"
> ---------------------------------------------------------
>
>                 Key: KYLIN-4497
>                 URL: https://issues.apache.org/jira/browse/KYLIN-4497
>             Project: Kylin
>          Issue Type: Bug
>          Components: Driver - JDBC
>            Reporter: Chao Long
>            Assignee: Chao Long
>            Priority: Major
>             Fix For: Backlog
>
>
> Query
> {code:java}
> String sql = "select part_dt, sum(price) from KYLIN_SALES group by part_dt 
> order by part_dt limit ? offset ?";
> conn = getConnection();
> statement = conn.prepareStatement(sql);
> statement.setInt(1, 10);
> statement.setInt(2, 0);
> {code}
> Error log
> {code:java}
> 2020-05-15 09:32:36,062 ERROR [Query b87327f4-7299-32f2-4a2e-c19795a42288-44] 
> service.QueryService:542 : Exception while executing query
> java.sql.SQLException: Error while preparing statement [select part_dt, 
> sum(price) from KYLIN_SALES group by part_dt order by part_dt limit ? offset 
> ?]
>         at org.apache.calcite.avatica.Helper.createException(Helper.java:56)
>         at org.apache.calcite.avatica.Helper.createException(Helper.java:41)
>         at 
> org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement_(CalciteConnectionImpl.java:210)
>         at 
> org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement(CalciteConnectionImpl.java:192)
>         at 
> org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement(CalciteConnectionImpl.java:89)
>         at 
> org.apache.calcite.avatica.AvaticaConnection.prepareStatement(AvaticaConnection.java:175)
>         at 
> org.apache.kylin.rest.service.QueryService.createPreparedContext(QueryService.java:1262)
>         at 
> org.apache.kylin.rest.service.QueryService.access$600(QueryService.java:141)
>         at 
> org.apache.kylin.rest.service.QueryService$PreparedContextFactory.create(QueryService.java:1301)
>         at 
> org.apache.kylin.rest.service.QueryService$PreparedContextFactory.create(QueryService.java:1296)
>         at 
> org.apache.commons.pool2.BaseKeyedPooledObjectFactory.makeObject(BaseKeyedPooledObjectFactory.java:60)
>         at 
> org.apache.commons.pool2.impl.GenericKeyedObjectPool.create(GenericKeyedObjectPool.java:1064)
>         at 
> org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:358)
>         at 
> org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:281)
>         at 
> org.apache.kylin.rest.service.QueryService.queryWithSqlMassage(QueryService.java:680)
>         at 
> org.apache.kylin.rest.service.QueryService.query(QueryService.java:219)
>         at 
> org.apache.kylin.rest.service.QueryService.queryAndUpdateCache(QueryService.java:480)
>         at 
> org.apache.kylin.rest.service.QueryService.doQueryWithCache(QueryService.java:440)
>         at 
> org.apache.kylin.rest.service.QueryService.doQueryWithCache(QueryService.java:378)
>         at 
> org.apache.kylin.rest.controller.QueryController.query(QueryController.java:93)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:498)
>         at 
> org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
>         at 
> org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>         at 
> com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:209)
>         at 
> com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:244)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>         at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
>         at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
>         at 
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)
>         at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:165)
>         at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
>         at 
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
>         at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
>         at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)
>         at 
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1195)
>         at 
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:654)
>         at 
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:317)
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>         at 
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>         at java.lang.Thread.run(Thread.java:748)
> Caused by: java.lang.ClassCastException: 
> org.apache.calcite.rex.RexDynamicParam cannot be cast to 
> org.apache.calcite.rex.RexLiteral
>         at 
> org.apache.kylin.query.relnode.OLAPLimitRel.implementOLAP(OLAPLimitRel.java:88)
>         at 
> org.apache.kylin.query.relnode.OLAPRel$OLAPImplementor.visitChild(OLAPRel.java:84)
>         at 
> org.apache.kylin.query.relnode.OLAPToEnumerableConverter.implement(OLAPToEnumerableConverter.java:77)
>         at 
> org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.implementRoot(EnumerableRelImplementor.java:103)
>         at 
> org.apache.calcite.adapter.enumerable.EnumerableInterpretable.toBindable(EnumerableInterpretable.java:92)
>         at 
> org.apache.calcite.prepare.CalcitePrepareImpl$CalcitePreparingStmt.implement(CalcitePrepareImpl.java:1278)
>         at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:331)
>         at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:230)
>         at 
> org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:796)
>         at 
> org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:655)
>         at 
> org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:618)
>         at 
> org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:221)
>         at 
> org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement_(CalciteConnectionImpl.java:203)
>         ... 93 more
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to