Skip to content

Commit 9420249

Browse files
mbrannstromhandmadecodeMikael Brännström
authored
GH-3215: Sort the list of org.apache.parquet.format.Encoding (#3413)
* GH-3215: Sort the list of org.apache.parquet.format.Encoding created by org.apache.parquet.format.converter.ParquetMetadataConverter::toFormatEncodings * GH-3215: Reformat test case to address format violations failures. --------- Co-authored-by: Peter Franzen <peter@myire.org> Co-authored-by: Mikael Brännström <mikael.brannstrom@ngm.se>
1 parent 6e2f7bb commit 9420249

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

parquet-hadoop/src/main/java/org/apache/parquet/format/converter/ParquetMetadataConverter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -703,11 +703,13 @@ private void addRowGroup(
703703
rowGroups.add(rowGroup);
704704
}
705705

706-
private List<Encoding> toFormatEncodings(Set<org.apache.parquet.column.Encoding> encodings) {
706+
// Visible for testing
707+
List<Encoding> toFormatEncodings(Set<org.apache.parquet.column.Encoding> encodings) {
707708
List<Encoding> converted = new ArrayList<Encoding>(encodings.size());
708709
for (org.apache.parquet.column.Encoding encoding : encodings) {
709710
converted.add(getEncoding(encoding));
710711
}
712+
Collections.sort(converted);
711713
return converted;
712714
}
713715

parquet-hadoop/src/test/java/org/apache/parquet/format/converter/TestParquetMetadataConverter.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -759,6 +759,22 @@ public void testEncodingsCache() {
759759
assertEquals("java.util.Collections$UnmodifiableSet", res3.getClass().getName());
760760
}
761761

762+
@Test
763+
public void testEncodingsOrder() {
764+
ParquetMetadataConverter parquetMetadataConverter = new ParquetMetadataConverter();
765+
766+
Set<org.apache.parquet.column.Encoding> columnEncodings =
767+
new HashSet<>(Arrays.asList(org.apache.parquet.column.Encoding.values()));
768+
769+
// Assert that the encodings are returned in ascending ordinal order
770+
List<org.apache.parquet.format.Encoding> formatEncodings =
771+
parquetMetadataConverter.toFormatEncodings(columnEncodings);
772+
for (int i = 1; i < formatEncodings.size(); i++) {
773+
assertTrue(formatEncodings.get(i - 1).ordinal()
774+
< formatEncodings.get(i).ordinal());
775+
}
776+
}
777+
762778
@Test
763779
public void testBinaryStatsV1() {
764780
testBinaryStats(StatsHelper.V1);

0 commit comments

Comments
 (0)