From 1689d7473a034e74906836a921ed8ff7d59434b5 Mon Sep 17 00:00:00 2001 From: Kenny Daniel Date: Fri, 17 May 2024 23:44:55 -0700 Subject: [PATCH] Delta length byte array encoding --- README.md | 2 +- src/datapageV2.js | 5 +- src/delta.js | 14 + test/files/delta_length_byte_array.json | 1002 +++++++++++++++++ .../delta_length_byte_array.metadata.json | 59 + test/files/delta_length_byte_array.parquet | Bin 0 -> 3072 bytes 6 files changed, 1080 insertions(+), 2 deletions(-) create mode 100644 test/files/delta_length_byte_array.json create mode 100644 test/files/delta_length_byte_array.metadata.json create mode 100644 test/files/delta_length_byte_array.parquet diff --git a/README.md b/README.md index d8c39d9..4e397e9 100644 --- a/README.md +++ b/README.md @@ -182,7 +182,7 @@ Parquet encodings: - [X] BIT_PACKED - [X] DELTA_BINARY_PACKED - [X] DELTA_BYTE_ARRAY - - [ ] DELTA_LENGTH_BYTE_ARRAY + - [X] DELTA_LENGTH_BYTE_ARRAY - [ ] BYTE_STREAM_SPLIT ## Hysnappy diff --git a/src/datapageV2.js b/src/datapageV2.js index 4279f22..c7fcaa6 100644 --- a/src/datapageV2.js +++ b/src/datapageV2.js @@ -1,5 +1,5 @@ import { decompressPage } from './column.js' -import { deltaBinaryUnpack, deltaByteArray } from './delta.js' +import { deltaBinaryUnpack, deltaByteArray, deltaLengthByteArray } from './delta.js' import { readRleBitPackedHybrid, widthFromMaxInt } from './encoding.js' import { readPlain } from './plain.js' import { getMaxDefinitionLevel, getMaxRepetitionLevel } from './schema.js' @@ -67,6 +67,9 @@ export function readDataPageV2(compressedBytes, ph, schemaPath, columnMetadata, const int32 = columnMetadata.type === 'INT32' dataPage = int32 ? new Int32Array(nValues) : new BigInt64Array(nValues) deltaBinaryUnpack(pageReader, nValues, dataPage) + } else if (daph2.encoding === 'DELTA_LENGTH_BYTE_ARRAY') { + dataPage = new Array(nValues) + deltaLengthByteArray(pageReader, nValues, dataPage) } else if (daph2.encoding === 'DELTA_BYTE_ARRAY') { dataPage = new Array(nValues) deltaByteArray(pageReader, nValues, dataPage) diff --git a/src/delta.js b/src/delta.js index 47ccc7b..7424baa 100644 --- a/src/delta.js +++ b/src/delta.js @@ -61,6 +61,20 @@ export function deltaBinaryUnpack(reader, nValues, output) { } } +/** + * @param {DataReader} reader + * @param {number} nValues + * @param {Uint8Array[]} output + */ +export function deltaLengthByteArray(reader, nValues, output) { + const lengths = new Int32Array(nValues) + deltaBinaryUnpack(reader, nValues, lengths) + for (let i = 0; i < nValues; i++) { + output[i] = new Uint8Array(reader.view.buffer, reader.view.byteOffset + reader.offset, lengths[i]) + reader.offset += lengths[i] + } +} + /** * @param {DataReader} reader * @param {number} nValues diff --git a/test/files/delta_length_byte_array.json b/test/files/delta_length_byte_array.json new file mode 100644 index 0000000..ed299ad --- /dev/null +++ b/test/files/delta_length_byte_array.json @@ -0,0 +1,1002 @@ +[ + ["apple_banana_mango0"], + ["apple_banana_mango1"], + ["apple_banana_mango4"], + ["apple_banana_mango9"], + ["apple_banana_mango16"], + ["apple_banana_mango25"], + ["apple_banana_mango36"], + ["apple_banana_mango49"], + ["apple_banana_mango64"], + ["apple_banana_mango81"], + ["apple_banana_mango100"], + ["apple_banana_mango121"], + ["apple_banana_mango144"], + ["apple_banana_mango169"], + ["apple_banana_mango196"], + ["apple_banana_mango225"], + ["apple_banana_mango256"], + ["apple_banana_mango289"], + ["apple_banana_mango324"], + ["apple_banana_mango361"], + ["apple_banana_mango400"], + ["apple_banana_mango441"], + ["apple_banana_mango484"], + ["apple_banana_mango529"], + ["apple_banana_mango576"], + ["apple_banana_mango625"], + ["apple_banana_mango676"], + ["apple_banana_mango729"], + ["apple_banana_mango784"], + ["apple_banana_mango841"], + ["apple_banana_mango900"], + ["apple_banana_mango961"], + ["apple_banana_mango1024"], + ["apple_banana_mango1089"], + ["apple_banana_mango1156"], + ["apple_banana_mango1225"], + ["apple_banana_mango1296"], + ["apple_banana_mango1369"], + ["apple_banana_mango1444"], + ["apple_banana_mango1521"], + ["apple_banana_mango1600"], + ["apple_banana_mango1681"], + ["apple_banana_mango1764"], + ["apple_banana_mango1849"], + ["apple_banana_mango1936"], + ["apple_banana_mango2025"], + ["apple_banana_mango2116"], + ["apple_banana_mango2209"], + ["apple_banana_mango2304"], + ["apple_banana_mango2401"], + ["apple_banana_mango2500"], + ["apple_banana_mango2601"], + ["apple_banana_mango2704"], + ["apple_banana_mango2809"], + ["apple_banana_mango2916"], + ["apple_banana_mango3025"], + ["apple_banana_mango3136"], + ["apple_banana_mango3249"], + ["apple_banana_mango3364"], + ["apple_banana_mango3481"], + ["apple_banana_mango3600"], + ["apple_banana_mango3721"], + ["apple_banana_mango3844"], + ["apple_banana_mango3969"], + ["apple_banana_mango4096"], + ["apple_banana_mango4225"], + ["apple_banana_mango4356"], + ["apple_banana_mango4489"], + ["apple_banana_mango4624"], + ["apple_banana_mango4761"], + ["apple_banana_mango4900"], + ["apple_banana_mango5041"], + ["apple_banana_mango5184"], + ["apple_banana_mango5329"], + ["apple_banana_mango5476"], + ["apple_banana_mango5625"], + ["apple_banana_mango5776"], + ["apple_banana_mango5929"], + ["apple_banana_mango6084"], + ["apple_banana_mango6241"], + ["apple_banana_mango6400"], + ["apple_banana_mango6561"], + ["apple_banana_mango6724"], + ["apple_banana_mango6889"], + ["apple_banana_mango7056"], + ["apple_banana_mango7225"], + ["apple_banana_mango7396"], + ["apple_banana_mango7569"], + ["apple_banana_mango7744"], + ["apple_banana_mango7921"], + ["apple_banana_mango8100"], + ["apple_banana_mango8281"], + ["apple_banana_mango8464"], + ["apple_banana_mango8649"], + ["apple_banana_mango8836"], + ["apple_banana_mango9025"], + ["apple_banana_mango9216"], + ["apple_banana_mango9409"], + ["apple_banana_mango9604"], + ["apple_banana_mango9801"], + ["apple_banana_mango10000"], + ["apple_banana_mango10201"], + ["apple_banana_mango10404"], + ["apple_banana_mango10609"], + ["apple_banana_mango10816"], + ["apple_banana_mango11025"], + ["apple_banana_mango11236"], + ["apple_banana_mango11449"], + ["apple_banana_mango11664"], + ["apple_banana_mango11881"], + ["apple_banana_mango12100"], + ["apple_banana_mango12321"], + ["apple_banana_mango12544"], + ["apple_banana_mango12769"], + ["apple_banana_mango12996"], + ["apple_banana_mango13225"], + ["apple_banana_mango13456"], + ["apple_banana_mango13689"], + ["apple_banana_mango13924"], + ["apple_banana_mango14161"], + ["apple_banana_mango14400"], + ["apple_banana_mango14641"], + ["apple_banana_mango14884"], + ["apple_banana_mango15129"], + ["apple_banana_mango15376"], + ["apple_banana_mango15625"], + ["apple_banana_mango15876"], + ["apple_banana_mango16129"], + ["apple_banana_mango16384"], + ["apple_banana_mango16641"], + ["apple_banana_mango16900"], + ["apple_banana_mango17161"], + ["apple_banana_mango17424"], + ["apple_banana_mango17689"], + ["apple_banana_mango17956"], + ["apple_banana_mango18225"], + ["apple_banana_mango18496"], + ["apple_banana_mango18769"], + ["apple_banana_mango19044"], + ["apple_banana_mango19321"], + ["apple_banana_mango19600"], + ["apple_banana_mango19881"], + ["apple_banana_mango20164"], + ["apple_banana_mango20449"], + ["apple_banana_mango20736"], + ["apple_banana_mango21025"], + ["apple_banana_mango21316"], + ["apple_banana_mango21609"], + ["apple_banana_mango21904"], + ["apple_banana_mango22201"], + ["apple_banana_mango22500"], + ["apple_banana_mango22801"], + ["apple_banana_mango23104"], + ["apple_banana_mango23409"], + ["apple_banana_mango23716"], + ["apple_banana_mango24025"], + ["apple_banana_mango24336"], + ["apple_banana_mango24649"], + ["apple_banana_mango24964"], + ["apple_banana_mango25281"], + ["apple_banana_mango25600"], + ["apple_banana_mango25921"], + ["apple_banana_mango26244"], + ["apple_banana_mango26569"], + ["apple_banana_mango26896"], + ["apple_banana_mango27225"], + ["apple_banana_mango27556"], + ["apple_banana_mango27889"], + ["apple_banana_mango28224"], + ["apple_banana_mango28561"], + ["apple_banana_mango28900"], + ["apple_banana_mango29241"], + ["apple_banana_mango29584"], + ["apple_banana_mango29929"], + ["apple_banana_mango30276"], + ["apple_banana_mango30625"], + ["apple_banana_mango30976"], + ["apple_banana_mango31329"], + ["apple_banana_mango31684"], + ["apple_banana_mango32041"], + ["apple_banana_mango32400"], + ["apple_banana_mango32761"], + ["apple_banana_mango33124"], + ["apple_banana_mango33489"], + ["apple_banana_mango33856"], + ["apple_banana_mango34225"], + ["apple_banana_mango34596"], + ["apple_banana_mango34969"], + ["apple_banana_mango35344"], + ["apple_banana_mango35721"], + ["apple_banana_mango36100"], + ["apple_banana_mango36481"], + ["apple_banana_mango36864"], + ["apple_banana_mango37249"], + ["apple_banana_mango37636"], + ["apple_banana_mango38025"], + ["apple_banana_mango38416"], + ["apple_banana_mango38809"], + ["apple_banana_mango39204"], + ["apple_banana_mango39601"], + ["apple_banana_mango40000"], + ["apple_banana_mango40401"], + ["apple_banana_mango40804"], + ["apple_banana_mango41209"], + ["apple_banana_mango41616"], + ["apple_banana_mango42025"], + ["apple_banana_mango42436"], + ["apple_banana_mango42849"], + ["apple_banana_mango43264"], + ["apple_banana_mango43681"], + ["apple_banana_mango44100"], + ["apple_banana_mango44521"], + ["apple_banana_mango44944"], + ["apple_banana_mango45369"], + ["apple_banana_mango45796"], + ["apple_banana_mango46225"], + ["apple_banana_mango46656"], + ["apple_banana_mango47089"], + ["apple_banana_mango47524"], + ["apple_banana_mango47961"], + ["apple_banana_mango48400"], + ["apple_banana_mango48841"], + ["apple_banana_mango49284"], + ["apple_banana_mango49729"], + ["apple_banana_mango50176"], + ["apple_banana_mango50625"], + ["apple_banana_mango51076"], + ["apple_banana_mango51529"], + ["apple_banana_mango51984"], + ["apple_banana_mango52441"], + ["apple_banana_mango52900"], + ["apple_banana_mango53361"], + ["apple_banana_mango53824"], + ["apple_banana_mango54289"], + ["apple_banana_mango54756"], + ["apple_banana_mango55225"], + ["apple_banana_mango55696"], + ["apple_banana_mango56169"], + ["apple_banana_mango56644"], + ["apple_banana_mango57121"], + ["apple_banana_mango57600"], + ["apple_banana_mango58081"], + ["apple_banana_mango58564"], + ["apple_banana_mango59049"], + ["apple_banana_mango59536"], + ["apple_banana_mango60025"], + ["apple_banana_mango60516"], + ["apple_banana_mango61009"], + ["apple_banana_mango61504"], + ["apple_banana_mango62001"], + ["apple_banana_mango62500"], + ["apple_banana_mango63001"], + ["apple_banana_mango63504"], + ["apple_banana_mango64009"], + ["apple_banana_mango64516"], + ["apple_banana_mango65025"], + ["apple_banana_mango65536"], + ["apple_banana_mango66049"], + ["apple_banana_mango66564"], + ["apple_banana_mango67081"], + ["apple_banana_mango67600"], + ["apple_banana_mango68121"], + ["apple_banana_mango68644"], + ["apple_banana_mango69169"], + ["apple_banana_mango69696"], + ["apple_banana_mango70225"], + ["apple_banana_mango70756"], + ["apple_banana_mango71289"], + ["apple_banana_mango71824"], + ["apple_banana_mango72361"], + ["apple_banana_mango72900"], + ["apple_banana_mango73441"], + ["apple_banana_mango73984"], + ["apple_banana_mango74529"], + ["apple_banana_mango75076"], + ["apple_banana_mango75625"], + ["apple_banana_mango76176"], + ["apple_banana_mango76729"], + ["apple_banana_mango77284"], + ["apple_banana_mango77841"], + ["apple_banana_mango78400"], + ["apple_banana_mango78961"], + ["apple_banana_mango79524"], + ["apple_banana_mango80089"], + ["apple_banana_mango80656"], + ["apple_banana_mango81225"], + ["apple_banana_mango81796"], + ["apple_banana_mango82369"], + ["apple_banana_mango82944"], + ["apple_banana_mango83521"], + ["apple_banana_mango84100"], + ["apple_banana_mango84681"], + ["apple_banana_mango85264"], + ["apple_banana_mango85849"], + ["apple_banana_mango86436"], + ["apple_banana_mango87025"], + ["apple_banana_mango87616"], + ["apple_banana_mango88209"], + ["apple_banana_mango88804"], + ["apple_banana_mango89401"], + ["apple_banana_mango90000"], + ["apple_banana_mango90601"], + ["apple_banana_mango91204"], + ["apple_banana_mango91809"], + ["apple_banana_mango92416"], + ["apple_banana_mango93025"], + ["apple_banana_mango93636"], + ["apple_banana_mango94249"], + ["apple_banana_mango94864"], + ["apple_banana_mango95481"], + ["apple_banana_mango96100"], + ["apple_banana_mango96721"], + ["apple_banana_mango97344"], + ["apple_banana_mango97969"], + ["apple_banana_mango98596"], + ["apple_banana_mango99225"], + ["apple_banana_mango99856"], + ["apple_banana_mango100489"], + ["apple_banana_mango101124"], + ["apple_banana_mango101761"], + ["apple_banana_mango102400"], + ["apple_banana_mango103041"], + ["apple_banana_mango103684"], + ["apple_banana_mango104329"], + ["apple_banana_mango104976"], + ["apple_banana_mango105625"], + ["apple_banana_mango106276"], + ["apple_banana_mango106929"], + ["apple_banana_mango107584"], + ["apple_banana_mango108241"], + ["apple_banana_mango108900"], + ["apple_banana_mango109561"], + ["apple_banana_mango110224"], + ["apple_banana_mango110889"], + ["apple_banana_mango111556"], + ["apple_banana_mango112225"], + ["apple_banana_mango112896"], + ["apple_banana_mango113569"], + ["apple_banana_mango114244"], + ["apple_banana_mango114921"], + ["apple_banana_mango115600"], + ["apple_banana_mango116281"], + ["apple_banana_mango116964"], + ["apple_banana_mango117649"], + ["apple_banana_mango118336"], + ["apple_banana_mango119025"], + ["apple_banana_mango119716"], + ["apple_banana_mango120409"], + ["apple_banana_mango121104"], + ["apple_banana_mango121801"], + ["apple_banana_mango122500"], + ["apple_banana_mango123201"], + ["apple_banana_mango123904"], + ["apple_banana_mango124609"], + ["apple_banana_mango125316"], + ["apple_banana_mango126025"], + ["apple_banana_mango126736"], + ["apple_banana_mango127449"], + ["apple_banana_mango128164"], + ["apple_banana_mango128881"], + ["apple_banana_mango129600"], + ["apple_banana_mango130321"], + ["apple_banana_mango131044"], + ["apple_banana_mango131769"], + ["apple_banana_mango132496"], + ["apple_banana_mango133225"], + ["apple_banana_mango133956"], + ["apple_banana_mango134689"], + ["apple_banana_mango135424"], + ["apple_banana_mango136161"], + ["apple_banana_mango136900"], + ["apple_banana_mango137641"], + ["apple_banana_mango138384"], + ["apple_banana_mango139129"], + ["apple_banana_mango139876"], + ["apple_banana_mango140625"], + ["apple_banana_mango141376"], + ["apple_banana_mango142129"], + ["apple_banana_mango142884"], + ["apple_banana_mango143641"], + ["apple_banana_mango144400"], + ["apple_banana_mango145161"], + ["apple_banana_mango145924"], + ["apple_banana_mango146689"], + ["apple_banana_mango147456"], + ["apple_banana_mango148225"], + ["apple_banana_mango148996"], + ["apple_banana_mango149769"], + ["apple_banana_mango150544"], + ["apple_banana_mango151321"], + ["apple_banana_mango152100"], + ["apple_banana_mango152881"], + ["apple_banana_mango153664"], + ["apple_banana_mango154449"], + ["apple_banana_mango155236"], + ["apple_banana_mango156025"], + ["apple_banana_mango156816"], + ["apple_banana_mango157609"], + ["apple_banana_mango158404"], + ["apple_banana_mango159201"], + ["apple_banana_mango160000"], + ["apple_banana_mango160801"], + ["apple_banana_mango161604"], + ["apple_banana_mango162409"], + ["apple_banana_mango163216"], + ["apple_banana_mango164025"], + ["apple_banana_mango164836"], + ["apple_banana_mango165649"], + ["apple_banana_mango166464"], + ["apple_banana_mango167281"], + ["apple_banana_mango168100"], + ["apple_banana_mango168921"], + ["apple_banana_mango169744"], + ["apple_banana_mango170569"], + ["apple_banana_mango171396"], + ["apple_banana_mango172225"], + ["apple_banana_mango173056"], + ["apple_banana_mango173889"], + ["apple_banana_mango174724"], + ["apple_banana_mango175561"], + ["apple_banana_mango176400"], + ["apple_banana_mango177241"], + ["apple_banana_mango178084"], + ["apple_banana_mango178929"], + ["apple_banana_mango179776"], + ["apple_banana_mango180625"], + ["apple_banana_mango181476"], + ["apple_banana_mango182329"], + ["apple_banana_mango183184"], + ["apple_banana_mango184041"], + ["apple_banana_mango184900"], + ["apple_banana_mango185761"], + ["apple_banana_mango186624"], + ["apple_banana_mango187489"], + ["apple_banana_mango188356"], + ["apple_banana_mango189225"], + ["apple_banana_mango190096"], + ["apple_banana_mango190969"], + ["apple_banana_mango191844"], + ["apple_banana_mango192721"], + ["apple_banana_mango193600"], + ["apple_banana_mango194481"], + ["apple_banana_mango195364"], + ["apple_banana_mango196249"], + ["apple_banana_mango197136"], + ["apple_banana_mango198025"], + ["apple_banana_mango198916"], + ["apple_banana_mango199809"], + ["apple_banana_mango200704"], + ["apple_banana_mango201601"], + ["apple_banana_mango202500"], + ["apple_banana_mango203401"], + ["apple_banana_mango204304"], + ["apple_banana_mango205209"], + ["apple_banana_mango206116"], + ["apple_banana_mango207025"], + ["apple_banana_mango207936"], + ["apple_banana_mango208849"], + ["apple_banana_mango209764"], + ["apple_banana_mango210681"], + ["apple_banana_mango211600"], + ["apple_banana_mango212521"], + ["apple_banana_mango213444"], + ["apple_banana_mango214369"], + ["apple_banana_mango215296"], + ["apple_banana_mango216225"], + ["apple_banana_mango217156"], + ["apple_banana_mango218089"], + ["apple_banana_mango219024"], + ["apple_banana_mango219961"], + ["apple_banana_mango220900"], + ["apple_banana_mango221841"], + ["apple_banana_mango222784"], + ["apple_banana_mango223729"], + ["apple_banana_mango224676"], + ["apple_banana_mango225625"], + ["apple_banana_mango226576"], + ["apple_banana_mango227529"], + ["apple_banana_mango228484"], + ["apple_banana_mango229441"], + ["apple_banana_mango230400"], + ["apple_banana_mango231361"], + ["apple_banana_mango232324"], + ["apple_banana_mango233289"], + ["apple_banana_mango234256"], + ["apple_banana_mango235225"], + ["apple_banana_mango236196"], + ["apple_banana_mango237169"], + ["apple_banana_mango238144"], + ["apple_banana_mango239121"], + ["apple_banana_mango240100"], + ["apple_banana_mango241081"], + ["apple_banana_mango242064"], + ["apple_banana_mango243049"], + ["apple_banana_mango244036"], + ["apple_banana_mango245025"], + ["apple_banana_mango246016"], + ["apple_banana_mango247009"], + ["apple_banana_mango248004"], + ["apple_banana_mango249001"], + ["apple_banana_mango250000"], + ["apple_banana_mango251001"], + ["apple_banana_mango252004"], + ["apple_banana_mango253009"], + ["apple_banana_mango254016"], + ["apple_banana_mango255025"], + ["apple_banana_mango256036"], + ["apple_banana_mango257049"], + ["apple_banana_mango258064"], + ["apple_banana_mango259081"], + ["apple_banana_mango260100"], + ["apple_banana_mango261121"], + ["apple_banana_mango262144"], + ["apple_banana_mango263169"], + ["apple_banana_mango264196"], + ["apple_banana_mango265225"], + ["apple_banana_mango266256"], + ["apple_banana_mango267289"], + ["apple_banana_mango268324"], + ["apple_banana_mango269361"], + ["apple_banana_mango270400"], + ["apple_banana_mango271441"], + ["apple_banana_mango272484"], + ["apple_banana_mango273529"], + ["apple_banana_mango274576"], + ["apple_banana_mango275625"], + ["apple_banana_mango276676"], + ["apple_banana_mango277729"], + ["apple_banana_mango278784"], + ["apple_banana_mango279841"], + ["apple_banana_mango280900"], + ["apple_banana_mango281961"], + ["apple_banana_mango283024"], + ["apple_banana_mango284089"], + ["apple_banana_mango285156"], + ["apple_banana_mango286225"], + ["apple_banana_mango287296"], + ["apple_banana_mango288369"], + ["apple_banana_mango289444"], + ["apple_banana_mango290521"], + ["apple_banana_mango291600"], + ["apple_banana_mango292681"], + ["apple_banana_mango293764"], + ["apple_banana_mango294849"], + ["apple_banana_mango295936"], + ["apple_banana_mango297025"], + ["apple_banana_mango298116"], + ["apple_banana_mango299209"], + ["apple_banana_mango300304"], + ["apple_banana_mango301401"], + ["apple_banana_mango302500"], + ["apple_banana_mango303601"], + ["apple_banana_mango304704"], + ["apple_banana_mango305809"], + ["apple_banana_mango306916"], + ["apple_banana_mango308025"], + ["apple_banana_mango309136"], + ["apple_banana_mango310249"], + ["apple_banana_mango311364"], + ["apple_banana_mango312481"], + ["apple_banana_mango313600"], + ["apple_banana_mango314721"], + ["apple_banana_mango315844"], + ["apple_banana_mango316969"], + ["apple_banana_mango318096"], + ["apple_banana_mango319225"], + ["apple_banana_mango320356"], + ["apple_banana_mango321489"], + ["apple_banana_mango322624"], + ["apple_banana_mango323761"], + ["apple_banana_mango324900"], + ["apple_banana_mango326041"], + ["apple_banana_mango327184"], + ["apple_banana_mango328329"], + ["apple_banana_mango329476"], + ["apple_banana_mango330625"], + ["apple_banana_mango331776"], + ["apple_banana_mango332929"], + ["apple_banana_mango334084"], + ["apple_banana_mango335241"], + ["apple_banana_mango336400"], + ["apple_banana_mango337561"], + ["apple_banana_mango338724"], + ["apple_banana_mango339889"], + ["apple_banana_mango341056"], + ["apple_banana_mango342225"], + ["apple_banana_mango343396"], + ["apple_banana_mango344569"], + ["apple_banana_mango345744"], + ["apple_banana_mango346921"], + ["apple_banana_mango348100"], + ["apple_banana_mango349281"], + ["apple_banana_mango350464"], + ["apple_banana_mango351649"], + ["apple_banana_mango352836"], + ["apple_banana_mango354025"], + ["apple_banana_mango355216"], + ["apple_banana_mango356409"], + ["apple_banana_mango357604"], + ["apple_banana_mango358801"], + ["apple_banana_mango360000"], + ["apple_banana_mango361201"], + ["apple_banana_mango362404"], + ["apple_banana_mango363609"], + ["apple_banana_mango364816"], + ["apple_banana_mango366025"], + ["apple_banana_mango367236"], + ["apple_banana_mango368449"], + ["apple_banana_mango369664"], + ["apple_banana_mango370881"], + ["apple_banana_mango372100"], + ["apple_banana_mango373321"], + ["apple_banana_mango374544"], + ["apple_banana_mango375769"], + ["apple_banana_mango376996"], + ["apple_banana_mango378225"], + ["apple_banana_mango379456"], + ["apple_banana_mango380689"], + ["apple_banana_mango381924"], + ["apple_banana_mango383161"], + ["apple_banana_mango384400"], + ["apple_banana_mango385641"], + ["apple_banana_mango386884"], + ["apple_banana_mango388129"], + ["apple_banana_mango389376"], + ["apple_banana_mango390625"], + ["apple_banana_mango391876"], + ["apple_banana_mango393129"], + ["apple_banana_mango394384"], + ["apple_banana_mango395641"], + ["apple_banana_mango396900"], + ["apple_banana_mango398161"], + ["apple_banana_mango399424"], + ["apple_banana_mango400689"], + ["apple_banana_mango401956"], + ["apple_banana_mango403225"], + ["apple_banana_mango404496"], + ["apple_banana_mango405769"], + ["apple_banana_mango407044"], + ["apple_banana_mango408321"], + ["apple_banana_mango409600"], + ["apple_banana_mango410881"], + ["apple_banana_mango412164"], + ["apple_banana_mango413449"], + ["apple_banana_mango414736"], + ["apple_banana_mango416025"], + ["apple_banana_mango417316"], + ["apple_banana_mango418609"], + ["apple_banana_mango419904"], + ["apple_banana_mango421201"], + ["apple_banana_mango422500"], + ["apple_banana_mango423801"], + ["apple_banana_mango425104"], + ["apple_banana_mango426409"], + ["apple_banana_mango427716"], + ["apple_banana_mango429025"], + ["apple_banana_mango430336"], + ["apple_banana_mango431649"], + ["apple_banana_mango432964"], + ["apple_banana_mango434281"], + ["apple_banana_mango435600"], + ["apple_banana_mango436921"], + ["apple_banana_mango438244"], + ["apple_banana_mango439569"], + ["apple_banana_mango440896"], + ["apple_banana_mango442225"], + ["apple_banana_mango443556"], + ["apple_banana_mango444889"], + ["apple_banana_mango446224"], + ["apple_banana_mango447561"], + ["apple_banana_mango448900"], + ["apple_banana_mango450241"], + ["apple_banana_mango451584"], + ["apple_banana_mango452929"], + ["apple_banana_mango454276"], + ["apple_banana_mango455625"], + ["apple_banana_mango456976"], + ["apple_banana_mango458329"], + ["apple_banana_mango459684"], + ["apple_banana_mango461041"], + ["apple_banana_mango462400"], + ["apple_banana_mango463761"], + ["apple_banana_mango465124"], + ["apple_banana_mango466489"], + ["apple_banana_mango467856"], + ["apple_banana_mango469225"], + ["apple_banana_mango470596"], + ["apple_banana_mango471969"], + ["apple_banana_mango473344"], + ["apple_banana_mango474721"], + ["apple_banana_mango476100"], + ["apple_banana_mango477481"], + ["apple_banana_mango478864"], + ["apple_banana_mango480249"], + ["apple_banana_mango481636"], + ["apple_banana_mango483025"], + ["apple_banana_mango484416"], + ["apple_banana_mango485809"], + ["apple_banana_mango487204"], + ["apple_banana_mango488601"], + ["apple_banana_mango490000"], + ["apple_banana_mango491401"], + ["apple_banana_mango492804"], + ["apple_banana_mango494209"], + ["apple_banana_mango495616"], + ["apple_banana_mango497025"], + ["apple_banana_mango498436"], + ["apple_banana_mango499849"], + ["apple_banana_mango501264"], + ["apple_banana_mango502681"], + ["apple_banana_mango504100"], + ["apple_banana_mango505521"], + ["apple_banana_mango506944"], + ["apple_banana_mango508369"], + ["apple_banana_mango509796"], + ["apple_banana_mango511225"], + ["apple_banana_mango512656"], + ["apple_banana_mango514089"], + ["apple_banana_mango515524"], + ["apple_banana_mango516961"], + ["apple_banana_mango518400"], + ["apple_banana_mango519841"], + ["apple_banana_mango521284"], + ["apple_banana_mango522729"], + ["apple_banana_mango524176"], + ["apple_banana_mango525625"], + ["apple_banana_mango527076"], + ["apple_banana_mango528529"], + ["apple_banana_mango529984"], + ["apple_banana_mango531441"], + ["apple_banana_mango532900"], + ["apple_banana_mango534361"], + ["apple_banana_mango535824"], + ["apple_banana_mango537289"], + ["apple_banana_mango538756"], + ["apple_banana_mango540225"], + ["apple_banana_mango541696"], + ["apple_banana_mango543169"], + ["apple_banana_mango544644"], + ["apple_banana_mango546121"], + ["apple_banana_mango547600"], + ["apple_banana_mango549081"], + ["apple_banana_mango550564"], + ["apple_banana_mango552049"], + ["apple_banana_mango553536"], + ["apple_banana_mango555025"], + ["apple_banana_mango556516"], + ["apple_banana_mango558009"], + ["apple_banana_mango559504"], + ["apple_banana_mango561001"], + ["apple_banana_mango562500"], + ["apple_banana_mango564001"], + ["apple_banana_mango565504"], + ["apple_banana_mango567009"], + ["apple_banana_mango568516"], + ["apple_banana_mango570025"], + ["apple_banana_mango571536"], + ["apple_banana_mango573049"], + ["apple_banana_mango574564"], + ["apple_banana_mango576081"], + ["apple_banana_mango577600"], + ["apple_banana_mango579121"], + ["apple_banana_mango580644"], + ["apple_banana_mango582169"], + ["apple_banana_mango583696"], + ["apple_banana_mango585225"], + ["apple_banana_mango586756"], + ["apple_banana_mango588289"], + ["apple_banana_mango589824"], + ["apple_banana_mango591361"], + ["apple_banana_mango592900"], + ["apple_banana_mango594441"], + ["apple_banana_mango595984"], + ["apple_banana_mango597529"], + ["apple_banana_mango599076"], + ["apple_banana_mango600625"], + ["apple_banana_mango602176"], + ["apple_banana_mango603729"], + ["apple_banana_mango605284"], + ["apple_banana_mango606841"], + ["apple_banana_mango608400"], + ["apple_banana_mango609961"], + ["apple_banana_mango611524"], + ["apple_banana_mango613089"], + ["apple_banana_mango614656"], + ["apple_banana_mango616225"], + ["apple_banana_mango617796"], + ["apple_banana_mango619369"], + ["apple_banana_mango620944"], + ["apple_banana_mango622521"], + ["apple_banana_mango624100"], + ["apple_banana_mango625681"], + ["apple_banana_mango627264"], + ["apple_banana_mango628849"], + ["apple_banana_mango630436"], + ["apple_banana_mango632025"], + ["apple_banana_mango633616"], + ["apple_banana_mango635209"], + ["apple_banana_mango636804"], + ["apple_banana_mango638401"], + ["apple_banana_mango640000"], + ["apple_banana_mango641601"], + ["apple_banana_mango643204"], + ["apple_banana_mango644809"], + ["apple_banana_mango646416"], + ["apple_banana_mango648025"], + ["apple_banana_mango649636"], + ["apple_banana_mango651249"], + ["apple_banana_mango652864"], + ["apple_banana_mango654481"], + ["apple_banana_mango656100"], + ["apple_banana_mango657721"], + ["apple_banana_mango659344"], + ["apple_banana_mango660969"], + ["apple_banana_mango662596"], + ["apple_banana_mango664225"], + ["apple_banana_mango665856"], + ["apple_banana_mango667489"], + ["apple_banana_mango669124"], + ["apple_banana_mango670761"], + ["apple_banana_mango672400"], + ["apple_banana_mango674041"], + ["apple_banana_mango675684"], + ["apple_banana_mango677329"], + ["apple_banana_mango678976"], + ["apple_banana_mango680625"], + ["apple_banana_mango682276"], + ["apple_banana_mango683929"], + ["apple_banana_mango685584"], + ["apple_banana_mango687241"], + ["apple_banana_mango688900"], + ["apple_banana_mango690561"], + ["apple_banana_mango692224"], + ["apple_banana_mango693889"], + ["apple_banana_mango695556"], + ["apple_banana_mango697225"], + ["apple_banana_mango698896"], + ["apple_banana_mango700569"], + ["apple_banana_mango702244"], + ["apple_banana_mango703921"], + ["apple_banana_mango705600"], + ["apple_banana_mango707281"], + ["apple_banana_mango708964"], + ["apple_banana_mango710649"], + ["apple_banana_mango712336"], + ["apple_banana_mango714025"], + ["apple_banana_mango715716"], + ["apple_banana_mango717409"], + ["apple_banana_mango719104"], + ["apple_banana_mango720801"], + ["apple_banana_mango722500"], + ["apple_banana_mango724201"], + ["apple_banana_mango725904"], + ["apple_banana_mango727609"], + ["apple_banana_mango729316"], + ["apple_banana_mango731025"], + ["apple_banana_mango732736"], + ["apple_banana_mango734449"], + ["apple_banana_mango736164"], + ["apple_banana_mango737881"], + ["apple_banana_mango739600"], + ["apple_banana_mango741321"], + ["apple_banana_mango743044"], + ["apple_banana_mango744769"], + ["apple_banana_mango746496"], + ["apple_banana_mango748225"], + ["apple_banana_mango749956"], + ["apple_banana_mango751689"], + ["apple_banana_mango753424"], + ["apple_banana_mango755161"], + ["apple_banana_mango756900"], + ["apple_banana_mango758641"], + ["apple_banana_mango760384"], + ["apple_banana_mango762129"], + ["apple_banana_mango763876"], + ["apple_banana_mango765625"], + ["apple_banana_mango767376"], + ["apple_banana_mango769129"], + ["apple_banana_mango770884"], + ["apple_banana_mango772641"], + ["apple_banana_mango774400"], + ["apple_banana_mango776161"], + ["apple_banana_mango777924"], + ["apple_banana_mango779689"], + ["apple_banana_mango781456"], + ["apple_banana_mango783225"], + ["apple_banana_mango784996"], + ["apple_banana_mango786769"], + ["apple_banana_mango788544"], + ["apple_banana_mango790321"], + ["apple_banana_mango792100"], + ["apple_banana_mango793881"], + ["apple_banana_mango795664"], + ["apple_banana_mango797449"], + ["apple_banana_mango799236"], + ["apple_banana_mango801025"], + ["apple_banana_mango802816"], + ["apple_banana_mango804609"], + ["apple_banana_mango806404"], + ["apple_banana_mango808201"], + ["apple_banana_mango810000"], + ["apple_banana_mango811801"], + ["apple_banana_mango813604"], + ["apple_banana_mango815409"], + ["apple_banana_mango817216"], + ["apple_banana_mango819025"], + ["apple_banana_mango820836"], + ["apple_banana_mango822649"], + ["apple_banana_mango824464"], + ["apple_banana_mango826281"], + ["apple_banana_mango828100"], + ["apple_banana_mango829921"], + ["apple_banana_mango831744"], + ["apple_banana_mango833569"], + ["apple_banana_mango835396"], + ["apple_banana_mango837225"], + ["apple_banana_mango839056"], + ["apple_banana_mango840889"], + ["apple_banana_mango842724"], + ["apple_banana_mango844561"], + ["apple_banana_mango846400"], + ["apple_banana_mango848241"], + ["apple_banana_mango850084"], + ["apple_banana_mango851929"], + ["apple_banana_mango853776"], + ["apple_banana_mango855625"], + ["apple_banana_mango857476"], + ["apple_banana_mango859329"], + ["apple_banana_mango861184"], + ["apple_banana_mango863041"], + ["apple_banana_mango864900"], + ["apple_banana_mango866761"], + ["apple_banana_mango868624"], + ["apple_banana_mango870489"], + ["apple_banana_mango872356"], + ["apple_banana_mango874225"], + ["apple_banana_mango876096"], + ["apple_banana_mango877969"], + ["apple_banana_mango879844"], + ["apple_banana_mango881721"], + ["apple_banana_mango883600"], + ["apple_banana_mango885481"], + ["apple_banana_mango887364"], + ["apple_banana_mango889249"], + ["apple_banana_mango891136"], + ["apple_banana_mango893025"], + ["apple_banana_mango894916"], + ["apple_banana_mango896809"], + ["apple_banana_mango898704"], + ["apple_banana_mango900601"], + ["apple_banana_mango902500"], + ["apple_banana_mango904401"], + ["apple_banana_mango906304"], + ["apple_banana_mango908209"], + ["apple_banana_mango910116"], + ["apple_banana_mango912025"], + ["apple_banana_mango913936"], + ["apple_banana_mango915849"], + ["apple_banana_mango917764"], + ["apple_banana_mango919681"], + ["apple_banana_mango921600"], + ["apple_banana_mango923521"], + ["apple_banana_mango925444"], + ["apple_banana_mango927369"], + ["apple_banana_mango929296"], + ["apple_banana_mango931225"], + ["apple_banana_mango933156"], + ["apple_banana_mango935089"], + ["apple_banana_mango937024"], + ["apple_banana_mango938961"], + ["apple_banana_mango940900"], + ["apple_banana_mango942841"], + ["apple_banana_mango944784"], + ["apple_banana_mango946729"], + ["apple_banana_mango948676"], + ["apple_banana_mango950625"], + ["apple_banana_mango952576"], + ["apple_banana_mango954529"], + ["apple_banana_mango956484"], + ["apple_banana_mango958441"], + ["apple_banana_mango960400"], + ["apple_banana_mango962361"], + ["apple_banana_mango964324"], + ["apple_banana_mango966289"], + ["apple_banana_mango968256"], + ["apple_banana_mango970225"], + ["apple_banana_mango972196"], + ["apple_banana_mango974169"], + ["apple_banana_mango976144"], + ["apple_banana_mango978121"], + ["apple_banana_mango980100"], + ["apple_banana_mango982081"], + ["apple_banana_mango984064"], + ["apple_banana_mango986049"], + ["apple_banana_mango988036"], + ["apple_banana_mango990025"], + ["apple_banana_mango992016"], + ["apple_banana_mango994009"], + ["apple_banana_mango996004"], + ["apple_banana_mango998001"] +] diff --git a/test/files/delta_length_byte_array.metadata.json b/test/files/delta_length_byte_array.metadata.json new file mode 100644 index 0000000..882d25f --- /dev/null +++ b/test/files/delta_length_byte_array.metadata.json @@ -0,0 +1,59 @@ +{ + "version": 2, + "schema": [ + { + "repetition_type": "REQUIRED", + "name": "schema", + "num_children": 1, + "field_id": -1 + }, + { + "type": "BYTE_ARRAY", + "repetition_type": "OPTIONAL", + "name": "FRUIT", + "converted_type": "UTF8", + "field_id": 1, + "logical_type": { + "type": "STRING" + } + } + ], + "num_rows": 1000, + "row_groups": [ + { + "columns": [ + { + "file_offset": 2629, + "meta_data": { + "type": "BYTE_ARRAY", + "encodings": [ + "RLE", + "DELTA_LENGTH_BYTE_ARRAY" + ], + "path_in_schema": [ + "FRUIT" + ], + "codec": "ZSTD", + "num_values": 1000, + "total_uncompressed_size": 23747, + "total_compressed_size": 2625, + "data_page_offset": 4, + "encoding_stats": [ + { + "page_type": 3, + "encoding": "DELTA_LENGTH_BYTE_ARRAY", + "count": 1 + } + ] + } + } + ], + "total_byte_size": 23747, + "num_rows": 1000, + "file_offset": 0, + "total_compressed_size": 2625, + "ordinal": 0 + } + ], + "metadata_length": 105 +} diff --git a/test/files/delta_length_byte_array.parquet b/test/files/delta_length_byte_array.parquet new file mode 100644 index 0000000000000000000000000000000000000000..131c7e4ff96d39c5b5bc5f9cc276e24d1bfb7772 GIT binary patch literal 3072 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 literal 0 HcmV?d00001