You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "linguoxuan (via GitHub)" <gi...@apache.org> on 2026/01/05 12:46:11 UTC

[PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

linguoxuan opened a new pull request, #4212:
URL: https://github.com/apache/flink-cdc/pull/4212

   Add option `route-mode`(first-match/all-match) into `pipeline` structure.


-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

Posted by "yuxiqian (via GitHub)" <gi...@apache.org>.
yuxiqian commented on code in PR #4212:
URL: https://github.com/apache/flink-cdc/pull/4212#discussion_r2663283629


##########
flink-cdc-cli/src/main/java/org/apache/flink/cdc/cli/parser/YamlPipelineDefinitionParser.java:
##########
@@ -143,6 +149,13 @@ private PipelineDef parse(JsonNode pipelineDefJsonNode, Configuration globalPipe
                             ((ObjectNode) pipelineDefJsonNode.get(PIPELINE_KEY)).remove(MODEL_KEY))
                     .map(node -> validateArray("model", node))
                     .ifPresent(node -> modelDefs.addAll(parseModels(node)));
+
+            // Extract route-mode from pipeline if present
+            JsonNode pipelineNode = pipelineDefJsonNode.get(PIPELINE_KEY);
+            if (pipelineNode.has(ROUTE_MODE_KEY)) {
+                routeMode = pipelineNode.get(ROUTE_MODE_KEY).asText();
+                ((ObjectNode) pipelineNode).remove(ROUTE_MODE_KEY);
+            }

Review Comment:
   We may define `ROUTE_MODE_KEY` as an EnumOption in `PipelineOptions` and retrieve it later without modifying the parser:
   
   ```java
   RouteMode routeMode = pipelineConfig.get(PIPELINE_ROUTE_MODE_BEHAVIOR)
   ```
   
   similar to `PIPELINE_SCHEMA_CHANGE_BEHAVIOR`.



##########
flink-cdc-common/src/main/java/org/apache/flink/cdc/common/route/RouteRule.java:
##########
@@ -24,6 +24,43 @@ public class RouteRule implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    /** Match mode for routing rules. */
+    public enum MatchMode {

Review Comment:
   This enum should be part of public API. What about put it in `org.apache.flink.cdc.common.pipeline` and mark it with `@PublicEvolving`?



##########
flink-cdc-cli/src/main/java/org/apache/flink/cdc/cli/parser/YamlPipelineDefinitionParser.java:
##########
@@ -189,7 +202,14 @@ private PipelineDef parse(JsonNode pipelineDefJsonNode, Configuration globalPipe
         pipelineConfig.addAll(userPipelineConfig);
 
         return new PipelineDef(
-                sourceDef, sinkDef, routeDefs, transformDefs, udfDefs, modelDefs, pipelineConfig);
+                sourceDef,
+                sinkDef,
+                routeDefs,
+                routeMode,
+                transformDefs,
+                udfDefs,
+                modelDefs,
+                pipelineConfig);

Review Comment:
   Putting `routeMode` in `pipelineConfig` would be neater



-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

Posted by "linguoxuan (via GitHub)" <gi...@apache.org>.
linguoxuan commented on PR #4212:
URL: https://github.com/apache/flink-cdc/pull/4212#issuecomment-3713860714

   > I've checked the error logs. The CI failure appears to be an environment issue. cc @yuxiqian
   
   Do you have any other insights?


-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

Posted by "sd4324530 (via GitHub)" <gi...@apache.org>.
sd4324530 commented on PR #4212:
URL: https://github.com/apache/flink-cdc/pull/4212#issuecomment-3810045537

   Will this feature be available in version 3.6.0?


-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

Posted by "linguoxuan (via GitHub)" <gi...@apache.org>.
linguoxuan commented on code in PR #4212:
URL: https://github.com/apache/flink-cdc/pull/4212#discussion_r2666879218


##########
flink-cdc-common/src/main/java/org/apache/flink/cdc/common/pipeline/PipelineOptions.java:
##########
@@ -72,6 +72,22 @@ public class PipelineOptions {
                                                             "EXCEPTION: Throw an exception to terminate the sync pipeline.")))
                                     .build());
 
+    public static final ConfigOption<String> PIPELINE_ROUTE_MODE =
+            ConfigOptions.key("route-mode")
+                    .stringType()

Review Comment:
   Got it. Thanks to clarify. I have pushed a new commit.



-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

