Handle conversion of decimal byte array

This commit is contained in:
Kenny Daniel 2024-02-11 21:35:07 -08:00
parent 69d2e725dd
commit 7f63a92679
No known key found for this signature in database
GPG Key ID: 90AB653A8CAD7E45

@ -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
}