This is an automated email from the ASF dual-hosted git repository.
gangwu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/parquet-java.git
The following commit(s) were added to refs/heads/master by this push:
new 515ed4c14 MINOR: Make ColumnPath immutable (#1380)
515ed4c14 is described below
commit 515ed4c143062033691b574bd6407ac8bd940025
Author: Piotr Findeisen <[email protected]>
AuthorDate: Tue Jul 9 08:05:20 2024 +0200
MINOR: Make ColumnPath immutable (#1380)
Similar to `ColumnPath.toArray`, but avoids copying the path.
---
.../java/org/apache/parquet/hadoop/metadata/ColumnPath.java | 10 +++++++++-
.../apache/parquet/crypto/InternalColumnEncryptionSetup.java | 3 +--
.../parquet/format/converter/ParquetMetadataConverter.java | 2 +-
3 files changed, 11 insertions(+), 4 deletions(-)
diff --git
a/parquet-common/src/main/java/org/apache/parquet/hadoop/metadata/ColumnPath.java
b/parquet-common/src/main/java/org/apache/parquet/hadoop/metadata/ColumnPath.java
index ec14d95e8..46b71fe6a 100644
---
a/parquet-common/src/main/java/org/apache/parquet/hadoop/metadata/ColumnPath.java
+++
b/parquet-common/src/main/java/org/apache/parquet/hadoop/metadata/ColumnPath.java
@@ -20,7 +20,9 @@ package org.apache.parquet.hadoop.metadata;
import java.io.Serializable;
import java.util.Arrays;
+import java.util.Collections;
import java.util.Iterator;
+import java.util.List;
import java.util.Objects;
public final class ColumnPath implements Iterable<String>, Serializable {
@@ -48,6 +50,8 @@ public final class ColumnPath implements Iterable<String>,
Serializable {
private final String[] p;
private ColumnPath(String[] path) {
+ // No need to copy the array here as the only published ColumnPath
instances are created by the toCanonical
+ // method
this.p = path;
}
@@ -83,6 +87,10 @@ public final class ColumnPath implements Iterable<String>,
Serializable {
}
public String[] toArray() {
- return p;
+ return p.clone();
+ }
+
+ public List<String> toList() {
+ return Collections.unmodifiableList(Arrays.asList(p));
}
}
diff --git
a/parquet-hadoop/src/main/java/org/apache/parquet/crypto/InternalColumnEncryptionSetup.java
b/parquet-hadoop/src/main/java/org/apache/parquet/crypto/InternalColumnEncryptionSetup.java
index 2775865b3..56497363d 100755
---
a/parquet-hadoop/src/main/java/org/apache/parquet/crypto/InternalColumnEncryptionSetup.java
+++
b/parquet-hadoop/src/main/java/org/apache/parquet/crypto/InternalColumnEncryptionSetup.java
@@ -19,7 +19,6 @@
package org.apache.parquet.crypto;
-import java.util.Arrays;
import org.apache.parquet.format.BlockCipher;
import org.apache.parquet.format.ColumnCryptoMetaData;
import org.apache.parquet.format.EncryptionWithColumnKey;
@@ -48,7 +47,7 @@ public class InternalColumnEncryptionSetup {
columnCryptoMetaData =
ColumnCryptoMetaData.ENCRYPTION_WITH_FOOTER_KEY(new EncryptionWithFooterKey());
} else {
EncryptionWithColumnKey withColumnKeyStruct = new
EncryptionWithColumnKey(
- Arrays.asList(encryptionProperties.getPath().toArray()));
+ encryptionProperties.getPath().toList());
if (null != encryptionProperties.getKeyMetaData()) {
withColumnKeyStruct.setKey_metadata(encryptionProperties.getKeyMetaData());
}
diff --git
a/parquet-hadoop/src/main/java/org/apache/parquet/format/converter/ParquetMetadataConverter.java
b/parquet-hadoop/src/main/java/org/apache/parquet/format/converter/ParquetMetadataConverter.java
index e752b4cee..20dbb0119 100644
---
a/parquet-hadoop/src/main/java/org/apache/parquet/format/converter/ParquetMetadataConverter.java
+++
b/parquet-hadoop/src/main/java/org/apache/parquet/format/converter/ParquetMetadataConverter.java
@@ -550,7 +550,7 @@ public class ParquetMetadataConverter {
ColumnMetaData metaData = new ColumnMetaData(
getType(columnMetaData.getType()),
toFormatEncodings(columnMetaData.getEncodings()),
- Arrays.asList(columnMetaData.getPath().toArray()),
+ columnMetaData.getPath().toList(),
toFormatCodec(columnMetaData.getCodec()),
columnMetaData.getValueCount(),
columnMetaData.getTotalUncompressedSize(),