xuyangzhong commented on a change in pull request #17652:
URL: https://github.com/apache/flink/pull/17652#discussion_r742535921



##########
File path: 
flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/plan/batch/sql/PartitionableSourceTest.scala
##########
@@ -76,30 +98,41 @@ class PartitionableSourceTest(
         val catalogPartitionSpec = new CatalogPartitionSpec(partition)
         val catalogPartition = new CatalogPartitionImpl(
           new java.util.HashMap[String, String](), "")
-        catalog.createPartition(mytablePath, catalogPartitionSpec, 
catalogPartition, true)
+        catalog.createPartition(
+          partitionableTablePath, catalogPartitionSpec, catalogPartition, true)
+        catalog.createPartition(
+          partitionableAndFilterableTablePath, catalogPartitionSpec, 
catalogPartition, true)
       })
     }
   }
 
   @Test
   def testSimplePartitionFieldPredicate1(): Unit = {
-    util.verifyExecPlan("SELECT * FROM MyTable WHERE part1 = 'A'")
+    util.verifyExecPlan("SELECT * FROM PartitionableTable WHERE part1 = 'A'")
   }
 
   @Test
   def testPartialPartitionFieldPredicatePushDown(): Unit = {
-    util.verifyExecPlan("SELECT * FROM MyTable WHERE (id > 2 OR part1 = 'A') 
AND part2 > 1")
+    util.verifyExecPlan(
+      "SELECT * FROM PartitionableTable WHERE (id > 2 OR part1 = 'A') AND 
part2 > 1")
   }
 
   @Test
   def testWithUdfAndVirtualColumn(): Unit = {
     util.addFunction("MyUdf", Func1)
-    util.verifyExecPlan("SELECT * FROM MyTable WHERE id > 2 AND MyUdf(part2) < 
3")
+    util.verifyExecPlan("SELECT * FROM PartitionableTable WHERE id > 2 AND 
MyUdf(part2) < 3")
   }
 
   @Test
   def testUnconvertedExpression(): Unit = {
-    util.verifyExecPlan("select * from MyTable where trim(part1) = 'A' and 
part2 > 1")
+    util.verifyExecPlan("select * from PartitionableTable where trim(part1) = 
'A' and part2 > 1")
+  }
+
+  @Test
+  def testPushDownPartitionAndFiltersContainPartitionKeys(): Unit = {
+    util.verifyExecPlan(
+      "select * from PartitionableAndFilterableTable " +

Review comment:
       Actually, this case will only remain `name` in the projected field. 
Because in this case, filters will be pushed down before projection, and 
projection will not contain the fields  in filters that will no be used later. 
   However, if the case contains watermark, filters will be pushed down after 
projection.And projection fields will contains the fields in filters, just like 
you said.




-- 
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.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to