@@ -22,13 +22,17 @@ import org.apache.spark.sql.{sources, SparkSession}
2222import org .apache .spark .sql .catalyst .expressions .Expression
2323import org .apache .spark .sql .connector .read .{ScanBuilder , SupportsPushDownRequiredColumns }
2424import org .apache .spark .sql .execution .datasources .{DataSourceStrategy , PartitioningAwareFileIndex , PartitioningUtils }
25+ import org .apache .spark .sql .internal .connector .SupportsPushDownCatalystFilters
2526import org .apache .spark .sql .sources .Filter
2627import org .apache .spark .sql .types .StructType
2728
2829abstract class FileScanBuilder (
2930 sparkSession : SparkSession ,
3031 fileIndex : PartitioningAwareFileIndex ,
31- dataSchema : StructType ) extends ScanBuilder with SupportsPushDownRequiredColumns {
32+ dataSchema : StructType )
33+ extends ScanBuilder
34+ with SupportsPushDownRequiredColumns
35+ with SupportsPushDownCatalystFilters {
3236 private val partitionSchema = fileIndex.partitionSchema
3337 private val isCaseSensitive = sparkSession.sessionState.conf.caseSensitiveAnalysis
3438 protected val supportsNestedSchemaPruning = false
@@ -66,7 +70,9 @@ abstract class FileScanBuilder(
6670
6771 // Note: The partitionFilters and dataFilters need to be pushed to FileIndex in the format of
6872 // Expression because partition pruning uses the Expression Filters, not sources.Filters.
69- def pushFilters (partitionFilters : Seq [Expression ], dataFilters : Seq [Expression ]): Unit = {
73+ override def pushCatalystFilters (
74+ partitionFilters : Seq [Expression ],
75+ dataFilters : Seq [Expression ]): Unit = {
7076 this .partitionFilters = partitionFilters
7177 this .dataFilters = dataFilters
7278 val translatedFilters = mutable.ArrayBuffer .empty[sources.Filter ]
0 commit comments