Hokyung Song created KYLIN-3347: ----------------------------------- Summary: {fn CURRENT_TIMESTAMP(0)} QueryService Exception Key: KYLIN-3347 URL: https://issues.apache.org/jira/browse/KYLIN-3347 Project: Kylin Issue Type: Bug Components: Query Engine Affects Versions: v2.3.1, v2.3.0 Reporter: Hokyung Song
Hello. :) I'm trying to upgrade kylin version to v2.3.x But, when I use cacite function query, it occured error. (v2.2.0 is ok) In my opinion, the reason is that regular expression matcher of *DefaultQueryTransformer.java* has changed. I will contribute a path on this problem soon. thanks. stack trace as follows (v2.3.0) {code:java} 2018-04-23 14:22:12,475 INFO [Query f8811967-be03-4fd0-b11f-85c68de0abcb-50] service.QueryService:429 : The original query: SELECT {fn CURRENT_TIMESTAMP(0)} AS "COL" 2018-04-23 14:22:12,526 ERROR [Query f8811967-be03-4fd0-b11f-85c68de0abcb-50] runtime.CalciteException:59 : org.apache.calcite.sql.validate.SqlValidatorException: Function '{fn CURRENT_TIMESTAMP}' is not defined 2018-04-23 14:22:12,535 ERROR [Query f8811967-be03-4fd0-b11f-85c68de0abcb-50] runtime.CalciteException:61 : org.apache.calcite.runtime.CalciteContextException: From line 1, column 8 to line 1, column 32: Function '{fn CURRENT_TIMESTAMP}' is not defined 2018-04-23 14:22:12,535 ERROR [Query f8811967-be03-4fd0-b11f-85c68de0abcb-50] service.QueryService:536 : Exception while executing query java.sql.SQLException: Error while preparing statement [SELECT {fn CURRENT_TIMESTAMP(0)} AS "COL"] 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:203) at org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement(CalciteConnectionImpl.java:185) at org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement(CalciteConnectionImpl.java:86) at org.apache.calcite.avatica.AvaticaConnection.prepareStatement(AvaticaConnection.java:168) at org.apache.kylin.rest.service.QueryService.getPrepareOnlySqlResponse(QueryService.java:994) at org.apache.kylin.rest.service.QueryService.execute(QueryService.java:916) at org.apache.kylin.rest.service.QueryService.queryWithSqlMassage(QueryService.java:661) at org.apache.kylin.rest.service.QueryService.query(QueryService.java:188) at org.apache.kylin.rest.service.QueryService.queryAndUpdateCache(QueryService.java:496) at org.apache.kylin.rest.service.QueryService.doQueryWithCache(QueryService.java:455) at org.apache.kylin.rest.service.QueryService.doQueryWithCache(QueryService.java:390) at org.apache.kylin.rest.controller.QueryController.prepareQuery(QueryController.java:99) at sun.reflect.GeneratedMethodAccessor138.invoke(Unknown Source) 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.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 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:317) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:215) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177) Caused by: org.apache.calcite.runtime.CalciteContextException: From line 1, column 8 to line 1, column 32: Function '{fn CURRENT_TIMESTAMP}' is not defined at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463) at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:804) at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:789) at org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:4393) at org.apache.calcite.sql.SqlJdbcFunctionCall.rewriteCall(SqlJdbcFunctionCall.java:440) at org.apache.calcite.sql.validate.SqlValidatorImpl.performUnconditionalRewrites(SqlValidatorImpl.java:1119) at org.apache.calcite.sql.validate.SqlValidatorImpl.performUnconditionalRewrites(SqlValidatorImpl.java:1097) at org.apache.calcite.sql.validate.SqlValidatorImpl.performUnconditionalRewrites(SqlValidatorImpl.java:1126) at org.apache.calcite.sql.validate.SqlValidatorImpl.performUnconditionalRewrites(SqlValidatorImpl.java:1097) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:888) at org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:605) at org.apache.calcite.prepare.CalcitePrepareImpl.parse_(CalcitePrepareImpl.java:297) at org.apache.calcite.prepare.CalcitePrepareImpl.parse(CalcitePrepareImpl.java:267) at org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:630) at org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:617) at org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:214) at org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement_(CalciteConnectionImpl.java:196) ... 85 more Caused by: org.apache.calcite.sql.validate.SqlValidatorException: Function '{fn CURRENT_TIMESTAMP}' is not defined at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463) at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:572) ... 101 more 2018-04-23 14:22:12,537 INFO [Query f8811967-be03-4fd0-b11f-85c68de0abcb-50] service.QueryService:328 : ==========================[QUERY]=============================== Query Id: f8811967-be03-4fd0-b11f-85c68de0abcb SQL: SELECT {fn CURRENT_TIMESTAMP(0)} AS "COL" User: ADMIN Success: false Duration: 0.073 Project: Sandbox Realization Names: [] Cuboid Ids: [] Total scan count: 0 Total scan bytes: 0 Result row count: 0 Accept Partial: false Is Partial Result: false Hit Exception Cache: false Storage cache used: false Is Query Push-Down: false Is Prepare: true Trace URL: null Message: Error while preparing statement [SELECT {fn CURRENT_TIMESTAMP(0)} AS "COL"] ==========================[QUERY]==============================={code} (on the other hand, at v2.2.0) {code:java} 2018-04-23 11:48:07,731 INFO [Query 341498a0-251b-4720-96ba-d99c43effd74-132] service.QueryService:397 : The original query: SELECT {fn CURRENT_TIMESTAMP(0)} AS "COL" 2018-04-23 11:48:07,732 INFO [Query 341498a0-251b-4720-96ba-d99c43effd74-132] schema.OLAPSchemaFactory:116 : Schema json:{ .... 2018-04-23 11:48:07,706 INFO [Query 194d5044-48a0-4b2e-96ab-a0a987b23b0a-149] service.QueryService:547 : The corrected query: SELECT CURRENT_TIMESTAMP(0) AS "COL" 2018-04-23 11:48:07,710 INFO [Query 194d5044-48a0-4b2e-96ab-a0a987b23b0a-149] service.QueryService:964 : Processed rows for each storageContext: 2018-04-23 11:48:07,711 INFO [Query 194d5044-48a0-4b2e-96ab-a0a987b23b0a-149] service.QueryService:428 : Stats of SQL response: isException: false, duration: 13, total scan count 0 2018-04-23 11:48:07,711 DEBUG [Query 194d5044-48a0-4b2e-96ab-a0a987b23b0a-149] util.CheckUtil:35 : query is too lightweight with duration: 13 (threshold 2000), scan count: 0 (threshold 10240), scan bytes: 0 (threshold 1048576) 2018-04-23 11:48:07,712 DEBUG [Query 194d5044-48a0-4b2e-96ab-a0a987b23b0a-149] security.KylinAclPermissionEvaluator:97 : Checking permission 'ADMINISTRATION' for object 'org.springframework.security.acls.domain.ObjectIdentityImpl[Type: org.apache.kylin.metadata.project.ProjectInstance; Identifier: fdc7c850-115e-4209-a8da-b1fc874ae76c]' 2018-04-23 11:48:07,715 DEBUG [Query 194d5044-48a0-4b2e-96ab-a0a987b23b0a-149] security.KylinAclPermissionEvaluator:120 : Returning false - no ACLs apply for this principal 2018-04-23 11:48:07,716 DEBUG [Query 194d5044-48a0-4b2e-96ab-a0a987b23b0a-149] security.KylinAclPermissionEvaluator:97 : Checking permission 'MANAGEMENT' for object 'org.springframework.security.acls.domain.ObjectIdentityImpl[Type: org.apache.kylin.metadata.project.ProjectInstance; Identifier: fdc7c850-115e-4209-a8da-b1fc874ae76c]' 2018-04-23 11:48:07,718 DEBUG [Query 194d5044-48a0-4b2e-96ab-a0a987b23b0a-149] security.KylinAclPermissionEvaluator:120 : Returning false - no ACLs apply for this principal 2018-04-23 11:48:07,719 DEBUG [Query 194d5044-48a0-4b2e-96ab-a0a987b23b0a-149] security.KylinAclPermissionEvaluator:97 : Checking permission 'OPERATION' for object 'org.springframework.security.acls.domain.ObjectIdentityImpl[Type: org.apache.kylin.metadata.project.ProjectInstance; Identifier: fdc7c850-115e-4209-a8da-b1fc874ae76c]' 2018-04-23 11:48:07,721 DEBUG [Query 194d5044-48a0-4b2e-96ab-a0a987b23b0a-149] security.KylinAclPermissionEvaluator:120 : Returning false - no ACLs apply for this principal 2018-04-23 11:48:07,721 DEBUG [Query 194d5044-48a0-4b2e-96ab-a0a987b23b0a-149] security.KylinAclPermissionEvaluator:97 : Checking permission 'READ' for object 'org.springframework.security.acls.domain.ObjectIdentityImpl[Type: org.apache.kylin.metadata.project.ProjectInstance; Identifier: fdc7c850-115e-4209-a8da-b1fc874ae76c]' 2018-04-23 11:48:07,723 DEBUG [Query 194d5044-48a0-4b2e-96ab-a0a987b23b0a-149] security.KylinAclPermissionEvaluator:107 : Access is granted 2018-04-23 11:48:07,723 INFO [Query 194d5044-48a0-4b2e-96ab-a0a987b23b0a-149] service.QueryService:313 : ==========================[QUERY]=============================== Query Id: 194d5044-48a0-4b2e-96ab-a0a987b23b0a SQL: SELECT {fn CURRENT_TIMESTAMP(0)} AS "COL" User: ANALYST Success: true Duration: 0.013 Project: DA Realization Names: [] Cuboid Ids: [] Total scan count: 0 Total scan bytes: 0 Result row count: 0 Accept Partial: false Is Partial Result: false Hit Exception Cache: false Storage cache used: false Is Query Push-Down: false Message: null ==========================[QUERY]==============================={code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)