running-elephant / datart

Datart is a next generation Data Visualization Open Platform
https://running-elephant.github.io/datart-docs/
Apache License 2.0
1.98k stars 590 forks source link

phoenix为数据源,筛选中选择自定义后报错 #986

Closed jinfeng202111 closed 2 years ago

jinfeng202111 commented 2 years ago

phoenix为数据源,创建图表后,【筛选】中选择【自定义】,选择【从当前字段增加行】,选择【显示】,最后点击【显示】就会报错,如果从【常规】中选择就不会报错。选择后的截图: 1646983945(1) 报错截图: 1646983875(1)

报错日志: ERROR datart.server.config.WebExceptionHandler : ERROR 602 (42P00): Syntax error. Missing "LPAREN" at line 1, column 503. org.apache.phoenix.exception.PhoenixParserException: ERROR 602 (42P00): Syntax error. Missing "LPAREN" at line 1, column 503. at org.apache.phoenix.exception.PhoenixParserException.newException(PhoenixParserException.java:33) at org.apache.phoenix.parse.SQLParser.parseStatement(SQLParser.java:111) at org.apache.phoenix.jdbc.PhoenixStatement$PhoenixStatementParser.parseStatement(PhoenixStatement.java:1657) at org.apache.phoenix.jdbc.PhoenixStatement.parseStatement(PhoenixStatement.java:1740) at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:1807) at com.alibaba.druid.pool.DruidPooledStatement.executeQuery(DruidPooledStatement.java:296) at datart.data.provider.jdbc.adapters.JdbcDataProviderAdapter.execute(JdbcDataProviderAdapter.java:213) at datart.data.provider.jdbc.adapters.JdbcDataProviderAdapter.executeOnSource(JdbcDataProviderAdapter.java:381) at datart.data.provider.jdbc.adapters.JdbcDataProviderAdapter.execute(JdbcDataProviderAdapter.java:234) at datart.data.provider.JdbcDataProvider.execute(JdbcDataProvider.java:89) at datart.data.provider.ProviderManager.run(ProviderManager.java:231) at datart.data.provider.optimize.DataProviderExecuteOptimizer.runOptimize(DataProviderExecuteOptimizer.java:47) at datart.data.provider.ProviderManager.execute(ProviderManager.java:119) at datart.server.service.impl.DataProviderServiceImpl.execute(DataProviderServiceImpl.java:258) at datart.server.controller.DataProviderController.execute(DataProviderController.java:101) at sun.reflect.GeneratedMethodAccessor221.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:197) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) at javax.servlet.http.HttpServlet.service(HttpServlet.java:652) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:887) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1684) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 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: org.apache.phoenix.shaded.org.antlr.runtime.MissingTokenException: null at org.apache.phoenix.parse.PhoenixSQLParser.recoverFromMismatchedToken(PhoenixSQLParser.java:374) at org.apache.phoenix.shaded.org.antlr.runtime.BaseRecognizer.match(BaseRecognizer.java:115) at org.apache.phoenix.parse.PhoenixSQLParser.not_expression(PhoenixSQLParser.java:7893) at org.apache.phoenix.parse.PhoenixSQLParser.and_expression(PhoenixSQLParser.java:7732) at org.apache.phoenix.parse.PhoenixSQLParser.or_expression(PhoenixSQLParser.java:7650) at org.apache.phoenix.parse.PhoenixSQLParser.expression(PhoenixSQLParser.java:7615) at org.apache.phoenix.parse.PhoenixSQLParser.single_select(PhoenixSQLParser.java:5234) at org.apache.phoenix.parse.PhoenixSQLParser.unioned_selects(PhoenixSQLParser.java:5316) at org.apache.phoenix.parse.PhoenixSQLParser.select_node(PhoenixSQLParser.java:5382) at org.apache.phoenix.parse.PhoenixSQLParser.oneStatement(PhoenixSQLParser.java:841) at org.apache.phoenix.parse.PhoenixSQLParser.statement(PhoenixSQLParser.java:524) at org.apache.phoenix.parse.SQLParser.parseStatement(SQLParser.java:108) ... 62 common frames omitted

Cuiyansong commented 2 years ago

@jinfeng202111 请提供下请求Query参数,我们这边看一下

jinfeng202111 commented 2 years ago

@jinfeng202111 请提供下请求Query参数,我们这边看一下

您是想看下执行时的sql对吧

Cuiyansong commented 2 years ago

@jinfeng202111 请提供下请求Query参数,我们这边看一下

您是想看下执行时的sql对吧

报错API请求的参数

jinfeng202111 commented 2 years ago

@jinfeng202111 请提供下请求Query参数,我们这边看一下

您是想看下执行时的sql对吧

报错API请求的参数

已解决,我将数据源的服务端聚合开启后就解决了 b9949f8b162e9084ed99172329e05c8

scottsut commented 2 years ago

@jinfeng202111 服务端聚合的支持场景是有限的,它使用 datart 服务器的内存进行计算,数据量大的情况下是不适合的,建议还是从正确的角度来定位和解决问题

jinfeng202111 commented 2 years ago

@jinfeng202111 服务端聚合的支持场景是有限的,它使用 datart 服务器的内存进行计算,数据量大的情况下是不适合的,建议还是从正确的角度来定位和解决问题

我使用Mysql作为jdbc数据源时,数据源处没有开启服务端聚合,对于字符型的字段【筛选】中选择【自定义】,选择【从当前字段增加行】,选择【显示】,最后点击【显示】就没有问题。而改为phoenix作为数据源时其他情况都相同,就会报错,麻烦跟进下这个bug哈

jinfeng202111 commented 2 years ago

@jinfeng202111 服务端聚合的支持场景是有限的,它使用 datart 服务器的内存进行计算,数据量大的情况下是不适合的,建议还是从正确的角度来定位和解决问题

我使用Mysql作为jdbc数据源时,数据源处没有开启服务端聚合,对于字符型的字段【筛选】中选择【自定义】,选择【从当前字段增加行】,选择【显示】,最后点击【显示】就没有问题。而改为phoenix作为数据源时其他情况都相同,就会报错,麻烦跟进下这个bug哈

接上, 已解决,mysql和phoenix数据源,都没有开启服务端聚合,对于字符型的字段【筛选】中选择【自定义】时,如果不选一个默认值,mysql和phoenix都会报错,选了后就都不会报错。