diff --git a/extensions/spark/kyuubi-spark-connector-hive/src/main/scala/org/apache/kyuubi/spark/connector/hive/read/HiveScanBuilder.scala b/extensions/spark/kyuubi-spark-connector-hive/src/main/scala/org/apache/kyuubi/spark/connector/hive/read/HiveScanBuilder.scala index 8e90cc3ab..89836e712 100644 --- a/extensions/spark/kyuubi-spark-connector-hive/src/main/scala/org/apache/kyuubi/spark/connector/hive/read/HiveScanBuilder.scala +++ b/extensions/spark/kyuubi-spark-connector-hive/src/main/scala/org/apache/kyuubi/spark/connector/hive/read/HiveScanBuilder.scala @@ -37,6 +37,8 @@ case class HiveScanBuilder( catalogTable = table, dataSchema = dataSchema, readDataSchema = readDataSchema(), - readPartitionSchema = readPartitionSchema()) + readPartitionSchema = readPartitionSchema(), + partitionFilters = partitionFilters, + dataFilters = dataFilters) } } diff --git a/extensions/spark/kyuubi-spark-connector-hive/src/test/scala/org/apache/kyuubi/spark/connector/hive/HiveQuerySuite.scala b/extensions/spark/kyuubi-spark-connector-hive/src/test/scala/org/apache/kyuubi/spark/connector/hive/HiveQuerySuite.scala index e61325647..16ea03234 100644 --- a/extensions/spark/kyuubi-spark-connector-hive/src/test/scala/org/apache/kyuubi/spark/connector/hive/HiveQuerySuite.scala +++ b/extensions/spark/kyuubi-spark-connector-hive/src/test/scala/org/apache/kyuubi/spark/connector/hive/HiveQuerySuite.scala @@ -107,6 +107,30 @@ class HiveQuerySuite extends KyuubiHiveTest { } } + test("[KYUUBI #4525] Partitioning predicates should take effect to filter data") { + withSparkSession(Map("hive.exec.dynamic.partition.mode" -> "nonstrict")) { spark => + val table = "hive.default.employee" + withTempPartitionedTable(spark, table) { + spark.sql( + s""" + | INSERT OVERWRITE + | $table + | VALUES("yi", "2022", "0808"),("yi", "2023", "0316") + |""".stripMargin).collect() + + checkQueryResult( + s"select * from $table where year = '2022'", + spark, + Array(Row.apply("yi", "2022", "0808"))) + + checkQueryResult( + s"select * from $table where year = '2023'", + spark, + Array(Row.apply("yi", "2023", "0316"))) + } + } + } + test("Partitioned table insert and all static insert") { withSparkSession() { spark => val table = "hive.default.employee"