This is an automated email from the ASF dual-hosted git repository.
zongwen pushed a commit to branch cdc-multiple-table
in repository https://gitbox.apache.org/repos/asf/incubator-seatunnel.git
The following commit(s) were added to refs/heads/cdc-multiple-table by this
push:
new 95e3cbf87 [improve][catalog][jdbc] Add MySQL catalog factory (#4168)
95e3cbf87 is described below
commit 95e3cbf87541c1d9d2697cb22720e21d4afeec7e
Author: Zongwen Li <[email protected]>
AuthorDate: Mon Feb 20 17:24:57 2023 +0800
[improve][catalog][jdbc] Add MySQL catalog factory (#4168)
---
.../seatunnel/jdbc/catalog/JdbcCatalogOptions.java | 21 +++++++++++++--
...atalogOptions.java => MySqlCatalogFactory.java} | 31 ++++++++++++++++------
2 files changed, 42 insertions(+), 10 deletions(-)
diff --git
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/JdbcCatalogOptions.java
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/JdbcCatalogOptions.java
index 93ea1e609..9fc39d054 100644
---
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/JdbcCatalogOptions.java
+++
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/JdbcCatalogOptions.java
@@ -19,11 +19,28 @@ package
org.apache.seatunnel.connectors.seatunnel.jdbc.catalog;
import org.apache.seatunnel.api.configuration.Option;
import org.apache.seatunnel.api.configuration.Options;
+import org.apache.seatunnel.api.configuration.util.OptionRule;
-public class JdbcCatalogOptions {
- public static final Option<String> BASE_URL = Options.key("base-url")
+public interface JdbcCatalogOptions {
+ Option<String> BASE_URL = Options.key("base-url")
.stringType()
.noDefaultValue()
.withDescription("URL has to be without database, like
\"jdbc:mysql://localhost:5432/\" or" +
"\"jdbc:mysql://localhost:5432\" rather than
\"jdbc:mysql://localhost:5432/db\"");
+
+ Option<String> USERNAME =
+ Options.key("username")
+ .stringType()
+ .noDefaultValue()
+ .withDescription("Name of the database to use when connecting to
the database server.");
+
+ Option<String> PASSWORD =
+ Options.key("password")
+ .stringType()
+ .noDefaultValue()
+ .withDescription("Password to use when connecting to the database
server.");
+
+ OptionRule.Builder BASE_RULE = OptionRule.builder()
+ .required(BASE_URL)
+ .required(USERNAME, PASSWORD);
}
diff --git
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/JdbcCatalogOptions.java
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/MySqlCatalogFactory.java
similarity index 51%
copy from
seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/JdbcCatalogOptions.java
copy to
seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/MySqlCatalogFactory.java
index 93ea1e609..d9bd85f08 100644
---
a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/JdbcCatalogOptions.java
+++
b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/MySqlCatalogFactory.java
@@ -17,13 +17,28 @@
package org.apache.seatunnel.connectors.seatunnel.jdbc.catalog;
-import org.apache.seatunnel.api.configuration.Option;
-import org.apache.seatunnel.api.configuration.Options;
+import org.apache.seatunnel.api.configuration.ReadonlyConfig;
+import org.apache.seatunnel.api.configuration.util.OptionRule;
+import org.apache.seatunnel.api.table.catalog.Catalog;
+import org.apache.seatunnel.api.table.factory.CatalogFactory;
-public class JdbcCatalogOptions {
- public static final Option<String> BASE_URL = Options.key("base-url")
- .stringType()
- .noDefaultValue()
- .withDescription("URL has to be without database, like
\"jdbc:mysql://localhost:5432/\" or" +
- "\"jdbc:mysql://localhost:5432\" rather than
\"jdbc:mysql://localhost:5432/db\"");
+public class MySqlCatalogFactory implements CatalogFactory {
+
+ @Override
+ public String factoryIdentifier() {
+ return "MySQL";
+ }
+
+ @Override
+ public Catalog createCatalog(String catalogName, ReadonlyConfig options) {
+ return new MySqlCatalog(catalogName,
+ options.get(JdbcCatalogOptions.USERNAME),
+ options.get(JdbcCatalogOptions.PASSWORD),
+ options.get(JdbcCatalogOptions.BASE_URL));
+ }
+
+ @Override
+ public OptionRule optionRule() {
+ return JdbcCatalogOptions.BASE_RULE.build();
+ }
}