Re: [PR] [VL] Support skewness aggregate function [incubator-gluten]
GlutenPerfBot commented on PR #4939: URL: https://github.com/apache/incubator-gluten/pull/4939#issuecomment-1996450919 = Performance report for TPCH SF2000 with Velox backend, for reference only query log/native_4939_time.csv log/native_master_03_13_2024_d7ed0844e_time.csv difference percentage q1 36.30 38.81 2.514 106.93% q2 23.88 24.06 0.186 100.78% q3 37.82 38.18 0.359 100.95% q4 36.91 38.49 1.575 104.27% q5 72.54 69.71 -2.835 96.09% q6 5.73 7.45 1.720 129.99% q7 83.54 82.46 -1.084 98.70% q8 85.41 83.21 -2.201 97.42% q9 119.01 121.83 2.817 102.37% q10 44.40 44.36 -0.040 99.91% q11 20.23 20.90 0.670 103.31% q12 27.23 28.06 0.833 103.06% q13 47.06 46.88 -0.180 99.62% q14 18.87 21.98 3.103 116.44% q15 29.69 33.08 3.393 111.43% q16 14.24 13.84 -0.405 97.15% q17 101.39 101.80 0.403 100.40% q18 141.37 141.05 -0.313 99.78% q19 13.59 15.07 1.478 110.88%
Re: [PR] [VL] Support skewness aggregate function [incubator-gluten]
PHILO-HE merged PR #4939: URL: https://github.com/apache/incubator-gluten/pull/4939 -- 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...@gluten.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: commits-unsubscr...@gluten.apache.org For additional commands, e-mail: commits-h...@gluten.apache.org
Re: [PR] [VL] Support skewness aggregate function [incubator-gluten]
taiyang-li commented on code in PR #4939: URL: https://github.com/apache/incubator-gluten/pull/4939#discussion_r1522621729 ## backends-clickhouse/src/main/scala/io/glutenproject/utils/CHExpressionUtil.scala: ## @@ -174,6 +174,7 @@ object CHExpressionUtil { ENCODE -> EncodeDecodeValidator(), ARRAY_EXCEPT -> DefaultValidator(), ARRAY_REPEAT -> DefaultValidator(), -DATE_FROM_UNIX_DATE -> DefaultValidator() +DATE_FROM_UNIX_DATE -> DefaultValidator(), +SKEWNESS -> DefaultValidator() Review Comment: that's ok -- 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...@gluten.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: commits-unsubscr...@gluten.apache.org For additional commands, e-mail: commits-h...@gluten.apache.org
Re: [PR] [VL] Support skewness aggregate function [incubator-gluten]
liujiayi771 commented on code in PR #4939: URL: https://github.com/apache/incubator-gluten/pull/4939#discussion_r1522620111 ## backends-velox/src/main/scala/io/glutenproject/execution/HashAggregateExecTransformer.scala: ## @@ -386,23 +386,38 @@ abstract class HashAggregateExecTransformer( val adjustedOrders = veloxOrders.map(sparkOrders.indexOf(_)) veloxTypes.zipWithIndex.foreach { case (veloxType, idx) => - val sparkType = sparkTypes(adjustedOrders(idx)) - val attr = rewrittenInputAttributes(adjustedOrders(idx)) - val aggFuncInputAttrNode = ExpressionConverter -.replaceWithExpressionTransformer(attr, originalInputAttributes) -.doTransform(args) - val expressionNode = if (sparkType != veloxType) { -newInputAttributes += - attr.copy(dataType = veloxType)(attr.exprId, attr.qualifier) -ExpressionBuilder.makeCast( - ConverterUtils.getTypeNode(veloxType, attr.nullable), - aggFuncInputAttrNode, - SQLConf.get.ansiEnabled) + val adjustedIdx = adjustedOrders(idx) + if (adjustedIdx == -1) { +// The Velox aggregate intermediate buffer column not found in Spark. +// For example, skewness and kurtosis share the same aggregate buffer in Velox, +// and Kurtosis additionally requires the buffer column of m4, which is +// always 0 for skewness. In Spark, the aggregate buffer of skewness does not +// have the column of m4, thus a placeholder m4 with a value of 0 must be passed +// to Velox, and this value cannot be omitted. Velox will always read m4 column +// when accessing the intermediate data. +val extraAttr = AttributeReference(veloxOrders(idx), veloxType)() +newInputAttributes += extraAttr +val lt = Literal.default(veloxType) Review Comment: We can define the Velox aggregate buffer columns in `VeloxIntermediateData`, if Velox aggregate function has additional columns than Spark, it will add the default value here. -- 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...@gluten.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: commits-unsubscr...@gluten.apache.org For additional commands, e-mail: commits-h...@gluten.apache.org
Re: [PR] [VL] Support skewness aggregate function [incubator-gluten]
liujiayi771 commented on code in PR #4939: URL: https://github.com/apache/incubator-gluten/pull/4939#discussion_r1522618099 ## backends-velox/src/main/scala/io/glutenproject/execution/HashAggregateExecTransformer.scala: ## @@ -386,23 +386,38 @@ abstract class HashAggregateExecTransformer( val adjustedOrders = veloxOrders.map(sparkOrders.indexOf(_)) veloxTypes.zipWithIndex.foreach { case (veloxType, idx) => - val sparkType = sparkTypes(adjustedOrders(idx)) - val attr = rewrittenInputAttributes(adjustedOrders(idx)) - val aggFuncInputAttrNode = ExpressionConverter -.replaceWithExpressionTransformer(attr, originalInputAttributes) -.doTransform(args) - val expressionNode = if (sparkType != veloxType) { -newInputAttributes += - attr.copy(dataType = veloxType)(attr.exprId, attr.qualifier) -ExpressionBuilder.makeCast( - ConverterUtils.getTypeNode(veloxType, attr.nullable), - aggFuncInputAttrNode, - SQLConf.get.ansiEnabled) + val adjustedIdx = adjustedOrders(idx) + if (adjustedIdx == -1) { +// The Velox aggregate intermediate buffer column not found in Spark. +// For example, skewness and kurtosis share the same aggregate buffer in Velox, +// and Kurtosis additionally requires the buffer column of m4, which is +// always 0 for skewness. In Spark, the aggregate buffer of skewness does not +// have the column of m4, thus a placeholder m4 with a value of 0 must be passed +// to Velox, and this value cannot be omitted. Velox will always read m4 column +// when accessing the intermediate data. +val extraAttr = AttributeReference(veloxOrders(idx), veloxType)() +newInputAttributes += extraAttr +val lt = Literal.default(veloxType) Review Comment: Currently we only find skewness needs this special handling, but if there are other aggregate functions with similar situations in the future, they will also be adaptable. -- 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...@gluten.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: commits-unsubscr...@gluten.apache.org For additional commands, e-mail: commits-h...@gluten.apache.org
Re: [PR] [VL] Support skewness aggregate function [incubator-gluten]
rui-mo commented on code in PR #4939: URL: https://github.com/apache/incubator-gluten/pull/4939#discussion_r1522613744 ## backends-velox/src/main/scala/io/glutenproject/execution/HashAggregateExecTransformer.scala: ## @@ -386,23 +386,38 @@ abstract class HashAggregateExecTransformer( val adjustedOrders = veloxOrders.map(sparkOrders.indexOf(_)) veloxTypes.zipWithIndex.foreach { case (veloxType, idx) => - val sparkType = sparkTypes(adjustedOrders(idx)) - val attr = rewrittenInputAttributes(adjustedOrders(idx)) - val aggFuncInputAttrNode = ExpressionConverter -.replaceWithExpressionTransformer(attr, originalInputAttributes) -.doTransform(args) - val expressionNode = if (sparkType != veloxType) { -newInputAttributes += - attr.copy(dataType = veloxType)(attr.exprId, attr.qualifier) -ExpressionBuilder.makeCast( - ConverterUtils.getTypeNode(veloxType, attr.nullable), - aggFuncInputAttrNode, - SQLConf.get.ansiEnabled) + val adjustedIdx = adjustedOrders(idx) + if (adjustedIdx == -1) { +// The Velox aggregate intermediate buffer column not found in Spark. +// For example, skewness and kurtosis share the same aggregate buffer in Velox, +// and Kurtosis additionally requires the buffer column of m4, which is +// always 0 for skewness. In Spark, the aggregate buffer of skewness does not +// have the column of m4, thus a placeholder m4 with a value of 0 must be passed +// to Velox, and this value cannot be omitted. Velox will always read m4 column +// when accessing the intermediate data. +val extraAttr = AttributeReference(veloxOrders(idx), veloxType)() +newInputAttributes += extraAttr +val lt = Literal.default(veloxType) Review Comment: > thus a placeholder m4 with a value of 0 must be passed Does the default value `0` works for all similar cases? -- 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...@gluten.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: commits-unsubscr...@gluten.apache.org For additional commands, e-mail: commits-h...@gluten.apache.org
Re: [PR] [VL] Support skewness aggregate function [incubator-gluten]
github-actions[bot] commented on PR #4939: URL: https://github.com/apache/incubator-gluten/pull/4939#issuecomment-1993634546 Run Gluten Clickhouse CI -- 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...@gluten.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: commits-unsubscr...@gluten.apache.org For additional commands, e-mail: commits-h...@gluten.apache.org
Re: [PR] [VL] Support skewness aggregate function [incubator-gluten]
github-actions[bot] commented on PR #4939: URL: https://github.com/apache/incubator-gluten/pull/4939#issuecomment-1993633312 Run Gluten Clickhouse CI -- 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...@gluten.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: commits-unsubscr...@gluten.apache.org For additional commands, e-mail: commits-h...@gluten.apache.org
Re: [PR] [VL] Support skewness aggregate function [incubator-gluten]
PHILO-HE commented on code in PR #4939: URL: https://github.com/apache/incubator-gluten/pull/4939#discussion_r1522564366 ## backends-velox/src/main/scala/io/glutenproject/execution/HashAggregateExecTransformer.scala: ## @@ -386,23 +386,33 @@ abstract class HashAggregateExecTransformer( val adjustedOrders = veloxOrders.map(sparkOrders.indexOf(_)) veloxTypes.zipWithIndex.foreach { case (veloxType, idx) => - val sparkType = sparkTypes(adjustedOrders(idx)) - val attr = rewrittenInputAttributes(adjustedOrders(idx)) - val aggFuncInputAttrNode = ExpressionConverter -.replaceWithExpressionTransformer(attr, originalInputAttributes) -.doTransform(args) - val expressionNode = if (sparkType != veloxType) { -newInputAttributes += - attr.copy(dataType = veloxType)(attr.exprId, attr.qualifier) -ExpressionBuilder.makeCast( - ConverterUtils.getTypeNode(veloxType, attr.nullable), - aggFuncInputAttrNode, - SQLConf.get.ansiEnabled) + val adjustedIdx = adjustedOrders(idx) + if (adjustedIdx == -1) { +// The column not found in Spark, and this column is not useful in actual +// calculations, it is sufficient to pass a default DataType value. +val extraAttr = AttributeReference(veloxOrders(idx), veloxType)() +newInputAttributes += extraAttr +val lt = Literal.default(veloxType) +childNodes.add(ExpressionBuilder.makeLiteral(lt.value, lt.dataType, false)) Review Comment: Could you add some more comment here to clarify a bit? Thanks! -- 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...@gluten.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: commits-unsubscr...@gluten.apache.org For additional commands, e-mail: commits-h...@gluten.apache.org
Re: [PR] [VL] Support skewness aggregate function [incubator-gluten]
liujiayi771 commented on code in PR #4939: URL: https://github.com/apache/incubator-gluten/pull/4939#discussion_r1522561050 ## backends-velox/src/main/scala/io/glutenproject/execution/HashAggregateExecTransformer.scala: ## @@ -386,23 +386,33 @@ abstract class HashAggregateExecTransformer( val adjustedOrders = veloxOrders.map(sparkOrders.indexOf(_)) veloxTypes.zipWithIndex.foreach { case (veloxType, idx) => - val sparkType = sparkTypes(adjustedOrders(idx)) - val attr = rewrittenInputAttributes(adjustedOrders(idx)) - val aggFuncInputAttrNode = ExpressionConverter -.replaceWithExpressionTransformer(attr, originalInputAttributes) -.doTransform(args) - val expressionNode = if (sparkType != veloxType) { -newInputAttributes += - attr.copy(dataType = veloxType)(attr.exprId, attr.qualifier) -ExpressionBuilder.makeCast( - ConverterUtils.getTypeNode(veloxType, attr.nullable), - aggFuncInputAttrNode, - SQLConf.get.ansiEnabled) + val adjustedIdx = adjustedOrders(idx) + if (adjustedIdx == -1) { +// The column not found in Spark, and this column is not useful in actual +// calculations, it is sufficient to pass a default DataType value. +val extraAttr = AttributeReference(veloxOrders(idx), veloxType)() +newInputAttributes += extraAttr +val lt = Literal.default(veloxType) +childNodes.add(ExpressionBuilder.makeLiteral(lt.value, lt.dataType, false)) Review Comment: @PHILO-HE In Velox, skewness and kurtosis share a common calculation logic. Kurtosis additionally requires the parameter m4, which is always 0 for skewness, rather than null. The Spark skewness buffer does not have the m4 parameter, thus a placeholder m4 with a value of 0 must be passed to Velox, and this value cannot be omitted. Velox will always read m4 column when accessing the intermediate data. -- 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...@gluten.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: commits-unsubscr...@gluten.apache.org For additional commands, e-mail: commits-h...@gluten.apache.org
Re: [PR] [VL] Support skewness aggregate function [incubator-gluten]
liujiayi771 commented on code in PR #4939: URL: https://github.com/apache/incubator-gluten/pull/4939#discussion_r1522561050 ## backends-velox/src/main/scala/io/glutenproject/execution/HashAggregateExecTransformer.scala: ## @@ -386,23 +386,33 @@ abstract class HashAggregateExecTransformer( val adjustedOrders = veloxOrders.map(sparkOrders.indexOf(_)) veloxTypes.zipWithIndex.foreach { case (veloxType, idx) => - val sparkType = sparkTypes(adjustedOrders(idx)) - val attr = rewrittenInputAttributes(adjustedOrders(idx)) - val aggFuncInputAttrNode = ExpressionConverter -.replaceWithExpressionTransformer(attr, originalInputAttributes) -.doTransform(args) - val expressionNode = if (sparkType != veloxType) { -newInputAttributes += - attr.copy(dataType = veloxType)(attr.exprId, attr.qualifier) -ExpressionBuilder.makeCast( - ConverterUtils.getTypeNode(veloxType, attr.nullable), - aggFuncInputAttrNode, - SQLConf.get.ansiEnabled) + val adjustedIdx = adjustedOrders(idx) + if (adjustedIdx == -1) { +// The column not found in Spark, and this column is not useful in actual +// calculations, it is sufficient to pass a default DataType value. +val extraAttr = AttributeReference(veloxOrders(idx), veloxType)() +newInputAttributes += extraAttr +val lt = Literal.default(veloxType) +childNodes.add(ExpressionBuilder.makeLiteral(lt.value, lt.dataType, false)) Review Comment: In Velox, skewness and kurtosis share a common calculation logic. Kurtosis additionally requires the parameter m4, which is always 0 for skewness, rather than null. The Spark skewness buffer does not have the m4 parameter, thus a placeholder m4 with a value of 0 must be passed to Velox, and this value cannot be omitted. Velox will always read m4 column when accessing the intermediate data. -- 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...@gluten.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: commits-unsubscr...@gluten.apache.org For additional commands, e-mail: commits-h...@gluten.apache.org
Re: [PR] [VL] Support skewness aggregate function [incubator-gluten]
PHILO-HE commented on code in PR #4939: URL: https://github.com/apache/incubator-gluten/pull/4939#discussion_r1522442068 ## backends-clickhouse/src/main/scala/io/glutenproject/utils/CHExpressionUtil.scala: ## @@ -174,6 +174,7 @@ object CHExpressionUtil { ENCODE -> EncodeDecodeValidator(), ARRAY_EXCEPT -> DefaultValidator(), ARRAY_REPEAT -> DefaultValidator(), -DATE_FROM_UNIX_DATE -> DefaultValidator() +DATE_FROM_UNIX_DATE -> DefaultValidator(), +SKEWNESS -> DefaultValidator() Review Comment: cc @taiyang-li, please note this. ## backends-velox/src/main/scala/io/glutenproject/execution/HashAggregateExecTransformer.scala: ## @@ -386,23 +386,33 @@ abstract class HashAggregateExecTransformer( val adjustedOrders = veloxOrders.map(sparkOrders.indexOf(_)) veloxTypes.zipWithIndex.foreach { case (veloxType, idx) => - val sparkType = sparkTypes(adjustedOrders(idx)) - val attr = rewrittenInputAttributes(adjustedOrders(idx)) - val aggFuncInputAttrNode = ExpressionConverter -.replaceWithExpressionTransformer(attr, originalInputAttributes) -.doTransform(args) - val expressionNode = if (sparkType != veloxType) { -newInputAttributes += - attr.copy(dataType = veloxType)(attr.exprId, attr.qualifier) -ExpressionBuilder.makeCast( - ConverterUtils.getTypeNode(veloxType, attr.nullable), - aggFuncInputAttrNode, - SQLConf.get.ansiEnabled) + val adjustedIdx = adjustedOrders(idx) + if (adjustedIdx == -1) { +// The column not found in Spark, and this column is not useful in actual +// calculations, it is sufficient to pass a default DataType value. +val extraAttr = AttributeReference(veloxOrders(idx), veloxType)() +newInputAttributes += extraAttr +val lt = Literal.default(veloxType) +childNodes.add(ExpressionBuilder.makeLiteral(lt.value, lt.dataType, false)) Review Comment: Not quite familiar with this part of code. Do we still need to put this to childNodes even if it is useless to native backend? ## backends-velox/src/main/scala/io/glutenproject/execution/HashAggregateExecTransformer.scala: ## @@ -386,23 +386,33 @@ abstract class HashAggregateExecTransformer( val adjustedOrders = veloxOrders.map(sparkOrders.indexOf(_)) veloxTypes.zipWithIndex.foreach { case (veloxType, idx) => - val sparkType = sparkTypes(adjustedOrders(idx)) - val attr = rewrittenInputAttributes(adjustedOrders(idx)) - val aggFuncInputAttrNode = ExpressionConverter -.replaceWithExpressionTransformer(attr, originalInputAttributes) -.doTransform(args) - val expressionNode = if (sparkType != veloxType) { -newInputAttributes += - attr.copy(dataType = veloxType)(attr.exprId, attr.qualifier) -ExpressionBuilder.makeCast( - ConverterUtils.getTypeNode(veloxType, attr.nullable), - aggFuncInputAttrNode, - SQLConf.get.ansiEnabled) + val adjustedIdx = adjustedOrders(idx) + if (adjustedIdx == -1) { +// The column not found in Spark, and this column is not useful in actual +// calculations, it is sufficient to pass a default DataType value. +val extraAttr = AttributeReference(veloxOrders(idx), veloxType)() +newInputAttributes += extraAttr +val lt = Literal.default(veloxType) +childNodes.add(ExpressionBuilder.makeLiteral(lt.value, lt.dataType, false)) Review Comment: If really needed, maybe just make null literal for corresponding type for simplicity? -- 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...@gluten.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: commits-unsubscr...@gluten.apache.org For additional commands, e-mail: commits-h...@gluten.apache.org
Re: [PR] [VL] Support skewness aggregate function [incubator-gluten]
github-actions[bot] commented on PR #4939: URL: https://github.com/apache/incubator-gluten/pull/4939#issuecomment-1992951474 Run Gluten Clickhouse CI -- 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...@gluten.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: commits-unsubscr...@gluten.apache.org For additional commands, e-mail: commits-h...@gluten.apache.org
Re: [PR] [VL] Support skewness aggregate function [incubator-gluten]
liujiayi771 commented on PR #4939: URL: https://github.com/apache/incubator-gluten/pull/4939#issuecomment-1992743075 cc @rui-mo @PHILO-HE, thanks. -- 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...@gluten.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: commits-unsubscr...@gluten.apache.org For additional commands, e-mail: commits-h...@gluten.apache.org
Re: [PR] [VL] Support skewness aggregate function [incubator-gluten]
github-actions[bot] commented on PR #4939: URL: https://github.com/apache/incubator-gluten/pull/4939#issuecomment-1991728807 Run Gluten Clickhouse CI -- 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...@gluten.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: commits-unsubscr...@gluten.apache.org For additional commands, e-mail: commits-h...@gluten.apache.org
Re: [PR] [VL] Support skewness aggregate function [incubator-gluten]
github-actions[bot] commented on PR #4939: URL: https://github.com/apache/incubator-gluten/pull/4939#issuecomment-1991728318 Thanks for opening a pull request! Could you open an issue for this pull request on Github Issues? https://github.com/apache/incubator-gluten/issues Then could you also rename ***commit message*** and ***pull request title*** in the following format? [GLUTEN-${ISSUES_ID}][COMPONENT]feat/fix: ${detailed message} See also: * [Other pull requests](https://github.com/apache/incubator-gluten/pulls/) -- 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...@gluten.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: commits-unsubscr...@gluten.apache.org For additional commands, e-mail: commits-h...@gluten.apache.org