Posted by "linguoxuan (via GitHub)" <gi...@apache.org>.
linguoxuan commented on PR #4212:
URL: https://github.com/apache/flink-cdc/pull/4212#issuecomment-3710336655

   @yuxiqian Could you please take a look at this PR?


-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

Posted by "yuxiqian (via GitHub)" <gi...@apache.org>.
yuxiqian commented on code in PR #4212:
URL: https://github.com/apache/flink-cdc/pull/4212#discussion_r2666817804


##########
flink-cdc-common/src/main/java/org/apache/flink/cdc/common/pipeline/PipelineOptions.java:
##########
@@ -72,6 +72,22 @@ public class PipelineOptions {
                                                             "EXCEPTION: Throw an exception to terminate the sync pipeline.")))
                                     .build());
 
+    public static final ConfigOption<String> PIPELINE_ROUTE_MODE =
+            ConfigOptions.key("route-mode")
+                    .stringType()

Review Comment:
   Just checked other enumType options and most of them require keys in SCREAMING_SNAKE_CASE.
   
   We may modify `ConfigurationUtils#convertToEnum` to allow barbeque namings for enum values later in another PR.



-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

Posted by "linguoxuan (via GitHub)" <gi...@apache.org>.
linguoxuan commented on PR #4212:
URL: https://github.com/apache/flink-cdc/pull/4212#issuecomment-3713858212

   I've checked the error logs. The CI failure appears to be an environment issue.  cc @yuxiqian 


-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

Posted by "yuxiqian (via GitHub)" <gi...@apache.org>.
yuxiqian merged PR #4212:
URL: https://github.com/apache/flink-cdc/pull/4212


-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

Posted by "yuxiqian (via GitHub)" <gi...@apache.org>.
yuxiqian commented on PR #4212:
URL: https://github.com/apache/flink-cdc/pull/4212#issuecomment-4197129503

   Never mind, thanks for your contribution!


-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

Posted by "yuxiqian (via GitHub)" <gi...@apache.org>.
yuxiqian commented on code in PR #4212:
URL: https://github.com/apache/flink-cdc/pull/4212#discussion_r2664732799


##########
flink-cdc-common/src/main/java/org/apache/flink/cdc/common/pipeline/PipelineOptions.java:
##########
@@ -72,6 +72,22 @@ public class PipelineOptions {
                                                             "EXCEPTION: Throw an exception to terminate the sync pipeline.")))
                                     .build());
 
+    public static final ConfigOption<String> PIPELINE_ROUTE_MODE =
+            ConfigOptions.key("route-mode")
+                    .stringType()

Review Comment:
   Is it possible to declare it like this?
   
   ```suggestion
       public static final ConfigOption<RouteMode> PIPELINE_ROUTE_MODE =
               ConfigOptions.key("route-mode")
                       .enumType(RouteMode.class)
   ```



-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

Posted by "linguoxuan (via GitHub)" <gi...@apache.org>.
linguoxuan commented on PR #4212:
URL: https://github.com/apache/flink-cdc/pull/4212#issuecomment-4197120726

   > Hi @linguoxuan, sorry for the late reply. Could you please rebase this PR with master so we can push this forward?
   
   Sorry, I missed your message.


-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

Posted by "yuxiqian (via GitHub)" <gi...@apache.org>.
yuxiqian commented on PR #4212:
URL: https://github.com/apache/flink-cdc/pull/4212#issuecomment-4028489263

   Hi @linguoxuan, sorry for the late reply. Could you please rebase this PR with master so we can push this forward?


-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

Posted by "Copilot (via GitHub)" <gi...@apache.org>.
Copilot commented on code in PR #4212:
URL: https://github.com/apache/flink-cdc/pull/4212#discussion_r2909754072


##########
flink-cdc-common/src/main/java/org/apache/flink/cdc/common/route/TableIdRouter.java:
##########
@@ -105,7 +107,8 @@ public static String convertTableListToRegExpPattern(String tables) {
         return standardRegExpTableCaptureList;
     }
 
