From 7f63a92679f524fb79c62134662a6713d3a61b3d Mon Sep 17 00:00:00 2001 From: Kenny Daniel Date: Sun, 11 Feb 2024 21:35:07 -0800 Subject: [PATCH] Handle conversion of decimal byte array --- src/column.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/column.js b/src/column.js index f263e93..3a270c2 100644 --- a/src/column.js +++ b/src/column.js @@ -186,8 +186,7 @@ function convert(data, schemaElement) { if (typeof data[0] === 'number') { return data.map(v => v * scaleFactor) } else { - // TODO: parse byte string - throw new Error('parquet decimal byte string not supported') + return data.map(v => parseDecimal(v) * scaleFactor) } } if (ctype === 'DATE') { @@ -207,3 +206,18 @@ function convert(data, schemaElement) { } return data } + +/** + * Parse decimal from byte array. + * + * @param {Uint8Array} bytes + * @returns {number} + */ +function parseDecimal(bytes) { + // TODO: handle signed + let value = 0 + for (const byte of bytes) { + value = value << 8 | byte + } + return value +}