turboFei commented on a change in pull request #24685: [SPARK-27814][SQL] The
cast operation for partition key may push down uncorrect filter, which is
fatal.
URL: https://github.com/apache/spark/pull/24685#discussion_r287724196
##########
File path:
sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveShim.scala
##########
@@ -675,12 +675,23 @@ private[client] class Shim_v0_13 extends Shim_v0_12 {
val useAdvanced = SQLConf.get.advancedPartitionPredicatePushdownEnabled
object ExtractAttribute {
+ val partitionKeys = table.getPartitionKeys.asScala.map(_.getName).toSet
+ var castToStr = false
+
def unapply(expr: Expression): Option[Attribute] = {
expr match {
- case attr: Attribute => Some(attr)
+ case attr: Attribute
Review comment:
But if you execute a sql like
```
sql("SELECT c1 FROM t1 WHERE CAST(p1 as STRING) = '5'").show
```
It will throw a exception:
```
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
org.apache.spark.sql.hive.client.Shim_v0_13.getPartitionsByFilter(HiveShim.scala:759)
... 57 more
Caused by: MetaException(message:Filtering is supported only on partition
keys of type string)
```
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]