-    public TableIdRouter(List<RouteRule> routingRules) {
+    public TableIdRouter(List<RouteRule> routingRules, RouteMode routeMode) {
+        this.routeMode = routeMode;
         this.routes = new ArrayList<>();

Review Comment:
   `TableIdRouter` is `@PublicEvolving` and this change removes the previous constructor that accepted only `List<RouteRule>`, which is a source/binary incompatible API break for existing users. Consider keeping an overload `TableIdRouter(List<RouteRule>)` that delegates to `RouteMode.ALL_MATCH` so existing code keeps compiling and behavior stays the default.



##########
flink-cdc-common/src/main/java/org/apache/flink/cdc/common/route/TableIdRouter.java:
##########
@@ -139,11 +142,19 @@ public List<TableId> route(TableId sourceTableId) {
     }
 
     private List<TableId> calculateRoute(TableId sourceTableId) {
-        List<TableId> routedTableIds =
-                routes.stream()
-                        .filter(route -> matches(route.f0, sourceTableId))
-                        .map(route -> resolveReplacement(sourceTableId, route))
-                        .collect(Collectors.toList());
+        List<TableId> routedTableIds = new ArrayList<>();
+
+        for (Tuple3<Pattern, String, String> route : routes) {
+            if (matches(route.f0, sourceTableId)) {
+                routedTableIds.add(resolveReplacement(sourceTableId, route));
+
+                // If match mode is FIRST_MATCH, stop after the first match
+                if (routeMode == RouteMode.FIRST_MATCH) {
+                    break;
+                }
+            }
+        }

Review Comment:
   `FIRST_MATCH` is applied in `calculateRoute()`, but `groupSourceTablesByRouteRule()` (used by `SchemaDerivator.deduceMergedCreateTableEvent`) still groups tables into *every* matching rule. With overlapping rules, in `FIRST_MATCH` mode a table can be merged into multiple groups and later groups can overwrite the schema for the first-match sink table, producing incorrect merged schemas. `groupSourceTablesByRouteRule()` should respect `routeMode` (e.g., assign each source table to only the first matching rule when `FIRST_MATCH`).



##########
flink-cdc-cli/src/test/resources/definitions/pipeline-definition-with-route-mode.yaml:
##########
@@ -0,0 +1,48 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Example pipeline definition with route match-mode
+source:
+  type: mysql
+  hostname: localhost
+  port: 3306
+  username: root
+  password: 123456
+  tables: mydb.\.*
+  server-id: 5400-5404
+  server-time-zone: UTC
+
+sink:
+  type: doris
+  fenodes: 127.0.0.1:8030
+  username: root
+  password: ""
+
+route:
+  - source-table: mydb.order_.*
+    sink-table: ods_db.ods_orders
+    description: "Merge all order sharded tables"
+  - source-table: mydb.product_.*
+    sink-table: ods_db.ods_products
+    description: "Merge all product sharded tables"
+  - source-table: mydb.*
+    sink-table: ods_db.ods_<>

Review Comment:
   This example route configuration uses unescaped `.*` in `source-table` patterns (e.g., `mydb.order_.*`). `TableIdRouter.convertTableListToRegExpPattern()` treats unescaped `.` as the database/table separator and requires escaping `\.` when you intend regex wildcard matching, otherwise the `.*` is rewritten as a literal dot and won’t match tables like `mydb.order_1`. The patterns here should use the CDC-style form (e.g., `mydb.order_\.*`, `mydb\.*`) to behave as intended.



-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

Posted by "linguoxuan (via GitHub)" <gi...@apache.org>.
linguoxuan commented on PR #4212:
URL: https://github.com/apache/flink-cdc/pull/4212#issuecomment-3713352954

   > Thanks for @linguoxuan's nice work, just left some minor comments.
   > 
   > Adding more IT / E2e tests in `FlinkPipelineComposerITCase` and `RouteE2eITCase` would be nice, too.
   
   @yuxiqian Thanks for the review! I've addressed your comments and add more IT/E2E case in a new commit. 
   
   Please take another look when you have time and let me know if anything else needs adjustment!


-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

Posted by "linguoxuan (via GitHub)" <gi...@apache.org>.
linguoxuan commented on code in PR #4212:
URL: https://github.com/apache/flink-cdc/pull/4212#discussion_r2664815784


##########
flink-cdc-common/src/main/java/org/apache/flink/cdc/common/pipeline/PipelineOptions.java:
##########
@@ -72,6 +72,22 @@ public class PipelineOptions {
                                                             "EXCEPTION: Throw an exception to terminate the sync pipeline.")))
                                     .build());
 
+    public static final ConfigOption<String> PIPELINE_ROUTE_MODE =
+            ConfigOptions.key("route-mode")
+                    .stringType()

Review Comment:
   In that case, we can only pass this parameter via route-mode: FIRST_MATCH. What I'm thinking is to allow users to pass it in ways like route-mode: first-match, route-mode: First-Match, or route-mode: FIRST_MATCH. What do you think? Or have I missed some methods? @yuxiqian 



