You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@seatunnel.apache.org by li...@apache.org on 2023/03/26 10:36:13 UTC
[incubator-seatunnel] branch dev updated: [Feature][API] Add copy method to Catalog codes (#4414)
This is an automated email from the ASF dual-hosted git repository.
liugddx pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-seatunnel.git
The following commit(s) were added to refs/heads/dev by this push:
new b8c6bbd1e [Feature][API] Add copy method to Catalog codes (#4414)
b8c6bbd1e is described below
commit b8c6bbd1e6dea6462d419d6c7adf20f04d7a2430
Author: Eric <ga...@gmail.com>
AuthorDate: Sun Mar 26 18:36:07 2023 +0800
[Feature][API] Add copy method to Catalog codes (#4414)
---
.../apache/seatunnel/api/table/catalog/ConstraintKey.java | 11 +++++++++++
.../org/apache/seatunnel/api/table/catalog/PrimaryKey.java | 5 +++++
.../apache/seatunnel/api/table/catalog/TableIdentifier.java | 4 ++++
.../org/apache/seatunnel/api/table/catalog/TableSchema.java | 13 +++++++++++++
4 files changed, 33 insertions(+)
diff --git a/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/ConstraintKey.java b/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/ConstraintKey.java
index d08fb886c..a5e9a1266 100644
--- a/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/ConstraintKey.java
+++ b/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/ConstraintKey.java
@@ -22,6 +22,7 @@ import lombok.Data;
import java.io.Serializable;
import java.util.List;
+import java.util.stream.Collectors;
import static com.google.common.base.Preconditions.checkNotNull;
@@ -62,6 +63,10 @@ public class ConstraintKey implements Serializable {
public static ConstraintKeyColumn of(String columnName, ColumnSortType sortType) {
return new ConstraintKeyColumn(columnName, sortType);
}
+
+ public ConstraintKeyColumn copy() {
+ return ConstraintKeyColumn.of(columnName, sortType);
+ }
}
public enum ConstraintType {
@@ -74,4 +79,10 @@ public class ConstraintKey implements Serializable {
ASC,
DESC
}
+
+ public ConstraintKey copy() {
+ List<ConstraintKeyColumn> collect =
+ columnNames.stream().map(ConstraintKeyColumn::copy).collect(Collectors.toList());
+ return ConstraintKey.of(constraintType, constraintName, collect);
+ }
}
diff --git a/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/PrimaryKey.java b/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/PrimaryKey.java
index d5e32c828..e8a3a7402 100644
--- a/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/PrimaryKey.java
+++ b/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/PrimaryKey.java
@@ -21,6 +21,7 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import java.io.Serializable;
+import java.util.ArrayList;
import java.util.List;
@Data
@@ -36,4 +37,8 @@ public class PrimaryKey implements Serializable {
public static PrimaryKey of(String primaryKey, List<String> columnNames) {
return new PrimaryKey(primaryKey, columnNames);
}
+
+ public PrimaryKey copy() {
+ return PrimaryKey.of(primaryKey, new ArrayList<>(columnNames));
+ }
}
diff --git a/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/TableIdentifier.java b/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/TableIdentifier.java
index 66ae7df2d..102570b82 100644
--- a/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/TableIdentifier.java
+++ b/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/TableIdentifier.java
@@ -74,6 +74,10 @@ public final class TableIdentifier implements Serializable {
return Objects.hash(catalogName, databaseName, tableName);
}
+ public TableIdentifier copy() {
+ return TableIdentifier.of(catalogName, databaseName, tableName);
+ }
+
@Override
public String toString() {
return String.join(".", catalogName, databaseName, tableName);
diff --git a/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/TableSchema.java b/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/TableSchema.java
index bd494bfd8..f2b33baa6 100644
--- a/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/TableSchema.java
+++ b/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/TableSchema.java
@@ -26,6 +26,7 @@ import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
+import java.util.stream.Collectors;
/** Represent a physical table schema. */
@Data
@@ -91,5 +92,17 @@ public final class TableSchema implements Serializable {
public TableSchema build() {
return new TableSchema(columns, primaryKey, constraintKeys);
}
+
+ public TableSchema copy() {
+ List<Column> copyColumns =
+ columns.stream().map(Column::copy).collect(Collectors.toList());
+ List<ConstraintKey> copyConstraintKeys =
+ constraintKeys.stream().map(ConstraintKey::copy).collect(Collectors.toList());
+ return TableSchema.builder()
+ .constraintKey(copyConstraintKeys)
+ .columns(copyColumns)
+ .primaryKey(primaryKey.copy())
+ .build();
+ }
}
}