Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ import java.nio.charset.StandardCharsets.UTF_8
import java.sql.{Date, Timestamp}
import java.time.{Duration, Instant, LocalDate, LocalTime, Period}
import java.time.temporal.ChronoField.MICRO_OF_DAY
import java.util.HashSet
import java.util.Locale

import scala.jdk.CollectionConverters._

import com.google.common.collect.Sets
import org.apache.parquet.filter2.predicate._
import org.apache.parquet.filter2.predicate.SparkFilterApi._
import org.apache.parquet.io.api.Binary
Expand Down Expand Up @@ -764,47 +764,47 @@ class ParquetFilters(

case ParquetByteType | ParquetShortType | ParquetIntegerType =>
(n: Array[String], values: Array[Any]) =>
val set = new HashSet[Integer]()
val set = Sets.newHashSetWithExpectedSize[Integer](values.length)
for (value <- values) {
set.add(toIntValue(value))
}
FilterApi.in(intColumn(n), set)

case ParquetLongType =>
(n: Array[String], values: Array[Any]) =>
val set = new HashSet[JLong]()
val set = Sets.newHashSetWithExpectedSize[JLong](values.length)
for (value <- values) {
set.add(toLongValue(value))
}
FilterApi.in(longColumn(n), set)

case ParquetFloatType =>
(n: Array[String], values: Array[Any]) =>
val set = new HashSet[JFloat]()
val set = Sets.newHashSetWithExpectedSize[JFloat](values.length)
for (value <- values) {
set.add(value.asInstanceOf[JFloat])
}
FilterApi.in(floatColumn(n), set)

case ParquetDoubleType =>
(n: Array[String], values: Array[Any]) =>
val set = new HashSet[JDouble]()
val set = Sets.newHashSetWithExpectedSize[JDouble](values.length)
for (value <- values) {
set.add(value.asInstanceOf[JDouble])
}
FilterApi.in(doubleColumn(n), set)

case ParquetStringType =>
(n: Array[String], values: Array[Any]) =>
val set = new HashSet[Binary]()
val set = Sets.newHashSetWithExpectedSize[Binary](values.length)
for (value <- values) {
set.add(Option(value).map(s => Binary.fromString(s.asInstanceOf[String])).orNull)
}
FilterApi.in(binaryColumn(n), set)

case ParquetBinaryType =>
(n: Array[String], values: Array[Any]) =>
val set = new HashSet[Binary]()
val set = Sets.newHashSetWithExpectedSize[Binary](values.length)
for (value <- values) {
set.add(Option(value)
.map(b => Binary.fromReusedByteArray(b.asInstanceOf[Array[Byte]])).orNull)
Expand All @@ -813,23 +813,23 @@ class ParquetFilters(

case ParquetDateType if pushDownDate =>
(n: Array[String], values: Array[Any]) =>
val set = new HashSet[Integer]()
val set = Sets.newHashSetWithExpectedSize[Integer](values.length)
for (value <- values) {
set.add(Option(value).map(date => dateToDays(date).asInstanceOf[Integer]).orNull)
}
FilterApi.in(intColumn(n), set)

case ParquetTimestampMicrosType if pushDownTimestamp =>
(n: Array[String], values: Array[Any]) =>
val set = new HashSet[JLong]()
val set = Sets.newHashSetWithExpectedSize[JLong](values.length)
for (value <- values) {
set.add(Option(value).map(timestampToMicros).orNull)
}
FilterApi.in(longColumn(n), set)

case ParquetTimestampMillisType if pushDownTimestamp =>
(n: Array[String], values: Array[Any]) =>
val set = new HashSet[JLong]()
val set = Sets.newHashSetWithExpectedSize[JLong](values.length)
for (value <- values) {
set.add(Option(value).map(timestampToMillis).orNull)
}
Expand All @@ -840,15 +840,15 @@ class ParquetFilters(

case ParquetSchemaType(_: DecimalLogicalTypeAnnotation, INT32, _) if pushDownDecimal =>
(n: Array[String], values: Array[Any]) =>
val set = new HashSet[Integer]()
val set = Sets.newHashSetWithExpectedSize[Integer](values.length)
for (value <- values) {
set.add(Option(value).map(d => decimalToInt32(d.asInstanceOf[JBigDecimal])).orNull)
}
FilterApi.in(intColumn(n), set)

case ParquetSchemaType(_: DecimalLogicalTypeAnnotation, INT64, _) if pushDownDecimal =>
(n: Array[String], values: Array[Any]) =>
val set = new HashSet[JLong]()
val set = Sets.newHashSetWithExpectedSize[JLong](values.length)
for (value <- values) {
set.add(Option(value).map(d => decimalToInt64(d.asInstanceOf[JBigDecimal])).orNull)
}
Expand All @@ -857,7 +857,7 @@ class ParquetFilters(
case ParquetSchemaType(_: DecimalLogicalTypeAnnotation, FIXED_LEN_BYTE_ARRAY, length)
if pushDownDecimal =>
(n: Array[String], values: Array[Any]) =>
val set = new HashSet[Binary]()
val set = Sets.newHashSetWithExpectedSize[Binary](values.length)
for (value <- values) {
set.add(Option(value)
.map(d => decimalToByteArray(d.asInstanceOf[JBigDecimal], length)).orNull)
Expand Down