-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

Posted by "linguoxuan (via GitHub)" <gi...@apache.org>.
linguoxuan commented on code in PR #4212:
URL: https://github.com/apache/flink-cdc/pull/4212#discussion_r2666879218


##########
flink-cdc-common/src/main/java/org/apache/flink/cdc/common/pipeline/PipelineOptions.java:
##########
@@ -72,6 +72,22 @@ public class PipelineOptions {
                                                             "EXCEPTION: Throw an exception to terminate the sync pipeline.")))
                                     .build());
 
+    public static final ConfigOption<String> PIPELINE_ROUTE_MODE =
+            ConfigOptions.key("route-mode")
+                    .stringType()

Review Comment:
   Got it. Thanks to clarify! I have pushed a new commit. Please take another look when you have time.



-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

Posted by "yuxiqian (via GitHub)" <gi...@apache.org>.
yuxiqian commented on PR #4212:
URL: https://github.com/apache/flink-cdc/pull/4212#issuecomment-4073580254

   Would @leonardBang @lvyanquan like to take a look?


-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

Posted by "Copilot (via GitHub)" <gi...@apache.org>.
Copilot commented on code in PR #4212:
URL: https://github.com/apache/flink-cdc/pull/4212#discussion_r2909861895


##########
flink-cdc-common/src/main/java/org/apache/flink/cdc/common/route/TableIdRouter.java:
##########
@@ -177,13 +192,34 @@ public List<Set<TableId>> groupSourceTablesByRouteRule(Set<TableId> tableIdSet)
         if (routes.isEmpty()) {
             return new ArrayList<>();
         }
-        return routes.stream()
-                .map(
-                        route ->
-                                tableIdSet.stream()
-                                        .filter(tableId -> matches(route.f0, tableId))
-                                        .collect(Collectors.toSet()))
-                .collect(Collectors.toList());
+
+        if (routeMode == RouteMode.ALL_MATCH) {
+            return routes.stream()
+                    .map(
+                            route ->
+                                    tableIdSet.stream()
+                                            .filter(tableId -> matches(route.f0, tableId))
+                                            .collect(Collectors.toSet()))
+                    .collect(Collectors.toList());
+        } else if (routeMode == RouteMode.FIRST_MATCH) {
+            List<Set<TableId>> matchedRules = new ArrayList<>();
+            for (TableId tableId : tableIdSet) {
+                boolean matched = false;
+                for (Tuple3<Pattern, String, String> route : routes) {
+                    if (matches(route.f0, tableId)) {
+                        matchedRules.add(Set.of(tableId));

Review Comment:
   `groupSourceTablesByRouteRule()`'s `FIRST_MATCH` branch is not grouping by route rule: it returns one set per *input table* (and even adds empty sets for unmatched tables), so the returned list size depends on `tableIdSet` rather than the number of routing rules. This breaks the method contract ("groups <= routing rules") and causes incorrect/non-deterministic schema merging in `SchemaDerivator.deduceMergedCreateTableEvent()` (tables routing to the same sink won’t be merged; the last processed table can overwrite the merged schema). Rework the `FIRST_MATCH` branch to build one group per routing rule (preserving rule order), assign each table to the first matching rule’s group, and omit unmatched tables from all groups.



-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [FLINK-38831][route] The route configuration supports matching the first one [flink-cdc]

Posted by "yuxiqian (via GitHub)" <gi...@apache.org>.
yuxiqian commented on code in PR #4212:
URL: https://github.com/apache/flink-cdc/pull/4212#discussion_r2909808698


##########
flink-cdc-cli/src/test/resources/definitions/pipeline-definition-with-route-mode.yaml:
##########
@@ -0,0 +1,48 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Example pipeline definition with route match-mode
+source:
+  type: mysql
+  hostname: localhost
+  port: 3306
+  username: root
+  password: 123456
+  tables: mydb.\.*
+  server-id: 5400-5404
+  server-time-zone: UTC
+
+sink:
+  type: doris
+  fenodes: 127.0.0.1:8030
+  username: root
+  password: ""
+
+route:
+  - source-table: mydb.order_.*
+    sink-table: ods_db.ods_orders
+    description: "Merge all order sharded tables"
+  - source-table: mydb.product_.*
+    sink-table: ods_db.ods_products
+    description: "Merge all product sharded tables"
+  - source-table: mydb.*
+    sink-table: ods_db.ods_<>

Review Comment:
   Irrelevant to changes in this PR.



-- 
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: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org