@@ -25,14 +25,13 @@ import org.apache.parquet.io.api.Binary
2525
2626import org .apache .spark .sql .catalyst .util .DateTimeUtils
2727import org .apache .spark .sql .catalyst .util .DateTimeUtils .SQLDate
28- import org .apache .spark .sql .internal .SQLConf
2928import org .apache .spark .sql .sources
3029import org .apache .spark .sql .types ._
3130
3231/**
3332 * Some utility function to convert Spark data source filters to Parquet filters.
3433 */
35- private [parquet] object ParquetFilters {
34+ private [parquet] class ParquetFilters ( pushDownDate : Boolean ) {
3635
3736 private def dateToDays (date : Date ): SQLDate = {
3837 DateTimeUtils .fromJavaDate(date)
@@ -59,7 +58,7 @@ private[parquet] object ParquetFilters {
5958 (n : String , v : Any ) => FilterApi .eq(
6059 binaryColumn(n),
6160 Option (v).map(b => Binary .fromReusedByteArray(v.asInstanceOf [Array [Byte ]])).orNull)
62- case DateType if SQLConf .get.parquetFilterPushDownDate =>
61+ case DateType if pushDownDate =>
6362 (n : String , v : Any ) => FilterApi .eq(
6463 intColumn(n),
6564 Option (v).map(date => dateToDays(date.asInstanceOf [Date ]).asInstanceOf [Integer ]).orNull)
@@ -85,7 +84,7 @@ private[parquet] object ParquetFilters {
8584 (n : String , v : Any ) => FilterApi .notEq(
8685 binaryColumn(n),
8786 Option (v).map(b => Binary .fromReusedByteArray(v.asInstanceOf [Array [Byte ]])).orNull)
88- case DateType if SQLConf .get.parquetFilterPushDownDate =>
87+ case DateType if pushDownDate =>
8988 (n : String , v : Any ) => FilterApi .notEq(
9089 intColumn(n),
9190 Option (v).map(date => dateToDays(date.asInstanceOf [Date ]).asInstanceOf [Integer ]).orNull)
@@ -108,7 +107,7 @@ private[parquet] object ParquetFilters {
108107 case BinaryType =>
109108 (n : String , v : Any ) =>
110109 FilterApi .lt(binaryColumn(n), Binary .fromReusedByteArray(v.asInstanceOf [Array [Byte ]]))
111- case DateType if SQLConf .get.parquetFilterPushDownDate =>
110+ case DateType if pushDownDate =>
112111 (n : String , v : Any ) => FilterApi .lt(
113112 intColumn(n),
114113 Option (v).map(date => dateToDays(date.asInstanceOf [Date ]).asInstanceOf [Integer ]).orNull)
@@ -131,7 +130,7 @@ private[parquet] object ParquetFilters {
131130 case BinaryType =>
132131 (n : String , v : Any ) =>
133132 FilterApi .ltEq(binaryColumn(n), Binary .fromReusedByteArray(v.asInstanceOf [Array [Byte ]]))
134- case DateType if SQLConf .get.parquetFilterPushDownDate =>
133+ case DateType if pushDownDate =>
135134 (n : String , v : Any ) => FilterApi .ltEq(
136135 intColumn(n),
137136 Option (v).map(date => dateToDays(date.asInstanceOf [Date ]).asInstanceOf [Integer ]).orNull)
@@ -154,7 +153,7 @@ private[parquet] object ParquetFilters {
154153 case BinaryType =>
155154 (n : String , v : Any ) =>
156155 FilterApi .gt(binaryColumn(n), Binary .fromReusedByteArray(v.asInstanceOf [Array [Byte ]]))
157- case DateType if SQLConf .get.parquetFilterPushDownDate =>
156+ case DateType if pushDownDate =>
158157 (n : String , v : Any ) => FilterApi .gt(
159158 intColumn(n),
160159 Option (v).map(date => dateToDays(date.asInstanceOf [Date ]).asInstanceOf [Integer ]).orNull)
@@ -177,7 +176,7 @@ private[parquet] object ParquetFilters {
177176 case BinaryType =>
178177 (n : String , v : Any ) =>
179178 FilterApi .gtEq(binaryColumn(n), Binary .fromReusedByteArray(v.asInstanceOf [Array [Byte ]]))
180- case DateType if SQLConf .get.parquetFilterPushDownDate =>
179+ case DateType if pushDownDate =>
181180 (n : String , v : Any ) => FilterApi .gtEq(
182181 intColumn(n),
183182 Option (v).map(date => dateToDays(date.asInstanceOf [Date ]).asInstanceOf [Integer ]).orNull)
0 commit comments