[ 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)