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]