taiyang-li opened a new issue, #9039:
URL: https://github.com/apache/incubator-gluten/issues/9039

   ### Description
   
   ```
   0: jdbc:hive2://localhost:10000/> explain formatted select 
array_sort(split(l_comment, ' ')) from lineitem limit 10
   . . . . . . . . . . . . . . . . > ;
   +----------------------------------------------------+
   |                        plan                        |
   +----------------------------------------------------+
   | == Physical Plan ==
   CollectLimit (5)
   +- CHNativeColumnarToRow (4)
      +- ^ ProjectExecTransformer (2)
         +- ^ ScanTransformer parquet  (1)
   
   
   (1) ScanTransformer parquet 
   Output [1]: [l_comment#15]
   Batched: true
   Location: InMemoryFileIndex 
[file:/data1/liyang/cppproject/gluten/gluten-core/src/test/resources/tpch-data/lineitem]
   ReadSchema: struct<l_comment:string>
   
   (2) ProjectExecTransformer
   Output [1]: [array_sort(split(l_comment#15,  , -1), lambdafunction(if 
((lambda left#44 < lambda right#45)) -1 else if ((lambda left#44 > lambda 
right#45)) 1 else 0, lambda left#44, lambda right#45, false), false) AS 
array_sort(split(l_comment,  , -1), lambdafunction((IF(((namedlambdavariable() 
IS NULL) AND (namedlambdavariable() IS NULL)), 0, (IF((namedlambdavariable() IS 
NULL), 1, (IF((namedlambdavariable() IS NULL), -1, (IF((namedlambdavariable() < 
namedlambdavariable()), -1, (IF((namedlambdavariable() > 
namedlambdavariable()), 1, 0)))))))))), namedlambdavariable(), 
namedlambdavariable()))#46]
   Input [1]: [l_comment#15]
   
   (3) WholeStageCodegenTransformer (2)
   Input [1]: [array_sort(split(l_comment,  , -1), 
lambdafunction((IF(((namedlambdavariable() IS NULL) AND (namedlambdavariable() 
IS NULL)), 0, (IF((namedlambdavariable() IS NULL), 1, 
(IF((namedlambdavariable() IS NULL), -1, (IF((namedlambdavariable() < 
namedlambdavariable()), -1, (IF((namedlambdavariable() > 
namedlambdavariable()), 1, 0)))))))))), namedlambdavariable(), 
namedlambdavariable()))#46]
   Arguments: false
   
   (4) CHNativeColumnarToRow
   Input [1]: [array_sort(split(l_comment,  , -1), 
lambdafunction((IF(((namedlambdavariable() IS NULL) AND (namedlambdavariable() 
IS NULL)), 0, (IF((namedlambdavariable() IS NULL), 1, 
(IF((namedlambdavariable() IS NULL), -1, (IF((namedlambdavariable() < 
namedlambdavariable()), -1, (IF((namedlambdavariable() > 
namedlambdavariable()), 1, 0)))))))))), namedlambdavariable(), 
namedlambdavariable()))#46]
   
   (5) CollectLimit
   Input [1]: [array_sort(split(l_comment,  , -1), 
lambdafunction((IF(((namedlambdavariable() IS NULL) AND (namedlambdavariable() 
IS NULL)), 0, (IF((namedlambdavariable() IS NULL), 1, 
(IF((namedlambdavariable() IS NULL), -1, (IF((namedlambdavariable() < 
namedlambdavariable()), -1, (IF((namedlambdavariable() > 
namedlambdavariable()), 1, 0)))))))))), namedlambdavariable(), 
namedlambdavariable()))#46]
   Arguments: 10
   ``` 
   
   ```
   
{"extensions":[{"extensionFunction":{"functionAnchor":6,"name":"gt:str_str"}},{"extensionFunction":{"functionAnchor":5,"name":"namedlambdavariable:"}},{"extensionFunction":{"functionAnchor":4,"name":"lt:str_str"}},{"extensionFunction":{"functionAnchor":2,"name":"split:str_str_i32"}},{"extensionFunction":{"functionAnchor":3,"name":"lambdafunction:i32_str_str"}},{"extensionFunction":{"functionAnchor":1,"name":"array_sort:list\u003cstr\u003e_i32"}},{"extensionFunction":{"name":"alias:list\u003cstr\u003e"}}],"relations":[{"root":{"input":{"project":{"common":{"emit":{"outputMapping":[1]}},"input":{"read":{"common":{"direct":{}},"baseSchema":{"names":["l_comment"],"struct":{"types":[{"string":{"nullability":"NULLABILITY_NULLABLE"}}]},"columnTypes":["NORMAL_COL"]},"streamKafka":false,"advancedExtension":{"optimization":{"@type":"type.googleapis.com/google.protobuf.StringValue","value":"isMergeTree=0\n"}}}},"expressions":[{"scalarFunction":{"outputType":{"list":{"type":{"string":{"nullab
 
ility":"NULLABILITY_REQUIRED"}},"nullability":"NULLABILITY_NULLABLE"}},"arguments":[{"value":{"scalarFunction":{"functionReference":1,"outputType":{"list":{"type":{"string":{"nullability":"NULLABILITY_REQUIRED"}},"nullability":"NULLABILITY_NULLABLE"}},"arguments":[{"value":{"scalarFunction":{"functionReference":2,"outputType":{"list":{"type":{"string":{"nullability":"NULLABILITY_NULLABLE"}},"nullability":"NULLABILITY_NULLABLE"}},"arguments":[{"value":{"selection":{"directReference":{"structField":{}}}}},{"value":{"literal":{"string":"
 
"}}},{"value":{"literal":{"i32":-1}}}]}}},{"value":{"scalarFunction":{"functionReference":3,"outputType":{"i32":{"nullability":"NULLABILITY_REQUIRED"}},"arguments":[{"value":{"ifThen":{"ifs":[{"if":{"scalarFunction":{"functionReference":4,"outputType":{"bool":{"nullability":"NULLABILITY_REQUIRED"}},"arguments":[{"value":{"scalarFunction":{"functionReference":5,"outputType":{"string":{"nullability":"NULLABILITY_REQUIRED"}},"arguments":[{"value":{"litera
 
l":{"string":"left"}}}]}}},{"value":{"scalarFunction":{"functionReference":5,"outputType":{"string":{"nullability":"NULLABILITY_REQUIRED"}},"arguments":[{"value":{"literal":{"string":"right"}}}]}}}]}},"then":{"literal":{"i32":-1}}}],"else":{"ifThen":{"ifs":[{"if":{"scalarFunction":{"functionReference":6,"outputType":{"bool":{"nullability":"NULLABILITY_REQUIRED"}},"arguments":[{"value":{"scalarFunction":{"functionReference":5,"outputType":{"string":{"nullability":"NULLABILITY_REQUIRED"}},"arguments":[{"value":{"literal":{"string":"left"}}}]}}},{"value":{"scalarFunction":{"functionReference":5,"outputType":{"string":{"nullability":"NULLABILITY_REQUIRED"}},"arguments":[{"value":{"literal":{"string":"right"}}}]}}}]}},"then":{"literal":{"i32":1}}}],"else":{"literal":{"i32":0}}}}}}},{"value":{"scalarFunction":{"functionReference":5,"outputType":{"string":{"nullability":"NULLABILITY_REQUIRED"}},"arguments":[{"value":{"literal":{"string":"left"}}}]}}},{"value":{"scalarFunction":{"functionRe
 
ference":5,"outputType":{"string":{"nullability":"NULLABILITY_REQUIRED"}},"arguments":[{"value":{"literal":{"string":"right"}}}]}}}]}}}]}}}]}}]}},"names":["array_sort#35"],"outputSchema":{"types":[{"list":{"type":{"string":{"nullability":"NULLABILITY_REQUIRED"}},"nullability":"NULLABILITY_NULLABLE"}}],"nullability":"NULLABILITY_REQUIRED"}}}]}
   ```
   
   ```
   Expression (Rename Output)
   Header: array_sort#35 Nullable(Array(String))
   Actions: INPUT : 0 -> 
arraySortSpark(if(less(left,right),-1_2,if(greater(left,right),1_3,0_4)),_CAST(splitByRegexpSpark(
 _0,l_comment,-1_1), Nullable(Array(String)))) Nullable(Array(String)) : 0
            ALIAS 
arraySortSpark(if(less(left,right),-1_2,if(greater(left,right),1_3,0_4)),_CAST(splitByRegexpSpark(
 _0,l_comment,-1_1), Nullable(Array(String)))) :: 0 -> array_sort#35 
Nullable(Array(String)) : 1
   Positions: 1
     Expression (Project)
     Header: 
arraySortSpark(if(less(left,right),-1_2,if(greater(left,right),1_3,0_4)),_CAST(splitByRegexpSpark(
 _0,l_comment,-1_1), Nullable(Array(String)))) Nullable(Array(String))
     Actions: INPUT : 0 -> l_comment Nullable(String) : 0
              COLUMN Const(String) ->  _0 String : 1
              COLUMN Const(Int32) -> -1_1 Int32 : 2
              COLUMN Const(String) -> Nullable(Array(Nullable(String))) String 
: 3
              FUNCTION Capture[](String, String) -> Int32() -> 
if(less(left,right),-1_2,if(greater(left,right),1_3,0_4)) Function((String, 
String) -> Int32) : 4
              COLUMN Const(String) -> Nullable(Array(String)) String : 5
              FUNCTION splitByChar( _0 :: 1, l_comment :: 0, -1_1 :: 2) -> 
splitByRegexpSpark( _0,l_comment,-1_1) Nullable(Array(String)) : 6
              FUNCTION _CAST(splitByRegexpSpark( _0,l_comment,-1_1) :: 6, 
Nullable(Array(Nullable(String))) :: 3) -> splitByRegexpSpark( 
_0,l_comment,-1_1) Nullable(Array(Nullable(String))) : 2
              FUNCTION _CAST(splitByRegexpSpark( _0,l_comment,-1_1) :: 2, 
Nullable(Array(String)) :: 5) -> _CAST(splitByRegexpSpark( _0,l_comment,-1_1), 
Nullable(Array(String))) Nullable(Array(String)) : 3
              FUNCTION 
arraySortSpark(if(less(left,right),-1_2,if(greater(left,right),1_3,0_4)) :: 4, 
_CAST(splitByRegexpSpark( _0,l_comment,-1_1), Nullable(Array(String))) :: 3) -> 
arraySortSpark(if(less(left,right),-1_2,if(greater(left,right),1_3,0_4)),_CAST(splitByRegexpSpark(
 _0,l_comment,-1_1), Nullable(Array(String)))) Nullable(Array(String)) : 5
     Positions: 5
       SubstraitFileSourceStep (read local files)
       Header: l_comment Nullable(String)
   ```


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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

Reply via email to