wangshuo128 commented on a change in pull request #7434:
URL: https://github.com/apache/incubator-doris/pull/7434#discussion_r773700413
##########
File path:
fe/fe-core/src/test/java/org/apache/doris/analysis/ListPartitionPrunerTest.java
##########
@@ -86,86 +83,58 @@ public static void setUp() throws Exception {
+ ")\n"
+ "distributed by hash(k2) buckets 1\n"
+ "properties('replication_num' = '1');";
- dorisAssert = new DorisAssert();
- dorisAssert.withDatabase("test").useDatabase("test");
- dorisAssert.withTable(createSinglePartColWithSinglePartKey)
- .withTable(createSinglePartColWithMultiPartKey)
- .withTable(createMultiPartColWithSinglePartKey)
- .withTable(createMultiPartColWithMultiPartKey);
- }
- @Test
- public void testSelectWithPartition() throws Exception {
- String sql = "select * from t1 partition p1;";
- dorisAssert.query(sql).explainContains("partitions=1/2");
-
- sql = "select * from t2 partition (p2, p3);";
- dorisAssert.query(sql).explainContains("partitions=2/3");
+ createTable(createSinglePartColWithSinglePartKey);
+ createTable(createSinglePartColWithMultiPartKey);
+ createTable(createMultiPartColWithSinglePartKey);
+ createTable(createMultiPartColWithMultiPartKey);
+ }
- sql = "select * from t3 partition (p1, p2);";
- dorisAssert.query(sql).explainContains("partitions=2/2");
+ @AfterClass
+ public static void tearDown() throws Exception {
+ UtFrameUtils.cleanDorisFeDir(runningDir);
+ }
- sql = "select * from t4 partition p2;";
- dorisAssert.query(sql).explainContains("partitions=1/3");
+ private void initTestCases() {
+ // Select by partition name
+ addCase("select * from test.t1 partition p1;", "partitions=1/2",
"partitions=1/2");
+ addCase("select * from test.t2 partition (p2, p3);", "partitions=2/3",
"partitions=2/3");
+ addCase("select * from test.t3 partition (p1, p2);", "partitions=2/2",
"partitions=2/2");
+ addCase("select * from test.t4 partition p2;", "partitions=1/3",
"partitions=1/3");
+
+ // Single partition column
+ addCase("select * from test.t2 where k1 < 7", "partitions=2/3",
"partitions=2/3");
+ addCase("select * from test.t2 where k1 = 1;", "partitions=1/3",
"partitions=1/3");
+ addCase("select * from test.t2 where k1 in (1, 2);", "partitions=2/3",
"partitions=2/3");
+ addCase("select * from test.t2 where k1 >= 6;", "partitions=2/3",
"partitions=2/3");
+ addCase("select * from test.t2 where k1 < 8 and k1 > 6;",
"partitions=1/3", "partitions=1/3");
+ addCase("select * from test.t2 where k2 = \"beijing\";",
"partitions=3/3", "partitions=3/3");
+ addCase("select * from test.t1 where k1 != 1", "partitions=2/2",
"partitions=1/2");
+ addCase("select * from test.t4 where k2 != \"beijing\"",
"partitions=3/3", "partitions=2/3");
+
+ // Multiple partition columns
+ addCase("select * from test.t4 where k1 = 2;", "partitions=2/3",
"partitions=2/3");
+ addCase("select * from test.t4 where k2 = \"tianjin\";",
"partitions=1/3", "partitions=1/3");
+ addCase("select * from test.t4 where k1 = 1 and k2 = \"shanghai\";",
"partitions=2/3", "partitions=1/3");
+ addCase("select * from test.t4 where k1 in (1, 3) and k2 in
(\"tianjin\", \"shanghai\");", "partitions=2/3", "partitions=1/3");
+ addCase("select * from test.t4 where k1 in (1, 3);", "partitions=2/3",
"partitions=2/3");
+ addCase("select * from test.t4 where k2 in (\"tianjin\",
\"shanghai\");", "partitions=2/3", "partitions=2/3");
+ addCase("select * from test.t4 where k1 < 3;", "partitions=3/3",
"partitions=3/3");
+ addCase("select * from test.t4 where k1 > 2;", "partitions=1/3",
"partitions=1/3");
+ addCase("select * from test.t4 where k2 <\"shanghai\";",
"partitions=2/3", "partitions=2/3");
+ addCase("select * from test.t4 where k2 >=\"shanghai\";",
"partitions=2/3", "partitions=2/3");
+ addCase("select * from test.t4 where k1 > 1 and k2 < \"shanghai\";",
"partitions=2/3", "partitions=1/3");
+ addCase("select * from test.t4 where k1 >= 2 and k2 = \"shanghai\";",
"partitions=2/3", "partitions=1/3");
+
+ // Disjunctive predicates
+ addCase("select * from test.t2 where k1=1 or k1=4", "partitions=3/3",
"partitions=2/3");
+ addCase("select * from test.t4 where k1=1 or k1=3", "partitions=3/3",
"partitions=2/3");
+ addCase("select * from test.t4 where k2=\"tianjin\" or
k2=\"shanghai\"", "partitions=3/3", "partitions=2/3");
Review comment:
More test cases added.
--
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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]