JingGe commented on code in PR #3816:
URL: https://github.com/apache/paimon/pull/3816#discussion_r1693693991


##########
paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/BranchSqlITCase.java:
##########
@@ -75,12 +76,90 @@ public void testAlterTable() throws Exception {
                         "+I[2, 40, wolf, 400]");
     }
 
-    private List<String> collectResult(TableEnvironment tEnv, String sql) 
throws Exception {
+    @Test
+    public void testFallbackBranchBatchRead() throws Exception {
+        TableEnvironment tEnv = tableEnvironmentBuilder().batchMode().build();
+        tEnv.executeSql(
+                "CREATE CATALOG mycat WITH ( 'type' = 'paimon', 'warehouse' = 
'" + tempDir + "' )");
+        tEnv.executeSql("USE CATALOG mycat");
+        tEnv.executeSql(
+                "CREATE TABLE t ( pt INT NOT NULL, k INT NOT NULL, v STRING ) 
PARTITIONED BY (pt) WITH ( 'bucket' = '-1' )");
+        tEnv.executeSql("CALL sys.create_branch('default.t', 'pk', 'pt, k', 2, 
true)").await();
+        tEnv.executeSql("ALTER TABLE t SET ( 'scan.fallback-branch' = 'pk' )");
+
+        tEnv.executeSql("INSERT INTO t VALUES (1, 10, 'apple'), (1, 20, 
'banana')").await();
+        tEnv.executeSql("INSERT INTO `t$branch_pk` VALUES (1, 10, 'cat'), (1, 
20, 'dog')").await();
+        assertThat(collectResult(tEnv, "SELECT v, k FROM t"))
+                .containsExactlyInAnyOrder("+I[apple, 10]", "+I[banana, 20]");
+
+        tEnv.executeSql("INSERT INTO `t$branch_pk` VALUES (2, 10, 'tiger'), 
(2, 20, 'wolf')")
+                .await();
+        assertThat(collectResult(tEnv, "SELECT v, k FROM t"))
+                .containsExactlyInAnyOrder(
+                        "+I[apple, 10]", "+I[banana, 20]", "+I[tiger, 10]", 
"+I[wolf, 20]");
+        assertThat(collectResult(tEnv, "SELECT v, k FROM t WHERE pt = 1"))
+                .containsExactlyInAnyOrder("+I[apple, 10]", "+I[banana, 20]");
+        assertThat(collectResult(tEnv, "SELECT v, k FROM t WHERE pt = 2"))
+                .containsExactlyInAnyOrder("+I[tiger, 10]", "+I[wolf, 20]");
+
+        tEnv.executeSql("INSERT INTO `t$branch_pk` VALUES (2, 10, 
'lion')").await();
+        assertThat(collectResult(tEnv, "SELECT v, k FROM t"))
+                .containsExactlyInAnyOrder(
+                        "+I[apple, 10]", "+I[banana, 20]", "+I[lion, 10]", 
"+I[wolf, 20]");

Review Comment:
   Nit: additional test when `scan.fallback-branch` is not set, i.e. only 
return data from main branch



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