kingbabingge commented on issue #18660:
URL: https://github.com/apache/doris/issues/18660#issuecomment-1558522362

   ```java
   
   // metabase l链接doris 执行一个设置语句,
   set sql_mode = concat(@@sql_mode,',STRICT_TRANS_TABLES');
   
   
   /** 
    * -FE 异常
   2023-05-22 08:37:40,443 WARN (mysql-nio-pool-1101|658532) 
[StmtExecutor.execute():589] execute Exception. stmt[93866, 
e2855042a75b4e68-a997203f6f74e72c]
   org.apache.doris.common.AnalysisException: errCode = 2, detailMessage = Set 
statement does't support computing expr:concat('STRICT_TRANS_TABLES', 
',STRICT_TRANS_TABLES')
        at org.apache.doris.analysis.SetVar.analyze(SetVar.java:114) 
~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.analysis.SetStmt.analyze(SetStmt.java:54) 
~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.analyze(StmtExecutor.java:749) 
~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:446) 
~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:409) 
~[doris-fe.jar:1.2-SNAPSHOT]
        at 
org.apache.doris.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:330) 
~[doris-fe.jar:1.2-SNAPSHOT]
        at 
org.apache.doris.qe.ConnectProcessor.dispatch(ConnectProcessor.java:471) 
~[doris-fe.jar:1.2-SNAPSHOT]
        at 
org.apache.doris.qe.ConnectProcessor.processOnce(ConnectProcessor.java:698) 
~[doris-fe.jar:1.2-SNAPSHOT]
        at 
org.apache.doris.mysql.ReadListener.lambda$handleEvent$0(ReadListener.java:52) 
~[doris-fe.jar:1.2-SNAPSHOT]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
~[?:1.8.0_362]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
~[?:1.8.0_362]
        at java.lang.Thread.run(Thread.java:750) ~[?:1.8.0_362]
   
   
   
   
   
   // 抛出异常
   // org.apache.doris.analysis.Expr#getResultValue
   
       final Expr literalExpr = value.getResultValue(false);
           if (!(literalExpr instanceof LiteralExpr)) {
               throw new AnalysisException("Set statement does't support 
computing expr:" + literalExpr.toSql());
           }
   
   
    */
   
   
使用arthas跟踪`org.apache.doris.analysis.ExpressionFunctions$FEFunctionSignature.getArgTypes`
   
   ```shell
   Affect(class count: 1 , method count: 1) cost in 212 ms, listenerId: 30
   
method=org.apache.doris.analysis.ExpressionFunctions$FEFunctionSignature.getArgTypes
 location=AtEnter
   ts=2023-05-19 13:05:27; [cost=0.04367ms] result=@ArrayList[
       @Object[][isEmpty=true;size=0],
       @FEFunctionSignature[
           name=@String[concat],
           argTypes=@Type[][isEmpty=false;size=1],
           returnType=@ScalarType[VARCHAR(*)],
       ],
       null,
   ]
   
