morningman opened a new issue #363: Avg function on varchar column cause 
exception
URL: https://github.com/apache/incubator-doris/issues/363
 
 
   **Describe the bug**
   avg on varchar column throw exception:
   
   ```
   java.lang.IllegalStateException: Failed analysis after expr substitution.
           at com.baidu.palo.analysis.Expr.substituteList(Expr.java:640) 
~[palo-fe.jar:?]
           at 
com.baidu.palo.analysis.ExprSubstitutionMap.compose(ExprSubstitutionMap.java:103)
 ~[palo-fe.jar:?]
           at 
com.baidu.palo.analysis.SelectStmt.analyzeAggregation(SelectStmt.java:853) 
~[palo-fe.jar:?]
           at com.baidu.palo.analysis.SelectStmt.analyze(SelectStmt.java:348) 
~[palo-fe.jar:?]
           at com.baidu.palo.qe.StmtExecutor.analyze(StmtExecutor.java:395) 
[palo-fe.jar:?]
           at com.baidu.palo.qe.StmtExecutor.execute(StmtExecutor.java:200) 
[palo-fe.jar:?]
           at 
com.baidu.palo.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:159) 
[palo-fe.jar:?]
           at 
com.baidu.palo.qe.ConnectProcessor.dispatch(ConnectProcessor.java:249) 
[palo-fe.jar:?]
           at 
com.baidu.palo.qe.ConnectProcessor.processOnce(ConnectProcessor.java:380) 
[palo-fe.jar:?]
           at 
com.baidu.palo.qe.ConnectProcessor.loop(ConnectProcessor.java:390) 
[palo-fe.jar:?]
           at 
com.baidu.palo.qe.ConnectScheduler$LoopHandler.run(ConnectScheduler.java:170) 
[palo-fe.jar:?]
           at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
[?:1.8.0_131]
           at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
[?:1.8.0_131]
           at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
[?:1.8.0_131]
           at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
[?:1.8.0_131]
           at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
   Caused by: com.baidu.palo.common.AnalysisException: SUM requires a numeric 
parameter: sum(`k4`)
           at 
com.baidu.palo.analysis.FunctionCallExpr.analyzeBuiltinAggFunction(FunctionCallExpr.java:358)
 ~[palo-fe.jar:?]
           at 
com.baidu.palo.analysis.FunctionCallExpr.analyzeImpl(FunctionCallExpr.java:466) 
~[palo-fe.jar:?]
           at com.baidu.palo.analysis.Expr.analyze(Expr.java:354) 
~[palo-fe.jar:?]
           at com.baidu.palo.analysis.Expr.analyze(Expr.java:348) 
~[palo-fe.jar:?]
           at com.baidu.palo.analysis.Expr.trySubstitute(Expr.java:599) 
~[palo-fe.jar:?]
           at com.baidu.palo.analysis.Expr.trySubstituteList(Expr.java:629) 
~[palo-fe.jar:?]
           at com.baidu.palo.analysis.Expr.substituteList(Expr.java:638) 
~[palo-fe.jar:?]
           ... 15 more
   2018-11-28 17:23:36,909 WARN 216 [StmtExecutor.execute():279] execute 
Exception.
   com.baidu.palo.common.AnalysisException: Unexpected exception: Failed 
analysis after expr substitution.
           at com.baidu.palo.qe.StmtExecutor.analyze(StmtExecutor.java:469) 
~[palo-fe.jar:?]
           at com.baidu.palo.qe.StmtExecutor.execute(StmtExecutor.java:200) 
[palo-fe.jar:?]
           at 
com.baidu.palo.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:159) 
[palo-fe.jar:?]
           at 
com.baidu.palo.qe.ConnectProcessor.dispatch(ConnectProcessor.java:249) 
[palo-fe.jar:?]
           at 
com.baidu.palo.qe.ConnectProcessor.processOnce(ConnectProcessor.java:380) 
[palo-fe.jar:?]
           at 
com.baidu.palo.qe.ConnectProcessor.loop(ConnectProcessor.java:390) 
[palo-fe.jar:?]
           at 
com.baidu.palo.qe.ConnectScheduler$LoopHandler.run(ConnectScheduler.java:170) 
[palo-fe.jar:?]
           at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
[?:1.8.0_131]
           at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
[?:1.8.0_131]
           at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
[?:1.8.0_131]
           at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
[?:1.8.0_131]
           at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
   ```
   
   **To Reproduce**
   ```
   CREATE EXTERNAL TABLE `table_mysql` (
     `k1` date COMMENT "",
     `k2` int(11) COMMENT "",
     `k3` smallint(6) COMMENT "",
     `k4` varchar(2048) COMMENT "",
     `k5` datetime COMMENT ""
   ) ENGINE=MYSQL
   PROPERTIES (
   "host" = "127.0.0.1",
   "port" = "8239",
   "user" = "mysql_user",
   "password" = "",
   "database" = "mysql_db_test",
   "table" = "mysql_table_test"
   );
   
   select avg(k4) from table_mysql
   ```
   
   **Expected behavior**
   avg is not supported on varchar column. but we should make our mistake info 
more friendly.
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to