This is an automated email from the ASF dual-hosted git repository.
lzljs3620320 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git
The following commit(s) were added to refs/heads/master by this push:
new 26afa3e74 [core] Refactor LookupFile.localFilePrefix to cut partition
string to 20
26afa3e74 is described below
commit 26afa3e743f36b1d81da0206331c11af9da140fc
Author: Jingsong <[email protected]>
AuthorDate: Wed Jul 31 16:44:10 2024 +0800
[core] Refactor LookupFile.localFilePrefix to cut partition string to 20
---
.../paimon/utils/InternalRowPartitionComputer.java | 7 +++--
.../utils/InternalRowPartitionComputerTest.java | 9 +++---
.../org/apache/paimon/mergetree/LookupFile.java | 15 +++++-----
.../paimon/operation/KeyValueFileStoreWrite.java | 9 ++----
.../apache/paimon/table/query/LocalTableQuery.java | 13 ++-------
.../apache/paimon/mergetree/LookupFileTest.java | 33 ++++++++++++++--------
6 files changed, 43 insertions(+), 43 deletions(-)
diff --git
a/paimon-common/src/main/java/org/apache/paimon/utils/InternalRowPartitionComputer.java
b/paimon-common/src/main/java/org/apache/paimon/utils/InternalRowPartitionComputer.java
index 07746d58d..3211a2e32 100644
---
a/paimon-common/src/main/java/org/apache/paimon/utils/InternalRowPartitionComputer.java
+++
b/paimon-common/src/main/java/org/apache/paimon/utils/InternalRowPartitionComputer.java
@@ -79,8 +79,8 @@ public class InternalRowPartitionComputer {
return partValues;
}
- public static String paritionToString(
- RowType partitionType, BinaryRow partition, String delimiter) {
+ public static String toSimpleString(
+ RowType partitionType, BinaryRow partition, String delimiter, int
maxLength) {
InternalRow.FieldGetter[] getters = partitionType.fieldGetters();
StringBuilder builder = new StringBuilder();
for (int i = 0; i < getters.length; i++) {
@@ -94,6 +94,7 @@ public class InternalRowPartitionComputer {
builder.append(delimiter);
}
}
- return builder.toString();
+ String result = builder.toString();
+ return result.substring(0, Math.min(result.length(), maxLength));
}
}
diff --git
a/paimon-common/src/test/java/org/apache/paimon/utils/InternalRowPartitionComputerTest.java
b/paimon-common/src/test/java/org/apache/paimon/utils/InternalRowPartitionComputerTest.java
index fcd79fa4c..5f57dd6cf 100644
---
a/paimon-common/src/test/java/org/apache/paimon/utils/InternalRowPartitionComputerTest.java
+++
b/paimon-common/src/test/java/org/apache/paimon/utils/InternalRowPartitionComputerTest.java
@@ -35,16 +35,15 @@ public class InternalRowPartitionComputerTest {
public void testPartitionToString() {
RowType rowType = RowType.of();
BinaryRow binaryRow = new BinaryRow(0);
- BinaryRowWriter writer = new BinaryRowWriter(binaryRow);
- assertThat(InternalRowPartitionComputer.paritionToString(rowType,
binaryRow, "-"))
+ assertThat(InternalRowPartitionComputer.toSimpleString(rowType,
binaryRow, "-", 30))
.isEqualTo("");
rowType = RowType.of(DataTypes.STRING(), DataTypes.INT());
binaryRow = new BinaryRow(2);
- writer = new BinaryRowWriter(binaryRow);
+ BinaryRowWriter writer = new BinaryRowWriter(binaryRow);
writer.writeString(0, BinaryString.fromString("20240731"));
writer.writeInt(1, 10);
- assertThat(InternalRowPartitionComputer.paritionToString(rowType,
binaryRow, "-"))
+ assertThat(InternalRowPartitionComputer.toSimpleString(rowType,
binaryRow, "-", 30))
.isEqualTo("20240731-10");
rowType = RowType.of(DataTypes.STRING(), DataTypes.INT());
@@ -52,7 +51,7 @@ public class InternalRowPartitionComputerTest {
writer = new BinaryRowWriter(binaryRow);
writer.setNullAt(0);
writer.writeInt(1, 10);
- assertThat(InternalRowPartitionComputer.paritionToString(rowType,
binaryRow, "-"))
+ assertThat(InternalRowPartitionComputer.toSimpleString(rowType,
binaryRow, "-", 30))
.isEqualTo("null-10");
}
}
diff --git
a/paimon-core/src/main/java/org/apache/paimon/mergetree/LookupFile.java
b/paimon-core/src/main/java/org/apache/paimon/mergetree/LookupFile.java
index 4a1b04f52..b3b6fabc4 100644
--- a/paimon-core/src/main/java/org/apache/paimon/mergetree/LookupFile.java
+++ b/paimon-core/src/main/java/org/apache/paimon/mergetree/LookupFile.java
@@ -18,9 +18,11 @@
package org.apache.paimon.mergetree;
+import org.apache.paimon.data.BinaryRow;
import org.apache.paimon.io.DataFileMeta;
import org.apache.paimon.lookup.LookupStoreReader;
import org.apache.paimon.options.MemorySize;
+import org.apache.paimon.types.RowType;
import org.apache.paimon.utils.FileIOUtils;
import
org.apache.paimon.shade.caffeine2.com.github.benmanes.caffeine.cache.Cache;
@@ -37,6 +39,7 @@ import java.io.UncheckedIOException;
import java.time.Duration;
import static org.apache.paimon.mergetree.LookupUtils.fileKibiBytes;
+import static
org.apache.paimon.utils.InternalRowPartitionComputer.toSimpleString;
import static org.apache.paimon.utils.Preconditions.checkArgument;
/** Lookup file for cache remote file to local. */
@@ -107,14 +110,12 @@ public class LookupFile implements Closeable {
}
public static String localFilePrefix(
- String partition, int bucket, String remoteFileName, int length) {
- String identifier;
- if (partition.isEmpty()) {
- identifier = String.format("%s-%s", bucket, remoteFileName);
+ RowType partitionType, BinaryRow partition, int bucket, String
remoteFileName) {
+ if (partition.getFieldCount() == 0) {
+ return String.format("%s-%s", bucket, remoteFileName);
} else {
- identifier = String.format("%s-%s-%s", partition, bucket,
remoteFileName);
+ String partitionString = toSimpleString(partitionType, partition,
"-", 20);
+ return String.format("%s-%s-%s", partitionString, bucket,
remoteFileName);
}
-
- return identifier.substring(0, Math.min(identifier.length(), length));
}
}
diff --git
a/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreWrite.java
b/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreWrite.java
index 545f20f09..5f21d3c1a 100644
---
a/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreWrite.java
+++
b/paimon-core/src/main/java/org/apache/paimon/operation/KeyValueFileStoreWrite.java
@@ -69,7 +69,6 @@ import org.apache.paimon.types.RowType;
import org.apache.paimon.utils.CommitIncrement;
import org.apache.paimon.utils.FieldsComparator;
import org.apache.paimon.utils.FileStorePathFactory;
-import org.apache.paimon.utils.InternalRowPartitionComputer;
import org.apache.paimon.utils.SnapshotManager;
import org.apache.paimon.utils.UserDefinedSeqComparator;
@@ -89,6 +88,7 @@ import java.util.function.Supplier;
import static org.apache.paimon.CoreOptions.ChangelogProducer.FULL_COMPACTION;
import static org.apache.paimon.CoreOptions.MergeEngine.DEDUPLICATE;
import static org.apache.paimon.lookup.LookupStoreFactory.bfGenerator;
+import static org.apache.paimon.mergetree.LookupFile.localFilePrefix;
/** {@link FileStoreWrite} for {@link KeyValueFileStore}. */
public class KeyValueFileStoreWrite extends MemoryFileStoreWrite<KeyValue> {
@@ -381,12 +381,7 @@ public class KeyValueFileStoreWrite extends
MemoryFileStoreWrite<KeyValue> {
file ->
ioManager
.createChannel(
- LookupFile.localFilePrefix(
-
InternalRowPartitionComputer.paritionToString(
- partitionType,
partition, "-"),
- bucket,
- file,
- 100))
+ localFilePrefix(partitionType,
partition, bucket, file))
.getPathFile(),
lookupStoreFactory,
bfGenerator(options),
diff --git
a/paimon-core/src/main/java/org/apache/paimon/table/query/LocalTableQuery.java
b/paimon-core/src/main/java/org/apache/paimon/table/query/LocalTableQuery.java
index 5f5463a70..d1315a2aa 100644
---
a/paimon-core/src/main/java/org/apache/paimon/table/query/LocalTableQuery.java
+++
b/paimon-core/src/main/java/org/apache/paimon/table/query/LocalTableQuery.java
@@ -39,7 +39,6 @@ import org.apache.paimon.mergetree.LookupLevels;
import org.apache.paimon.options.Options;
import org.apache.paimon.table.FileStoreTable;
import org.apache.paimon.types.RowType;
-import org.apache.paimon.utils.InternalRowPartitionComputer;
import org.apache.paimon.utils.KeyComparatorSupplier;
import org.apache.paimon.utils.Preconditions;
@@ -56,6 +55,7 @@ import java.util.function.Supplier;
import static org.apache.paimon.CoreOptions.MergeEngine.DEDUPLICATE;
import static org.apache.paimon.lookup.LookupStoreFactory.bfGenerator;
+import static org.apache.paimon.mergetree.LookupFile.localFilePrefix;
/** Implementation for {@link TableQuery} for caching data and file in local.
*/
public class LocalTableQuery implements TableQuery {
@@ -162,15 +162,8 @@ public class LocalTableQuery implements TableQuery {
file ->
Preconditions.checkNotNull(ioManager,
"IOManager is required.")
.createChannel(
- LookupFile.localFilePrefix(
-
InternalRowPartitionComputer
-
.paritionToString(
-
partitionType,
-
partition,
- "-"),
- bucket,
- file,
- 100))
+ localFilePrefix(
+ partitionType,
partition, bucket, file))
.getPathFile(),
lookupStoreFactory,
bfGenerator(options),
diff --git
a/paimon-core/src/test/java/org/apache/paimon/mergetree/LookupFileTest.java
b/paimon-core/src/test/java/org/apache/paimon/mergetree/LookupFileTest.java
index 1fcebb338..0855afeb7 100644
--- a/paimon-core/src/test/java/org/apache/paimon/mergetree/LookupFileTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/mergetree/LookupFileTest.java
@@ -18,8 +18,14 @@
package org.apache.paimon.mergetree;
+import org.apache.paimon.types.DataTypes;
+import org.apache.paimon.types.RowType;
+
import org.junit.jupiter.api.Test;
+import static org.apache.paimon.data.BinaryRow.EMPTY_ROW;
+import static org.apache.paimon.data.BinaryRow.singleColumn;
+import static org.apache.paimon.mergetree.LookupFile.localFilePrefix;
import static org.assertj.core.api.Assertions.assertThat;
/** Test for {@link LookupFile}. */
@@ -27,23 +33,28 @@ public class LookupFileTest {
@Test
public void testLocalFilePrefix() {
+ RowType partType = RowType.of(DataTypes.STRING());
assertThat(
- LookupFile.localFilePrefix(
- "2024073105",
+ localFilePrefix(
+ partType,
+ singleColumn("2024073105"),
10,
-
"data-ccbb95e7-8b8c-4549-8ca9-f553843d67ad-3.orc",
- 100))
+
"data-ccbb95e7-8b8c-4549-8ca9-f553843d67ad-3.orc"))
.isEqualTo("2024073105-10-data-ccbb95e7-8b8c-4549-8ca9-f553843d67ad-3.orc");
assertThat(
- LookupFile.localFilePrefix(
- "", 10,
"data-ccbb95e7-8b8c-4549-8ca9-f553843d67ad-3.orc", 100))
+ localFilePrefix(
+ RowType.of(),
+ EMPTY_ROW,
+ 10,
+
"data-ccbb95e7-8b8c-4549-8ca9-f553843d67ad-3.orc"))
.isEqualTo("10-data-ccbb95e7-8b8c-4549-8ca9-f553843d67ad-3.orc");
assertThat(
- LookupFile.localFilePrefix(
- "2024073105",
+ localFilePrefix(
+ partType,
+
singleColumn("2024073105-05-2123232313123123123213123"),
10,
-
"data-ccbb95e7-8b8c-4549-8ca9-f553843d67ad-3.orc",
- 20))
- .isEqualTo("2024073105-10-data-c");
+
"data-ccbb95e7-8b8c-4549-8ca9-f553843d67ad-3.orc"))
+ .isEqualTo(
+
"2024073105-05-212323-10-data-ccbb95e7-8b8c-4549-8ca9-f553843d67ad-3.orc");
}
}