From 1e953c0290da2a53305e68d24618a3d3de975a7b Mon Sep 17 00:00:00 2001 From: peach12345 Date: Sun, 21 Dec 2025 17:24:31 +0100 Subject: [PATCH 1/4] fix: use TableIdentifier instead of saving identifier as a string --- .../main/java/org/apache/iceberg/catalog/Namespace.java | 4 +++- .../java/org/apache/iceberg/catalog/TableIdentifier.java | 3 ++- .../main/java/org/apache/iceberg/flink/TableLoader.java | 8 ++++---- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/api/src/main/java/org/apache/iceberg/catalog/Namespace.java b/api/src/main/java/org/apache/iceberg/catalog/Namespace.java index e66be71cfcae..6107576ffc07 100644 --- a/api/src/main/java/org/apache/iceberg/catalog/Namespace.java +++ b/api/src/main/java/org/apache/iceberg/catalog/Namespace.java @@ -25,7 +25,9 @@ import org.apache.iceberg.relocated.com.google.common.base.Preconditions; /** A namespace in a {@link Catalog}. */ -public class Namespace { +public class Namespace implements java.io.Serializable { + + private static final long serialVersionUID = 1L; private static final Namespace EMPTY_NAMESPACE = new Namespace(new String[] {}); private static final Joiner DOT = Joiner.on('.'); private static final Predicate CONTAINS_NULL_CHARACTER = diff --git a/api/src/main/java/org/apache/iceberg/catalog/TableIdentifier.java b/api/src/main/java/org/apache/iceberg/catalog/TableIdentifier.java index cbb5dc8d8fd2..4ec1bd9acd32 100644 --- a/api/src/main/java/org/apache/iceberg/catalog/TableIdentifier.java +++ b/api/src/main/java/org/apache/iceberg/catalog/TableIdentifier.java @@ -18,6 +18,7 @@ */ package org.apache.iceberg.catalog; +import java.io.Serializable; import java.util.Arrays; import java.util.Locale; import java.util.Objects; @@ -26,7 +27,7 @@ import org.apache.iceberg.relocated.com.google.common.collect.Iterables; /** Identifies a table in iceberg catalog. */ -public class TableIdentifier { +public class TableIdentifier implements Serializable { private static final Splitter DOT = Splitter.on('.'); diff --git a/flink/v2.1/flink/src/main/java/org/apache/iceberg/flink/TableLoader.java b/flink/v2.1/flink/src/main/java/org/apache/iceberg/flink/TableLoader.java index da509451fee7..a0c6970041b7 100644 --- a/flink/v2.1/flink/src/main/java/org/apache/iceberg/flink/TableLoader.java +++ b/flink/v2.1/flink/src/main/java/org/apache/iceberg/flink/TableLoader.java @@ -108,13 +108,13 @@ class CatalogTableLoader implements TableLoader { private static final long serialVersionUID = 1L; private final CatalogLoader catalogLoader; - private final String identifier; + private final TableIdentifier identifier; private transient Catalog catalog; private CatalogTableLoader(CatalogLoader catalogLoader, TableIdentifier tableIdentifier) { this.catalogLoader = catalogLoader; - this.identifier = tableIdentifier.toString(); + this.identifier = tableIdentifier; } @Override @@ -130,7 +130,7 @@ public boolean isOpen() { @Override public Table loadTable() { FlinkEnvironmentContext.init(); - return catalog.loadTable(TableIdentifier.parse(identifier)); + return catalog.loadTable(identifier); } @Override @@ -145,7 +145,7 @@ public void close() throws IOException { @Override @SuppressWarnings({"checkstyle:NoClone", "checkstyle:SuperClone"}) public TableLoader clone() { - return new CatalogTableLoader(catalogLoader.clone(), TableIdentifier.parse(identifier)); + return new CatalogTableLoader(catalogLoader.clone(), identifier); } @Override From c897e2507ce17155da564bb1cad4ccb8110a1138 Mon Sep 17 00:00:00 2001 From: peach12345 Date: Fri, 26 Dec 2025 08:19:44 +0100 Subject: [PATCH 2/4] feat: add serialVersionUUID to TableIdentifier.java --- .../main/java/org/apache/iceberg/catalog/TableIdentifier.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api/src/main/java/org/apache/iceberg/catalog/TableIdentifier.java b/api/src/main/java/org/apache/iceberg/catalog/TableIdentifier.java index 4ec1bd9acd32..9f4387f82253 100644 --- a/api/src/main/java/org/apache/iceberg/catalog/TableIdentifier.java +++ b/api/src/main/java/org/apache/iceberg/catalog/TableIdentifier.java @@ -29,7 +29,8 @@ /** Identifies a table in iceberg catalog. */ public class TableIdentifier implements Serializable { - private static final Splitter DOT = Splitter.on('.'); + private static final long serialVersionUID = 1L; + private static final Splitter DOT = Splitter.on('.'); private final Namespace namespace; private final String name; From 3e9e8a68723603f20933815c89fa911d6b4156c5 Mon Sep 17 00:00:00 2001 From: peach12345 Date: Sat, 27 Dec 2025 14:57:53 +0100 Subject: [PATCH 3/4] fix: fix code format --- .../java/org/apache/iceberg/catalog/TableIdentifier.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/org/apache/iceberg/catalog/TableIdentifier.java b/api/src/main/java/org/apache/iceberg/catalog/TableIdentifier.java index 9f4387f82253..ddf8f4315892 100644 --- a/api/src/main/java/org/apache/iceberg/catalog/TableIdentifier.java +++ b/api/src/main/java/org/apache/iceberg/catalog/TableIdentifier.java @@ -29,8 +29,9 @@ /** Identifies a table in iceberg catalog. */ public class TableIdentifier implements Serializable { - private static final long serialVersionUID = 1L; - private static final Splitter DOT = Splitter.on('.'); + + private static final long serialVersionUID = 1L; + private static final Splitter DOT = Splitter.on('.'); private final Namespace namespace; private final String name; From 901cd04d82ff332a6da3833cd959e7947400fe85 Mon Sep 17 00:00:00 2001 From: peach12345 Date: Sat, 27 Dec 2025 15:02:18 +0100 Subject: [PATCH 4/4] fix: fix code format --- .../main/java/org/apache/iceberg/catalog/TableIdentifier.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/api/src/main/java/org/apache/iceberg/catalog/TableIdentifier.java b/api/src/main/java/org/apache/iceberg/catalog/TableIdentifier.java index ddf8f4315892..e0d5a453dc68 100644 --- a/api/src/main/java/org/apache/iceberg/catalog/TableIdentifier.java +++ b/api/src/main/java/org/apache/iceberg/catalog/TableIdentifier.java @@ -29,10 +29,8 @@ /** Identifies a table in iceberg catalog. */ public class TableIdentifier implements Serializable { - private static final long serialVersionUID = 1L; private static final Splitter DOT = Splitter.on('.'); - private final Namespace namespace; private final String name;