method=org.apache.doris.analysis.ExpressionFunctions$FEFunctionSignature.getArgTypes
 location=AtExit
   ts=2023-05-19 13:05:27; [cost=1.0897417243898684E10ms] result=@ArrayList[
       @Object[][isEmpty=true;size=0],
       @FEFunctionSignature[
           name=@String[concat],
           argTypes=@Type[][isEmpty=false;size=1],
           returnType=@ScalarType[VARCHAR(*)],
       ],
       @Type[][
           @ScalarType[VARCHAR(100)],
      
   ```
   
   发现 ScalarType 中 len 变成 100,导致  DEFAULT_VARCHAR=@ScalarType[VARCHAR(100)],
   
`org.apache.doris.analysis.ExpressionFunctions$FEFunctionSignature.getArgTypes `
   ```shell
   
method=org.apache.doris.analysis.ExpressionFunctions$FEFunctionSignature.getArgTypes
 location=AtExit
   ts=2023-05-19 13:09:36; [cost=1.0897666158566805E10ms] result=@ArrayList[
       @Object[][isEmpty=true;size=0],
       @FEFunctionSignature[
           name=@String[concat],
           argTypes=@Type[][
               @ScalarType[VARCHAR(100)],
           ],
           returnType=@ScalarType[
               DATETIME_PRECISION=@Integer[18],
               DEFAULT_PRECISION=@Integer[9],
               DEFAULT_SCALE=@Integer[0],
               MAX_VARCHAR_LENGTH=@Integer[65533],
               MAX_CHAR_LENGTH=@Integer[255],
               MAX_HLL_LENGTH=@Integer[16385],
               CHAR_INLINE_LENGTH=@Integer[128],
               MAX_STRING_LENGTH=@Integer[2147483643],
               MAX_JSONB_LENGTH=@Integer[2147483643],
               MAX_PRECISION=@Integer[38],
               MAX_DECIMALV2_PRECISION=@Integer[27],
               MAX_DECIMALV2_SCALE=@Integer[9],
               MAX_DECIMAL32_PRECISION=@Integer[9],
               MAX_DECIMAL64_PRECISION=@Integer[18],
               MAX_DECIMAL128_PRECISION=@Integer[38],
               DEFAULT_MIN_AVG_DECIMAL128_SCALE=@Integer[4],
               MAX_DATETIMEV2_SCALE=@Integer[6],
               LOG=@Logger[org.apache.doris.catalog.ScalarType:INFO in 
7852e922],
               type=@PrimitiveType[VARCHAR],
               len=@Integer[-1],
               precision=@Integer[0],
               scale=@Integer[0],
               precisionStr=null,
               scaleStr=null,
               lenStr=null,
               MAX_NESTING_DEPTH=@Integer[9],
               INVALID=@ScalarType[INVALID_TYPE],
               UNSUPPORTED=@ScalarType[UNSUPPORTED_TYPE],
               NULL=@ScalarType[NULL_TYPE],
               BOOLEAN=@ScalarType[BOOLEAN],
               TINYINT=@ScalarType[TINYINT],
               SMALLINT=@ScalarType[SMALLINT],
               INT=@ScalarType[INT],
               BIGINT=@ScalarType[BIGINT],
               LARGEINT=@ScalarType[LARGEINT],
               FLOAT=@ScalarType[FLOAT],
               DOUBLE=@ScalarType[DOUBLE],
               DATE=@ScalarType[DATE],
               DATETIME=@ScalarType[DATETIME],
               DATEV2=@ScalarType[DATEV2],
               TIMEV2=@ScalarType[TIMEV2(0)],
               TIME=@ScalarType[TIME],
               STRING=@ScalarType[TEXT],
               DEFAULT_DECIMALV2=@ScalarType[DECIMAL(9,0)],
               MAX_DECIMALV2_TYPE=@ScalarType[DECIMAL(27,9)],
               DEFAULT_DECIMAL32=@ScalarType[DECIMALV3(9,0)],
               DEFAULT_DECIMAL64=@ScalarType[DECIMALV3(18,0)],
               DEFAULT_DECIMAL128=@ScalarType[DECIMALV3(38,0)],
               DEFAULT_DECIMALV3=@ScalarType[DECIMALV3(9,0)],
               DEFAULT_DATETIMEV2=@ScalarType[DATETIMEV2(0)],
               DATETIMEV2=@ScalarType[DATETIMEV2(0)],
               DEFAULT_TIMEV2=@ScalarType[TIMEV2(0)],
               DECIMALV2=@ScalarType[DECIMAL(9,0)],
               DECIMAL32=@ScalarType[DECIMALV3(9,0)],
               DECIMAL64=@ScalarType[DECIMALV3(18,0)],
               DECIMAL128=@ScalarType[DECIMALV3(38,0)],
               JSONB=@ScalarType[JSONB],
               DEFAULT_VARCHAR=@ScalarType[VARCHAR(100)],
               VARCHAR=@ScalarType[VARCHAR(*)],
               HLL=@ScalarType[HLL],
               CHAR=@ScalarType[CHAR(*)],
               BITMAP=@ScalarType[BITMAP],
               QUANTILE_STATE=@ScalarType[QUANTILE_STATE],
               ALL=@ScalarType[ALL],
               MAP=@MapType[org.apache.doris.catalog.MapType@688b5942],
               ARRAY=@ArrayType[ARRAY<NULL_TYPE>],
               STRUCT=@StructType[STRUCT<>],
               LOG=@Logger[org.apache.doris.catalog.Type:INFO in 7852e922],
               integerTypes=@ArrayList[isEmpty=false;size=5],
               numericTypes=@ArrayList[isEmpty=false;size=11],
               supportedTypes=@ArrayList[isEmpty=false;size=29],
               arraySubTypes=@ArrayList[isEmpty=false;size=16],
               trivialTypes=@ArrayList[isEmpty=false;size=25],
               DATE_SUPPORTED_JAVA_TYPE=@HashSet[isEmpty=false;size=3],
               DATETIME_SUPPORTED_JAVA_TYPE=@HashSet[isEmpty=false;size=3],
               
PrimitiveTypeToJavaClassType=@RegularImmutableMap[isEmpty=false;size=19],
               OnlyMetricTypeErrorMsg=@String[Doris hll, bitmap and array 
column must use with specific function, and don't support filter or group 
by.please run 'help hll' or 'help bitmap' or 'help array' in your mysql 
client.],
               compatibilityMatrix=@PrimitiveType[][][isEmpty=false;size=33],
               
strictCompatibilityMatrix=@PrimitiveType[][][isEmpty=false;size=33],
           ],
       ],
   ```
   
   
   
   
   
   
   
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to