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

mukvin commented on KYLIN-5224:
-------------------------------

Hi [~flycoder],

Currently, Kylin is using spark SQL as the pushdown of the engine, and spark 
does not support the "limit ... offset ..." syntax.

So it does not work for your scene.

> kylin 4.0.1 不支持分页查询
> -------------------
>
>                 Key: KYLIN-5224
>                 URL: https://issues.apache.org/jira/browse/KYLIN-5224
>             Project: Kylin
>          Issue Type: Bug
>    Affects Versions: v4.0.1
>            Reporter: liulei
>            Priority: Major
>
> {
>     "code": "999",
>     "data": null,
>     "msg": " mismatched input 'offset' expecting \{<EOF>, ';'}(line 1, pos 
> 55)  == SQL == select * from MES_PROD.inspec_doc_report_data limit 10 offset 
> 5 -------------------------------------------------------^^^ ",
>     "stacktrace": "org.apache.kylin.rest.exception.InternalErrorException:  
> mismatched input 'offset' expecting \{<EOF>, ';'}(line 1, pos 55)  == SQL == 
> select * from MES_PROD.inspec_doc_report_data limit 10 offset 5 
> -------------------------------------------------------^^^ \n\tat 
> org.apache.kylin.rest.service.QueryService.doQueryWithCache(QueryService.java:497)\n\tat
>  
> org.apache.kylin.rest.service.QueryService.doQueryWithCache(QueryService.java:416)\n\tat
>  
> org.apache.kylin.rest.controller.QueryController.query(QueryController.java:93)\n\tat
>  sun.reflect.GeneratedMethodAccessor184.invoke(Unknown Source)\n\tat 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat
>  java.lang.reflect.Method.invoke(Method.java:498)\n\tat 
> org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\n\tat
>  
> org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)\n\tat
>  
> org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)\n\tat
>  
> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:854)\n\tat
>  
> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:765)\n\tat
>  
> org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)\n\tat
>  
> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)\n\tat
>  
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)\n\tat
>  
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)\n\tat
>  
> org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)\n\tat
>  javax.servlet.http.HttpServlet.service(HttpServlet.java:647)\n\tat 
> org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)\n\tat
>  javax.servlet.http.HttpServlet.service(HttpServlet.java:728)\n\tat 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)\n\tat
>  
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\n\tat
>  org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)\n\tat 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)\n\tat
>  
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)\n\tat
>  
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)\n\tat
>  
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:215)\n\tat
>  
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)\n\tat
>  
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)\n\tat
>  
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)\n\tat
>  
> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)\n\tat
>  
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)\n\tat
>  
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)\n\tat
>  
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)\n\tat
>  
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\n\tat
>  
> com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:209)\n\tat 
> com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:244)\n\tat 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)\n\tat
>  
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\n\tat
>  
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)\n\tat
>  
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)\n\tat
>  
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)\n\tat
>  
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:165)\n\tat
>  
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)\n\tat
>  
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)\n\tat
>  
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)\n\tat
>  
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)\n\tat
>  
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1195)\n\tat
>  
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:654)\n\tat
>  
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:317)\n\tat
>  
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat
>  
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat
>  
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n\tat
>  java.lang.Thread.run(Thread.java:748)\nCaused by: 
> org.apache.spark.sql.catalyst.parser.ParseException: \nmismatched input 
> 'offset' expecting \{<EOF>, ';'}(line 1, pos 55)\n\n== SQL ==\nselect * from 
> MES_PROD.inspec_doc_report_data limit 10 offset 
> 5\n-------------------------------------------------------^^^\n\n\tat 
> org.apache.spark.sql.catalyst.parser.ParseException.withCommand(ParseDriver.scala:255)\n\tat
>  
> org.apache.spark.sql.catalyst.parser.AbstractSqlParser.parse(ParseDriver.scala:124)\n\tat
>  
> org.apache.spark.sql.execution.SparkSqlParser.parse(SparkSqlParser.scala:49)\n\tat
>  
> org.apache.spark.sql.catalyst.parser.AbstractSqlParser.parsePlan(ParseDriver.scala:75)\n\tat
>  
> org.apache.spark.sql.SparkSession.$anonfun$sql$2(SparkSession.scala:613)\n\tat
>  
> org.apache.spark.sql.catalyst.QueryPlanningTracker.measurePhase(QueryPlanningTracker.scala:111)\n\tat
>  
> org.apache.spark.sql.SparkSession.$anonfun$sql$1(SparkSession.scala:613)\n\tat
>  org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:772)\n\tat 
> org.apache.spark.sql.SparkSession.sql(SparkSession.scala:610)\n\tat 
> org.apache.kylin.query.pushdown.SparkSqlClient$.executeSql(SparkSqlClient.scala:48)\n\tat
>  
> org.apache.kylin.query.pushdown.SparkSqlClient.executeSql(SparkSqlClient.scala)\n\tat
>  
> org.apache.kylin.query.pushdown.SparkSubmitter.submitPushDownTask(SparkSubmitter.java:34)\n\tat
>  
> org.apache.kylin.query.pushdown.PushDownRunnerSparkImpl.queryWithPushDown(PushDownRunnerSparkImpl.java:65)\n\tat
>  
> org.apache.kylin.query.pushdown.PushDownRunnerSparkImpl.executeQuery(PushDownRunnerSparkImpl.java:42)\n\tat
>  
> org.apache.kylin.query.util.PushDownExecutor.queryBySingleRunner(PushDownExecutor.java:151)\n\tat
>  
> org.apache.kylin.query.util.PushDownExecutor.pushDownQuery(PushDownExecutor.java:83)\n\tat
>  
> org.apache.kylin.query.util.PushDownUtil.tryPushDownSelectQuery(PushDownUtil.java:62)\n\tat
>  
> org.apache.kylin.rest.service.QueryService.pushDownQuery(QueryService.java:1086)\n\tat
>  
> org.apache.kylin.rest.service.QueryService.executeRequest(QueryService.java:1043)\n\tat
>  
> org.apache.kylin.rest.service.QueryService.queryWithSqlMassage(QueryService.java:721)\n\tat
>  
> org.apache.kylin.rest.service.QueryService.query(QueryService.java:224)\n\tat 
> org.apache.kylin.rest.service.QueryService.queryAndUpdateCache(QueryService.java:525)\n\tat
>  
> org.apache.kylin.rest.service.QueryService.doQueryWithCache(QueryService.java:480)\n\t...
>  77 more\n",
>     "exception": " mismatched input 'offset' expecting \{<EOF>, ';'}(line 1, 
> pos 55)  == SQL == select * from MES_PROD.inspec_doc_report_data limit 10 
> offset 5 -------------------------------------------------------^^^ ",
>     "url": "http://sqschadoop102:7070/kylin/api/query";
> }



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to