Hi, I am using kylin 1.6 and facing a wired issue with Cube description. Basically, I have two Cube desc having same dimensions, measures, rowkeys, aggregation groups. The only difference is the ordering of keys in them. With first cube description, my queries are working and with second i am getting following exception:
java.sql.SQLException: Error while executing SQL "SELECT sum(ss_ext_sales_price) total_sales, sum(ss_ext_discount_amt) total_discount, s_store_id, s_store_name FROM store_sales LEFT JOIN store ON (store_sales.ss_store_sk = store.s_store_sk) GROUP BY s_store_id, s_store_name ORDER BY total_sales, total_discount, s_store_id, s_store_name LIMIT 50000": null at org.apache.calcite.avatica.Helper.createException(Helper.java:56) at org.apache.calcite.avatica.Helper.createException(Helper.java:41) at org.apache.calcite.avatica.AvaticaStatement.executeInternal( AvaticaStatement.java:147) at org.apache.calcite.avatica.AvaticaStatement.executeQuery( AvaticaStatement.java:208) at org.apache.kylin.rest.service.QueryService.execute( QueryService.java:538) at org.apache.kylin.rest.service.QueryService.queryWithSqlMassage( QueryService.java:452) at org.apache.kylin.rest.service.QueryService.query( QueryService.java:151) at org.apache.kylin.rest.service.QueryService.doQueryWithCache( QueryService.java:354) at org.apache.kylin.rest.controller.QueryController. query(QueryController.java:69) 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:221) at org.springframework.web.method.support.InvocableHandlerMethod. invokeForRequest(InvocableHandlerMethod.java:136) at org.springframework.web.servlet.mvc.method.annotation. ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod. java:104) at org.springframework.web.servlet.mvc.method.annotation. RequestMappingHandlerAdapter.invokeHandleMethod( RequestMappingHandlerAdapter.java:743) at org.springframework.web.servlet.mvc.method.annotation. RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter. java:672) at org.springframework.web.servlet.mvc.method. AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:82) at org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:933) at org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:867) at org.springframework.web.servlet.FrameworkServlet.processRequest( FrameworkServlet.java:951) at org.springframework.web.servlet.FrameworkServlet. doPost(FrameworkServlet.java:853) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) at org.springframework.web.servlet.FrameworkServlet. service(FrameworkServlet.java:827) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter( WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:208) at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.access.intercept. FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) at org.springframework.security.web.access.intercept. FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.access. ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.authentication. AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter. java:113) at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.servletapi. SecurityContextHolderAwareRequestFilter.doFilter( SecurityContextHolderAwareRequestFilter.java:54) at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java:342) at io.infoworks.security.jwt.JwtAuthenticationTokenFilter. successfulAuthentication(JwtAuthenticationTokenFilter.java:64) at org.springframework.security.web.authentication. AbstractAuthenticationProcessingFilter.doFilter( AbstractAuthenticationProcessingFilter.java:219) at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.context. SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilt er.java:87) at org.springframework.security.web.FilterChainProxy$ VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.FilterChainProxy. doFilterInternal(FilterChainProxy.java:192) at org.springframework.security.web.FilterChainProxy.doFilter( FilterChainProxy.java:160) at org.springframework.web.filter.DelegatingFilterProxy. invokeDelegate(DelegatingFilterProxy.java:343) at org.springframework.web.filter.DelegatingFilterProxy.doFilter( DelegatingFilterProxy.java:260) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:241) 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:220) at org.apache.catalina.core.StandardContextValve.invoke( StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke( AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke( AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service( CoyoteAdapter.java:436) at org.apache.coyote.http11.AbstractHttp11Processor.process( AbstractHttp11Processor.java:1078) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler. process(AbstractProtocol.java:625) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor. run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.IllegalStateException at org.apache.kylin.gridtable.GTInfo.validateColumnBlocks( GTInfo.java:198) at org.apache.kylin.gridtable.GTInfo.validate(GTInfo.java:167) at org.apache.kylin.gridtable.GTInfo$Builder.build(GTInfo.java:269) at org.apache.kylin.cube.gridtable.CubeGridTable. newGTInfo(CubeGridTable.java:53) at org.apache.kylin.cube.gridtable.CubeGridTable. newGTInfo(CubeGridTable.java:36) at org.apache.kylin.storage.gtrecord.CubeScanRangePlanner. <init>(CubeScanRangePlanner.java:88) at org.apache.kylin.storage.gtrecord.CubeSegmentScanner.< init>(CubeSegmentScanner.java:74) at org.apache.kylin.storage.gtrecord.GTCubeStorageQueryBase.search( GTCubeStorageQueryBase.java:130) at org.apache.kylin.query.enumerator.OLAPEnumerator. queryStorage(OLAPEnumerator.java:114) at org.apache.kylin.query.enumerator.OLAPEnumerator. moveNext(OLAPEnumerator.java:65) at Baz$1$1.moveNext(Unknown Source) at org.apache.calcite.linq4j.EnumerableDefaults.groupBy_( EnumerableDefaults.java:823) at org.apache.calcite.linq4j.EnumerableDefaults.groupBy( EnumerableDefaults.java:758) at org.apache.calcite.linq4j.DefaultEnumerable.groupBy( DefaultEnumerable.java:302) at Baz.bind(Unknown Source) at org.apache.calcite.jdbc.CalcitePrepare$ CalciteSignature.enumerable(CalcitePrepare.java:327) at org.apache.calcite.jdbc.CalciteConnectionImpl.enumerable( CalciteConnectionImpl.java:282) at org.apache.calcite.jdbc.CalciteMetaImpl._createIterable( CalciteMetaImpl.java:553) at org.apache.calcite.jdbc.CalciteMetaImpl.createIterable( CalciteMetaImpl.java:544) at org.apache.calcite.avatica.AvaticaResultSet.execute( AvaticaResultSet.java:187) at org.apache.calcite.jdbc.CalciteResultSet.execute( CalciteResultSet.java:65) at org.apache.calcite.jdbc.CalciteResultSet.execute( CalciteResultSet.java:44) at org.apache.calcite.avatica.AvaticaConnection$1.execute( AvaticaConnection.java:605) at org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute( CalciteMetaImpl.java:599) at org.apache.calcite.avatica.AvaticaConnection. prepareAndExecuteInternal(AvaticaConnection.java:613) at org.apache.calcite.avatica.AvaticaStatement.executeInternal( AvaticaStatement.java:139) ... 68 more *cube desc 1: * https://gist.github.com/shaipraj/a09991ad1599bca5f43b38c5565dbebe *cube desc 2: * https://gist.github.com/shaipraj/527cec8f03d55234c63d80b06353b7de When i reordered the rowkeys in cube desc 2, my queries worked. My question, are these rowkeys needs to be in order? if yes then on what basis? and if not then what this exception is about? Thanks