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 0000000..131c7e4 Binary files /dev/null and b/test/files/delta_length_byte_array.parquet differ