From 89bdc04a24328a2fc112174bba0e81e498dfa9e5 Mon Sep 17 00:00:00 2001 From: xuyu <11161569@vivo.com> Date: Tue, 7 Jan 2025 20:12:43 +0800 Subject: [PATCH 01/11] [core] Support auto create tag with custom duration --- .../generated/core_configuration.html | 8 +- .../java/org/apache/paimon/CoreOptions.java | 14 ++- .../apache/paimon/tag/TagPeriodHandler.java | 37 ++++++++ .../system/CustomDurationTagsTableTest.java | 94 +++++++++++++++++++ 4 files changed, 151 insertions(+), 2 deletions(-) create mode 100644 paimon-core/src/test/java/org/apache/paimon/table/system/CustomDurationTagsTableTest.java diff --git a/docs/layouts/shortcodes/generated/core_configuration.html b/docs/layouts/shortcodes/generated/core_configuration.html index f60d0ec91009..e17f72026ce5 100644 --- a/docs/layouts/shortcodes/generated/core_configuration.html +++ b/docs/layouts/shortcodes/generated/core_configuration.html @@ -928,7 +928,13 @@
tag.creation-period
daily

Enum

- What frequency is used to generate tags.

Possible values: + What frequency is used to generate tags.

Possible values: + + +
tag.custom-duration
+ (none) + Duration + The custom duration for tag auto create periods.
tag.default-time-retained
diff --git a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java index efd886501266..42652695f27d 100644 --- a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java +++ b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java @@ -1242,6 +1242,12 @@ public class CoreOptions implements Serializable { .defaultValue(TagPeriodFormatter.WITH_DASHES) .withDescription("The date format for tag periods."); + public static final ConfigOption TAG_CUSTOM_DURATION = + key("tag.custom-duration") + .durationType() + .noDefaultValue() + .withDescription("The custom duration for tag auto create periods."); + public static final ConfigOption TAG_NUM_RETAINED_MAX = key("tag.num-retained-max") .intType() @@ -2238,6 +2244,10 @@ public TagPeriodFormatter tagPeriodFormatter() { return options.get(TAG_PERIOD_FORMATTER); } + public Optional tagCustomDuration() { + return options.getOptional(TAG_CUSTOM_DURATION); + } + @Nullable public Integer tagNumRetainedMax() { return options.get(TAG_NUM_RETAINED_MAX); @@ -2874,7 +2884,9 @@ public InlineElement getDescription() { public enum TagCreationPeriod implements DescribedEnum { DAILY("daily", "Generate a tag every day."), HOURLY("hourly", "Generate a tag every hour."), - TWO_HOURS("two-hours", "Generate a tag every two hours."); + TWO_HOURS("two-hours", "Generate a tag every two hours."), + + CUSTOM_DURATION("custom-duration", "Generate a tag with custom duration."); private final String value; private final String description; diff --git a/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java b/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java index c0fbe718c8fa..77846b3b4bb3 100644 --- a/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java +++ b/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java @@ -31,6 +31,7 @@ import static java.time.temporal.ChronoField.DAY_OF_MONTH; import static java.time.temporal.ChronoField.HOUR_OF_DAY; +import static java.time.temporal.ChronoField.MINUTE_OF_HOUR; import static java.time.temporal.ChronoField.MONTH_OF_YEAR; import static java.time.temporal.ChronoField.YEAR; import static org.apache.paimon.utils.Preconditions.checkArgument; @@ -60,6 +61,16 @@ public interface TagPeriodHandler { .toFormatter() .withResolverStyle(ResolverStyle.LENIENT); + DateTimeFormatter MINUTE_FORMATTER = + new DateTimeFormatterBuilder() + .appendValue(YEAR, 1, 10, SignStyle.NORMAL) + .appendValue(MONTH_OF_YEAR, 2, 2, SignStyle.NORMAL) + .appendValue(DAY_OF_MONTH, 2, 2, SignStyle.NORMAL) + .appendValue(HOUR_OF_DAY, 2, 2, SignStyle.NORMAL) + .appendValue(MINUTE_OF_HOUR, 2, 2, SignStyle.NORMAL) + .toFormatter() + .withResolverStyle(ResolverStyle.LENIENT); + DateTimeFormatter DAY_FORMATTER = new DateTimeFormatterBuilder() .appendValue(YEAR, 1, 10, SignStyle.NORMAL) @@ -218,6 +229,26 @@ protected DateTimeFormatter formatter() { } } + /** Two Hours {@link TagPeriodHandler}. */ + class CustomDurationTagPeriodHandler extends BaseTagPeriodHandler { + + Duration customDuration; + + public CustomDurationTagPeriodHandler(Duration duration) { + this.customDuration = duration; + } + + @Override + protected Duration onePeriod() { + return customDuration; + } + + @Override + protected DateTimeFormatter formatter() { + return MINUTE_FORMATTER; + } + } + static TagPeriodHandler create(CoreOptions options) { switch (options.tagCreationPeriod()) { case DAILY: @@ -226,6 +257,12 @@ static TagPeriodHandler create(CoreOptions options) { return new HourlyTagPeriodHandler(options.tagPeriodFormatter()); case TWO_HOURS: return new TwoHoursTagPeriodHandler(); + case CUSTOM_DURATION: + if (!options.tagCustomDuration().isPresent()) { + throw new IllegalArgumentException( + "tag.custom-duration must be set if use custom-duration"); + } + return new CustomDurationTagPeriodHandler(options.tagCustomDuration().get()); default: throw new UnsupportedOperationException( "Unsupported " + options.tagCreationPeriod()); diff --git a/paimon-core/src/test/java/org/apache/paimon/table/system/CustomDurationTagsTableTest.java b/paimon-core/src/test/java/org/apache/paimon/table/system/CustomDurationTagsTableTest.java new file mode 100644 index 000000000000..8ab961f78902 --- /dev/null +++ b/paimon-core/src/test/java/org/apache/paimon/table/system/CustomDurationTagsTableTest.java @@ -0,0 +1,94 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.paimon.table.system; + +import org.apache.paimon.catalog.Identifier; +import org.apache.paimon.data.InternalRow; +import org.apache.paimon.data.Timestamp; +import org.apache.paimon.manifest.ManifestCommittable; +import org.apache.paimon.schema.Schema; +import org.apache.paimon.table.FileStoreTable; +import org.apache.paimon.table.TableTestBase; +import org.apache.paimon.table.sink.TableCommitImpl; +import org.apache.paimon.types.DataTypes; +import org.apache.paimon.utils.TagManager; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.time.LocalDateTime; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +/** Unit tests for {@link TagsTable}. */ +public class CustomDurationTagsTableTest extends TableTestBase { + + private static final String tableName = "TagTestTable"; + private TagsTable tagsTable; + private TagManager tagManager; + private FileStoreTable table; + + @BeforeEach + void before() throws Exception { + Identifier identifier = identifier(tableName); + Schema schema = + Schema.newBuilder() + .column("product_id", DataTypes.INT()) + .column("price", DataTypes.INT()) + .column("sales", DataTypes.INT()) + .primaryKey("product_id") + .option("tag.automatic-creation", "watermark") + .option("tag.creation-period", "custom-duration") + .option("tag.custom-duration", "120 s") + .build(); + catalog.createTable(identifier, schema, true); + table = (FileStoreTable) catalog.getTable(identifier); + TableCommitImpl commit = table.newCommit(commitUser).ignoreEmptyCommit(false); + + commit.commit( + new ManifestCommittable( + 0, + Timestamp.fromLocalDateTime(LocalDateTime.parse("2025-01-07T12:00:01")) + .getMillisecond())); + commit.commit( + new ManifestCommittable( + 1, + Timestamp.fromLocalDateTime(LocalDateTime.parse("2025-01-07T15:00:01")) + .getMillisecond())); + + tagsTable = (TagsTable) catalog.getTable(identifier(tableName + "$tags")); + tagManager = table.store().newTagManager(); + } + + @Test + void testTagsTable() throws Exception { + List result = read(tagsTable); + assertThat(result.size()).isEqualTo(2); + assertThat(result.get(0).getString(0).toString()).isEqualTo("202501071158"); + assertThat(result.get(1).getString(0).toString()).isEqualTo("202501071458"); + } + + @Override + public void after() throws IOException { + table.deleteTag("202501071158"); + table.deleteTag("202501071458"); + } +} From e9845fa76f5a3e089940d074ed01a61aa650cd55 Mon Sep 17 00:00:00 2001 From: xuyu <11161569@vivo.com> Date: Tue, 7 Jan 2025 20:22:00 +0800 Subject: [PATCH 02/11] fix style --- paimon-common/src/main/java/org/apache/paimon/CoreOptions.java | 1 - 1 file changed, 1 deletion(-) diff --git a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java index 42652695f27d..6e7099e92ede 100644 --- a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java +++ b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java @@ -2885,7 +2885,6 @@ public enum TagCreationPeriod implements DescribedEnum { DAILY("daily", "Generate a tag every day."), HOURLY("hourly", "Generate a tag every hour."), TWO_HOURS("two-hours", "Generate a tag every two hours."), - CUSTOM_DURATION("custom-duration", "Generate a tag with custom duration."); private final String value; From ffe566866a87048eb8efcc5918eee331cb56f4de Mon Sep 17 00:00:00 2001 From: xuyu <11161569@vivo.com> Date: Wed, 8 Jan 2025 10:03:58 +0800 Subject: [PATCH 03/11] fix comments --- .../shortcodes/generated/core_configuration.html | 4 ++-- .../src/main/java/org/apache/paimon/CoreOptions.java | 4 ++-- .../java/org/apache/paimon/tag/TagPeriodHandler.java | 10 ++++------ .../table/system/CustomDurationTagsTableTest.java | 9 +++------ 4 files changed, 11 insertions(+), 16 deletions(-) diff --git a/docs/layouts/shortcodes/generated/core_configuration.html b/docs/layouts/shortcodes/generated/core_configuration.html index e17f72026ce5..3eab0d0218f2 100644 --- a/docs/layouts/shortcodes/generated/core_configuration.html +++ b/docs/layouts/shortcodes/generated/core_configuration.html @@ -931,10 +931,10 @@ What frequency is used to generate tags.

Possible values:
  • "daily": Generate a tag every day.
  • "hourly": Generate a tag every hour.
  • "two-hours": Generate a tag every two hours.
  • "custom-duration": Generate a tag with custom duration.
-
tag.custom-duration
+
tag.create-custom-duration
(none) Duration - The custom duration for tag auto create periods. + The custom duration for tag auto create periods.If user set it, tag.creation-period would be invalid.
tag.default-time-retained
diff --git a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java index 6e7099e92ede..9dcb45135135 100644 --- a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java +++ b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java @@ -1243,10 +1243,10 @@ public class CoreOptions implements Serializable { .withDescription("The date format for tag periods."); public static final ConfigOption TAG_CUSTOM_DURATION = - key("tag.custom-duration") + key("tag.create-custom-duration") .durationType() .noDefaultValue() - .withDescription("The custom duration for tag auto create periods."); + .withDescription("The custom duration for tag auto create periods.If user set it, tag.creation-period would be invalid."); public static final ConfigOption TAG_NUM_RETAINED_MAX = key("tag.num-retained-max") diff --git a/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java b/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java index 77846b3b4bb3..bb5d19006880 100644 --- a/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java +++ b/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java @@ -250,6 +250,10 @@ protected DateTimeFormatter formatter() { } static TagPeriodHandler create(CoreOptions options) { + if (options.tagCustomDuration().isPresent()) { + return new CustomDurationTagPeriodHandler(options.tagCustomDuration().get()); + } + switch (options.tagCreationPeriod()) { case DAILY: return new DailyTagPeriodHandler(options.tagPeriodFormatter()); @@ -257,12 +261,6 @@ static TagPeriodHandler create(CoreOptions options) { return new HourlyTagPeriodHandler(options.tagPeriodFormatter()); case TWO_HOURS: return new TwoHoursTagPeriodHandler(); - case CUSTOM_DURATION: - if (!options.tagCustomDuration().isPresent()) { - throw new IllegalArgumentException( - "tag.custom-duration must be set if use custom-duration"); - } - return new CustomDurationTagPeriodHandler(options.tagCustomDuration().get()); default: throw new UnsupportedOperationException( "Unsupported " + options.tagCreationPeriod()); diff --git a/paimon-core/src/test/java/org/apache/paimon/table/system/CustomDurationTagsTableTest.java b/paimon-core/src/test/java/org/apache/paimon/table/system/CustomDurationTagsTableTest.java index 8ab961f78902..7e821125663c 100644 --- a/paimon-core/src/test/java/org/apache/paimon/table/system/CustomDurationTagsTableTest.java +++ b/paimon-core/src/test/java/org/apache/paimon/table/system/CustomDurationTagsTableTest.java @@ -41,9 +41,8 @@ /** Unit tests for {@link TagsTable}. */ public class CustomDurationTagsTableTest extends TableTestBase { - private static final String tableName = "TagTestTable"; + private static final String tableName = "3TagTestTable"; private TagsTable tagsTable; - private TagManager tagManager; private FileStoreTable table; @BeforeEach @@ -56,8 +55,7 @@ void before() throws Exception { .column("sales", DataTypes.INT()) .primaryKey("product_id") .option("tag.automatic-creation", "watermark") - .option("tag.creation-period", "custom-duration") - .option("tag.custom-duration", "120 s") + .option("tag.create-custom-duration", "120 s") .build(); catalog.createTable(identifier, schema, true); table = (FileStoreTable) catalog.getTable(identifier); @@ -75,11 +73,10 @@ void before() throws Exception { .getMillisecond())); tagsTable = (TagsTable) catalog.getTable(identifier(tableName + "$tags")); - tagManager = table.store().newTagManager(); } @Test - void testTagsTable() throws Exception { + void testCreateTagsWithCustomDuration() throws Exception { List result = read(tagsTable); assertThat(result.size()).isEqualTo(2); assertThat(result.get(0).getString(0).toString()).isEqualTo("202501071158"); From 56ecca62db6836c28041ed8d38ddd6bce501f840 Mon Sep 17 00:00:00 2001 From: xuyu <11161569@vivo.com> Date: Wed, 8 Jan 2025 10:05:52 +0800 Subject: [PATCH 04/11] fix comments --- paimon-common/src/main/java/org/apache/paimon/CoreOptions.java | 3 ++- .../paimon/table/system/CustomDurationTagsTableTest.java | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java index 9dcb45135135..0c6146b9d098 100644 --- a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java +++ b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java @@ -1246,7 +1246,8 @@ public class CoreOptions implements Serializable { key("tag.create-custom-duration") .durationType() .noDefaultValue() - .withDescription("The custom duration for tag auto create periods.If user set it, tag.creation-period would be invalid."); + .withDescription( + "The custom duration for tag auto create periods.If user set it, tag.creation-period would be invalid."); public static final ConfigOption TAG_NUM_RETAINED_MAX = key("tag.num-retained-max") diff --git a/paimon-core/src/test/java/org/apache/paimon/table/system/CustomDurationTagsTableTest.java b/paimon-core/src/test/java/org/apache/paimon/table/system/CustomDurationTagsTableTest.java index 7e821125663c..806db56e511e 100644 --- a/paimon-core/src/test/java/org/apache/paimon/table/system/CustomDurationTagsTableTest.java +++ b/paimon-core/src/test/java/org/apache/paimon/table/system/CustomDurationTagsTableTest.java @@ -27,7 +27,6 @@ import org.apache.paimon.table.TableTestBase; import org.apache.paimon.table.sink.TableCommitImpl; import org.apache.paimon.types.DataTypes; -import org.apache.paimon.utils.TagManager; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; From ab8011ce8bddf26532fb6e7aa0720f1e4118b392 Mon Sep 17 00:00:00 2001 From: xuyu <11161569@vivo.com> Date: Wed, 8 Jan 2025 10:23:52 +0800 Subject: [PATCH 05/11] fix comments --- docs/layouts/shortcodes/generated/core_configuration.html | 2 +- paimon-common/src/main/java/org/apache/paimon/CoreOptions.java | 2 +- .../apache/paimon/table/system/CustomDurationTagsTableTest.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/layouts/shortcodes/generated/core_configuration.html b/docs/layouts/shortcodes/generated/core_configuration.html index 3eab0d0218f2..ddc8844292dd 100644 --- a/docs/layouts/shortcodes/generated/core_configuration.html +++ b/docs/layouts/shortcodes/generated/core_configuration.html @@ -931,7 +931,7 @@ What frequency is used to generate tags.

Possible values:
  • "daily": Generate a tag every day.
  • "hourly": Generate a tag every hour.
  • "two-hours": Generate a tag every two hours.
  • "custom-duration": Generate a tag with custom duration.
-
tag.create-custom-duration
+
tag.creation-period-duration
(none) Duration The custom duration for tag auto create periods.If user set it, tag.creation-period would be invalid. diff --git a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java index 0c6146b9d098..60882f677a47 100644 --- a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java +++ b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java @@ -1243,7 +1243,7 @@ public class CoreOptions implements Serializable { .withDescription("The date format for tag periods."); public static final ConfigOption TAG_CUSTOM_DURATION = - key("tag.create-custom-duration") + key("tag.creation-period-duration") .durationType() .noDefaultValue() .withDescription( diff --git a/paimon-core/src/test/java/org/apache/paimon/table/system/CustomDurationTagsTableTest.java b/paimon-core/src/test/java/org/apache/paimon/table/system/CustomDurationTagsTableTest.java index 806db56e511e..a5304f8853d1 100644 --- a/paimon-core/src/test/java/org/apache/paimon/table/system/CustomDurationTagsTableTest.java +++ b/paimon-core/src/test/java/org/apache/paimon/table/system/CustomDurationTagsTableTest.java @@ -54,7 +54,7 @@ void before() throws Exception { .column("sales", DataTypes.INT()) .primaryKey("product_id") .option("tag.automatic-creation", "watermark") - .option("tag.create-custom-duration", "120 s") + .option("tag.creation-period-duration", "120 s") .build(); catalog.createTable(identifier, schema, true); table = (FileStoreTable) catalog.getTable(identifier); From 6456c58463b238d64e0f340f311aee4a49f37952 Mon Sep 17 00:00:00 2001 From: xuyu <11161569@vivo.com> Date: Wed, 8 Jan 2025 10:30:03 +0800 Subject: [PATCH 06/11] fix doc --- docs/layouts/shortcodes/generated/core_configuration.html | 2 +- paimon-common/src/main/java/org/apache/paimon/CoreOptions.java | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/layouts/shortcodes/generated/core_configuration.html b/docs/layouts/shortcodes/generated/core_configuration.html index ddc8844292dd..9ef2ddecab58 100644 --- a/docs/layouts/shortcodes/generated/core_configuration.html +++ b/docs/layouts/shortcodes/generated/core_configuration.html @@ -928,7 +928,7 @@
tag.creation-period
daily

Enum

- What frequency is used to generate tags.

Possible values:
  • "daily": Generate a tag every day.
  • "hourly": Generate a tag every hour.
  • "two-hours": Generate a tag every two hours.
  • "custom-duration": Generate a tag with custom duration.
+ What frequency is used to generate tags.

Possible values:
  • "daily": Generate a tag every day.
  • "hourly": Generate a tag every hour.
  • "two-hours": Generate a tag every two hours.
tag.creation-period-duration
diff --git a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java index 60882f677a47..15cad793ac26 100644 --- a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java +++ b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java @@ -2885,8 +2885,7 @@ public InlineElement getDescription() { public enum TagCreationPeriod implements DescribedEnum { DAILY("daily", "Generate a tag every day."), HOURLY("hourly", "Generate a tag every hour."), - TWO_HOURS("two-hours", "Generate a tag every two hours."), - CUSTOM_DURATION("custom-duration", "Generate a tag with custom duration."); + TWO_HOURS("two-hours", "Generate a tag every two hours."); private final String value; private final String description; From e15d960a006fedf14148a4c6c41c59c8f4a7be73 Mon Sep 17 00:00:00 2001 From: xuyu <11161569@vivo.com> Date: Wed, 8 Jan 2025 10:38:28 +0800 Subject: [PATCH 07/11] fix name --- .../src/main/java/org/apache/paimon/CoreOptions.java | 6 +++--- .../main/java/org/apache/paimon/tag/TagPeriodHandler.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java index 15cad793ac26..c6eafc196935 100644 --- a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java +++ b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java @@ -1242,7 +1242,7 @@ public class CoreOptions implements Serializable { .defaultValue(TagPeriodFormatter.WITH_DASHES) .withDescription("The date format for tag periods."); - public static final ConfigOption TAG_CUSTOM_DURATION = + public static final ConfigOption TAG_PERIOD_DURATION = key("tag.creation-period-duration") .durationType() .noDefaultValue() @@ -2245,8 +2245,8 @@ public TagPeriodFormatter tagPeriodFormatter() { return options.get(TAG_PERIOD_FORMATTER); } - public Optional tagCustomDuration() { - return options.getOptional(TAG_CUSTOM_DURATION); + public Optional tagPeriodDuration() { + return options.getOptional(TAG_PERIOD_DURATION); } @Nullable diff --git a/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java b/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java index bb5d19006880..381b943baf4f 100644 --- a/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java +++ b/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java @@ -250,8 +250,8 @@ protected DateTimeFormatter formatter() { } static TagPeriodHandler create(CoreOptions options) { - if (options.tagCustomDuration().isPresent()) { - return new CustomDurationTagPeriodHandler(options.tagCustomDuration().get()); + if (options.tagPeriodDuration().isPresent()) { + return new CustomDurationTagPeriodHandler(options.tagPeriodDuration().get()); } switch (options.tagCreationPeriod()) { From 4a95594ded53b936fe7d1b3e5ae547b0d31ca506 Mon Sep 17 00:00:00 2001 From: xuyu <11161569@vivo.com> Date: Wed, 8 Jan 2025 10:41:49 +0800 Subject: [PATCH 08/11] rename --- ...ationTagsTableTest.java => PeriodDurationTagsTableTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename paimon-core/src/test/java/org/apache/paimon/table/system/{CustomDurationTagsTableTest.java => PeriodDurationTagsTableTest.java} (98%) diff --git a/paimon-core/src/test/java/org/apache/paimon/table/system/CustomDurationTagsTableTest.java b/paimon-core/src/test/java/org/apache/paimon/table/system/PeriodDurationTagsTableTest.java similarity index 98% rename from paimon-core/src/test/java/org/apache/paimon/table/system/CustomDurationTagsTableTest.java rename to paimon-core/src/test/java/org/apache/paimon/table/system/PeriodDurationTagsTableTest.java index a5304f8853d1..713ff131494e 100644 --- a/paimon-core/src/test/java/org/apache/paimon/table/system/CustomDurationTagsTableTest.java +++ b/paimon-core/src/test/java/org/apache/paimon/table/system/PeriodDurationTagsTableTest.java @@ -38,7 +38,7 @@ import static org.assertj.core.api.Assertions.assertThat; /** Unit tests for {@link TagsTable}. */ -public class CustomDurationTagsTableTest extends TableTestBase { +public class PeriodDurationTagsTableTest extends TableTestBase { private static final String tableName = "3TagTestTable"; private TagsTable tagsTable; From 6bd6d8a04f464afc84515671931d10a4501b4657 Mon Sep 17 00:00:00 2001 From: xuyu <11161569@vivo.com> Date: Wed, 8 Jan 2025 10:43:51 +0800 Subject: [PATCH 09/11] rename --- .../main/java/org/apache/paimon/tag/TagPeriodHandler.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java b/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java index 381b943baf4f..8b5df7e54503 100644 --- a/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java +++ b/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java @@ -229,12 +229,12 @@ protected DateTimeFormatter formatter() { } } - /** Two Hours {@link TagPeriodHandler}. */ - class CustomDurationTagPeriodHandler extends BaseTagPeriodHandler { + /** Period duration {@link TagPeriodHandler}. */ + class PeriodDurationTagPeriodHandler extends BaseTagPeriodHandler { Duration customDuration; - public CustomDurationTagPeriodHandler(Duration duration) { + public PeriodDurationTagPeriodHandler(Duration duration) { this.customDuration = duration; } @@ -251,7 +251,7 @@ protected DateTimeFormatter formatter() { static TagPeriodHandler create(CoreOptions options) { if (options.tagPeriodDuration().isPresent()) { - return new CustomDurationTagPeriodHandler(options.tagPeriodDuration().get()); + return new PeriodDurationTagPeriodHandler(options.tagPeriodDuration().get()); } switch (options.tagCreationPeriod()) { From 609aaf6b73b1dec765ef2bcee49b56028550a5f4 Mon Sep 17 00:00:00 2001 From: xuyu <11161569@vivo.com> Date: Wed, 8 Jan 2025 10:44:56 +0800 Subject: [PATCH 10/11] rename doc --- docs/layouts/shortcodes/generated/core_configuration.html | 2 +- paimon-common/src/main/java/org/apache/paimon/CoreOptions.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/layouts/shortcodes/generated/core_configuration.html b/docs/layouts/shortcodes/generated/core_configuration.html index 9ef2ddecab58..aa5dcccc3b18 100644 --- a/docs/layouts/shortcodes/generated/core_configuration.html +++ b/docs/layouts/shortcodes/generated/core_configuration.html @@ -934,7 +934,7 @@
tag.creation-period-duration
(none) Duration - The custom duration for tag auto create periods.If user set it, tag.creation-period would be invalid. + The period duration for tag auto create periods.If user set it, tag.creation-period would be invalid.
tag.default-time-retained
diff --git a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java index c6eafc196935..75ca93b26e89 100644 --- a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java +++ b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java @@ -1247,7 +1247,7 @@ public class CoreOptions implements Serializable { .durationType() .noDefaultValue() .withDescription( - "The custom duration for tag auto create periods.If user set it, tag.creation-period would be invalid."); + "The period duration for tag auto create periods.If user set it, tag.creation-period would be invalid."); public static final ConfigOption TAG_NUM_RETAINED_MAX = key("tag.num-retained-max") From 940a8289dd2f5d17869cc24acafbb2e729d65912 Mon Sep 17 00:00:00 2001 From: xuyu <11161569@vivo.com> Date: Wed, 8 Jan 2025 10:46:43 +0800 Subject: [PATCH 11/11] remove period --- .../main/java/org/apache/paimon/tag/TagPeriodHandler.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java b/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java index 8b5df7e54503..761c3c297315 100644 --- a/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java +++ b/paimon-core/src/main/java/org/apache/paimon/tag/TagPeriodHandler.java @@ -232,15 +232,15 @@ protected DateTimeFormatter formatter() { /** Period duration {@link TagPeriodHandler}. */ class PeriodDurationTagPeriodHandler extends BaseTagPeriodHandler { - Duration customDuration; + Duration periodDuration; public PeriodDurationTagPeriodHandler(Duration duration) { - this.customDuration = duration; + this.periodDuration = duration; } @Override protected Duration onePeriod() { - return customDuration; + return periodDuration; } @Override