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) {