@@ -598,17 +598,21 @@ object QueryPlanSerde extends Logging with CometExprShim {
598598 val conf = SQLConf .get
599599
600600 def convert [T <: Expression ](expr : T , handler : CometExpressionSerde [T ]): Option [Expr ] = {
601+ val exprConfName = handler.getExprConfigName(expr)
602+ if (! CometConf .isExprEnabled(exprConfName)) {
603+ withInfo(
604+ expr,
605+ " Expression support is disabled. Set " +
606+ s " ${CometConf .getExprEnabledConfigKey(exprConfName)}=true to enable it. " )
607+ return None
608+ }
601609 handler.getSupportLevel(expr) match {
602610 case Unsupported (notes) =>
603611 withInfo(expr, notes.getOrElse(" " ))
604612 None
605613 case Incompatible (notes) =>
606- val exprConfName = handler.getExprConfigName(expr)
607- val exprIncompatConf = s " ${CometConf .COMET_EXPR_CONFIG_PREFIX }. $exprConfName" +
608- " .allowIncompatible"
609- val exprEnabled = conf.contains(exprIncompatConf) &&
610- conf.getConfString(exprIncompatConf) == " true"
611- if (exprEnabled || CometConf .COMET_EXPR_ALLOW_INCOMPATIBLE .get()) {
614+ val exprAllowIncompat = CometConf .isExprAllowIncompat(exprConfName)
615+ if (exprAllowIncompat || CometConf .COMET_EXPR_ALLOW_INCOMPATIBLE .get()) {
612616 if (notes.isDefined) {
613617 logWarning(
614618 s " Comet supports $expr when ${CometConf .COMET_EXPR_ALLOW_INCOMPATIBLE .key}=true " +
@@ -620,7 +624,7 @@ object QueryPlanSerde extends Logging with CometExprShim {
620624 withInfo(
621625 expr,
622626 s " $expr is not fully compatible with Spark $optionalNotes. To enable it anyway, " +
623- s " set $exprIncompatConf =true, or set " +
627+ s " set ${ CometConf .getExprAllowIncompatConfigKey(exprConfName)} =true, or set " +
624628 s " ${CometConf .COMET_EXPR_ALLOW_INCOMPATIBLE .key}=true to enable all " +
625629 s " incompatible expressions. ${CometConf .COMPAT_GUIDE }. " )
626630 None
0 commit comments