Skip to content

Commit 5c011f6

Browse files
committed
ALP: Wire up Encoding.ALP in column Encoding enum and AlpValuesWriter
Add ALP entry to org.apache.parquet.column.Encoding with getValuesReader returning AlpValuesReaderForFloat/Double. Update AlpValuesWriter.getEncoding() to return Encoding.ALP instead of the PLAIN placeholder.
1 parent 91f9e2e commit 5c011f6

2 files changed

Lines changed: 21 additions & 2 deletions

File tree

parquet-column/src/main/java/org/apache/parquet/column/Encoding.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import org.apache.parquet.bytes.BytesUtils;
3030
import org.apache.parquet.column.page.DictionaryPage;
3131
import org.apache.parquet.column.values.ValuesReader;
32+
import org.apache.parquet.column.values.alp.AlpValuesReaderForDouble;
33+
import org.apache.parquet.column.values.alp.AlpValuesReaderForFloat;
3234
import org.apache.parquet.column.values.bitpacking.ByteBitPackingValuesReader;
3335
import org.apache.parquet.column.values.bytestreamsplit.ByteStreamSplitValuesReaderForDouble;
3436
import org.apache.parquet.column.values.bytestreamsplit.ByteStreamSplitValuesReaderForFLBA;
@@ -147,6 +149,24 @@ public ValuesReader getValuesReader(ColumnDescriptor descriptor, ValuesType valu
147149
}
148150
},
149151

152+
/**
153+
* Adaptive Lossless floating-Point (ALP) encoding for FLOAT and DOUBLE columns.
154+
*/
155+
ALP {
156+
@Override
157+
public ValuesReader getValuesReader(ColumnDescriptor descriptor, ValuesType valuesType) {
158+
switch (descriptor.getType()) {
159+
case FLOAT:
160+
return new AlpValuesReaderForFloat();
161+
case DOUBLE:
162+
return new AlpValuesReaderForDouble();
163+
default:
164+
throw new ParquetDecodingException(
165+
"Encoding ALP is only supported for type FLOAT and DOUBLE, got " + descriptor.getType());
166+
}
167+
}
168+
},
169+
150170
/**
151171
* @deprecated This is no longer used, and has been replaced by {@link #RLE}
152172
* which is combination of bit packing and rle

parquet-column/src/main/java/org/apache/parquet/column/values/alp/AlpValuesWriter.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,9 @@ protected AlpValuesWriter() {
5454
this(DEFAULT_VECTOR_SIZE);
5555
}
5656

57-
// TODO: Replace with Encoding.ALP once ALP is added to parquet-format Thrift spec.
5857
@Override
5958
public Encoding getEncoding() {
60-
return Encoding.PLAIN;
59+
return Encoding.ALP;
6160
}
6261

6362
@Override

0 commit comments

Comments
 (0)