This is an automated email from the ASF dual-hosted git repository.

snuyanzin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/master by this push:
     new 185975918a1 [FLINK-39606][table] Add 
includeFreshness/includeRefreshMode flags to buildShowCreateMaterializedTableRow
185975918a1 is described below

commit 185975918a1897a3ddffa5a56d297cc004a511d0
Author: Ramin Gharib <[email protected]>
AuthorDate: Tue May 5 22:50:20 2026 +0200

    [FLINK-39606][table] Add includeFreshness/includeRefreshMode flags to 
buildShowCreateMaterializedTableRow
---
 .../flink/table/api/internal/ShowCreateUtil.java   | 31 +++++++++++++--
 .../table/api/internal/ShowCreateUtilTest.java     | 45 ++++++++++++++++++++++
 2 files changed, 72 insertions(+), 4 deletions(-)

diff --git 
a/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/api/internal/ShowCreateUtil.java
 
b/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/api/internal/ShowCreateUtil.java
index 74f17c06807..dfc9fef79c5 100644
--- 
a/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/api/internal/ShowCreateUtil.java
+++ 
b/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/api/internal/ShowCreateUtil.java
@@ -131,6 +131,27 @@ public class ShowCreateUtil {
             boolean createOrAlter,
             ZoneId timeZoneId,
             SqlFactory sqlFactory) {
+        return buildShowCreateMaterializedTableRow(
+                table,
+                tableIdentifier,
+                isTemporary,
+                createOrAlter,
+                timeZoneId,
+                sqlFactory,
+                true,
+                true);
+    }
+
+    /** Show create materialized table statement only for materialized tables. 
*/
+    public static String buildShowCreateMaterializedTableRow(
+            ResolvedCatalogMaterializedTable table,
+            ObjectIdentifier tableIdentifier,
+            boolean isTemporary,
+            boolean createOrAlter,
+            ZoneId timeZoneId,
+            SqlFactory sqlFactory,
+            boolean includeFreshness,
+            boolean includeRefreshMode) {
         validateTableKind(table, tableIdentifier, 
TableKind.MATERIALIZED_TABLE);
         StringBuilder sb =
                 new StringBuilder()
@@ -156,10 +177,12 @@ public class ShowCreateUtil {
         extractFormattedOptions(table.getOptions(), PRINT_INDENT)
                 .ifPresent(v -> sb.append("WITH 
(\n").append(v).append("\n)\n"));
         sb.append(extractStartMode(table, timeZoneId)).append("\n");
-        sb.append(extractFreshness(table))
-                .append("\n")
-                .append(extractRefreshMode(table))
-                .append("\n");
+        if (includeFreshness) {
+            sb.append(extractFreshness(table)).append("\n");
+        }
+        if (includeRefreshMode) {
+            sb.append(extractRefreshMode(table)).append("\n");
+        }
         sb.append("AS ").append(table.getExpandedQuery()).append('\n');
         return sb.toString();
     }
diff --git 
a/flink-table/flink-table-api-java/src/test/java/org/apache/flink/table/api/internal/ShowCreateUtilTest.java
 
b/flink-table/flink-table-api-java/src/test/java/org/apache/flink/table/api/internal/ShowCreateUtilTest.java
index ff79a0c8f15..69df0555728 100644
--- 
a/flink-table/flink-table-api-java/src/test/java/org/apache/flink/table/api/internal/ShowCreateUtilTest.java
+++ 
b/flink-table/flink-table-api-java/src/test/java/org/apache/flink/table/api/internal/ShowCreateUtilTest.java
@@ -47,6 +47,7 @@ import org.apache.flink.table.expressions.DefaultSqlFactory;
 
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.CsvSource;
 import org.junit.jupiter.params.provider.MethodSource;
 
 import java.time.Instant;
@@ -146,6 +147,50 @@ class ShowCreateUtilTest {
         assertThat(normalizedMTString).isEqualTo(normalizedExpected);
     }
 
+    @ParameterizedTest(name = "includeFreshness={0}, includeRefreshMode={1}")
+    @CsvSource({"true, true", "true, false", "false, true", "false, false"})
+    void showCreateMaterializedTableWithFlags(
+            final boolean includeFreshness, final boolean includeRefreshMode) {
+        final ResolvedCatalogMaterializedTable materializedTable =
+                createResolvedMaterialized(
+                        ONE_COLUMN_SCHEMA,
+                        null,
+                        List.of(),
+                        null,
+                        StartMode.of(StartModeKind.FROM_BEGINNING),
+                        IntervalFreshness.ofMinute(2),
+                        RefreshMode.CONTINUOUS,
+                        "SELECT 1",
+                        "SELECT 1");
+        final String result =
+                ShowCreateUtil.buildShowCreateMaterializedTableRow(
+                        materializedTable,
+                        MATERIALIZED_TABLE_IDENTIFIER,
+                        false,
+                        false,
+                        ZoneOffset.UTC,
+                        DefaultSqlFactory.INSTANCE,
+                        includeFreshness,
+                        includeRefreshMode);
+
+        final StringBuilder expected =
+                new StringBuilder()
+                        .append(
+                                "CREATE MATERIALIZED TABLE 
`catalogName`.`dbName`.`materializedTableName` (\n")
+                        .append("  `id` INT\n")
+                        .append(")\n")
+                        .append("START_MODE = FROM_BEGINNING\n");
+        if (includeFreshness) {
+            expected.append("FRESHNESS = INTERVAL '2' MINUTE\n");
+        }
+        if (includeRefreshMode) {
+            expected.append("REFRESH_MODE = CONTINUOUS\n");
+        }
+        expected.append("AS SELECT 1\n");
+
+        assertThat(result).isEqualTo(expected.toString());
+    }
+
     @ParameterizedTest(name = "{index}: {1}")
     @MethodSource("argsForShowCreateCatalog")
     void showCreateCatalog(CatalogDescriptor catalogDescriptor, String 
expected) {

Reply via email to