[ 
https://issues.apache.org/jira/browse/SPARK-53512?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Yuchuan Huang updated SPARK-53512:
----------------------------------
    Description: 
Currently, the PushDownUtils has following matching cases.
{code:java}
 object PushDownUtils {
  def pushFilters(scanBuilder: ScanBuilder, filters: Seq[Expression])
    : (Either[Seq[sources.Filter], Seq[Predicate]], Seq[Expression]) = {
    scanBuilder match {
      case r: SupportsPushDownFilters => ...  // public interface extends 
ScanBuilder
      case r: SupportsPushDownV2Filters => ... // public interface extends 
ScanBuilder
      case f: FileScanBuilder => ... // which extends with 
SupportsPushDownCatalystFilters
      case _ => (Left(Nil), filters)
    }
  }
}  {code}
As a result, when a new scanBuilder wants to SupportsPushDownCatalystFilters 
(but doesn't want to extend FileScanBuilder), it will not be picked up by 
PushDownUtils. To better unify these filter pushdown traits, it would be better 
if the matching cases are like following:
{code:java}
scanBuilder match { 
  case r: SupportsPushDownFilters => ... // public interface extends ScanBuilder
  case r: SupportsPushDownV2Filters => ... // public interface extends 
ScanBuilder
  case r: SupportsPushDownCatalystFilters => ... // trait extends ScanBuilder
  case _ => (Left(Nil), filters)
}{code}

  was:
Currently, the PushDownUtils has following matching cases.
{code:java}
 object PushDownUtils {
  def pushFilters(scanBuilder: ScanBuilder, filters: Seq[Expression])
    : (Either[Seq[sources.Filter], Seq[Predicate]], Seq[Expression]) = {
    scanBuilder match {
      case r: SupportsPushDownFilters => ...  // public interface extends 
ScanBuilder
      case r: SupportsPushDownV2Filters => ... // public interface extends 
ScanBuilder
      case f: FileScanBuilder => ... // which extends with 
SupportsPushDownCatalystFilters
      case _ => (Left(Nil), filters)
    }
  }
}  {code}
As a result, when a new scanBuilderĀ  wants to SupportsPushDownCatalystFilters, 
it will not be picked up by PushDownUtils. To better unify these filter 
pushdown traits, it would be better if the matching cases are like following:
{code:java}
scanBuilder match { 
  case r: SupportsPushDownFilters => ... // public interface extends ScanBuilder
  case r: SupportsPushDownV2Filters => ... // public interface extends 
ScanBuilder
  case r: SupportsPushDownCatalystFilters => ... // trait extends ScanBuilder
  case _ => (Left(Nil), filters)
}{code}


> Better unification of DSv2 PushDownUtils
> ----------------------------------------
>
>                 Key: SPARK-53512
>                 URL: https://issues.apache.org/jira/browse/SPARK-53512
>             Project: Spark
>          Issue Type: Improvement
>          Components: SQL
>    Affects Versions: 4.1.0
>            Reporter: Yuchuan Huang
>            Priority: Critical
>
> Currently, the PushDownUtils has following matching cases.
> {code:java}
>  object PushDownUtils {
>   def pushFilters(scanBuilder: ScanBuilder, filters: Seq[Expression])
>     : (Either[Seq[sources.Filter], Seq[Predicate]], Seq[Expression]) = {
>     scanBuilder match {
>       case r: SupportsPushDownFilters => ...  // public interface extends 
> ScanBuilder
>       case r: SupportsPushDownV2Filters => ... // public interface extends 
> ScanBuilder
>       case f: FileScanBuilder => ... // which extends with 
> SupportsPushDownCatalystFilters
>       case _ => (Left(Nil), filters)
>     }
>   }
> }  {code}
> As a result, when a new scanBuilder wants to SupportsPushDownCatalystFilters 
> (but doesn't want to extend FileScanBuilder), it will not be picked up by 
> PushDownUtils. To better unify these filter pushdown traits, it would be 
> better if the matching cases are like following:
> {code:java}
> scanBuilder match { 
>   case r: SupportsPushDownFilters => ... // public interface extends 
> ScanBuilder
>   case r: SupportsPushDownV2Filters => ... // public interface extends 
> ScanBuilder
>   case r: SupportsPushDownCatalystFilters => ... // trait extends ScanBuilder
>   case _ => (Left(Nil), filters)
> }{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to