Github user dongjoon-hyun commented on a diff in the pull request: https://github.com/apache/spark/pull/22573#discussion_r221477177 --- Diff: sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/DataSourceStrategy.scala --- @@ -437,53 +436,65 @@ object DataSourceStrategy { * @return a `Some[Filter]` if the input [[Expression]] is convertible, otherwise a `None`. */ protected[sql] def translateFilter(predicate: Expression): Option[Filter] = { + // Recursively try to find an attribute name from the top level that can be pushed down. + def attrName(e: Expression): Option[String] = e match { + // In Spark and many data sources such as parquet, dots are used as a column path delimiter; + // thus, we don't translate such expressions. + case a: Attribute if !a.name.contains(".") => + Some(a.name) --- End diff -- Apache Spark 2.4.0 RC2 has a regression on this case. So, for now, this PR doesn't have regssion on `master` branch. ```scala scala> spark.time(spark.read.orc("/tmp/orc").where("`col.with.dot` = 50000").count) Time taken: 2405 ms ```
--- --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org