UNPKG

postgrejs

Version:

Professional PostgreSQL client NodeJS

36 lines (35 loc) 1.12 kB
import { BufferReader } from '../protocol/buffer-reader.js'; export function decodeBinaryArray(buf, decoder, options = {}) { if (!buf.length) return null; const io = new BufferReader(buf); const ndims = io.readInt32BE(); io.readInt32BE(); // hasNulls const elementOID = io.readInt32BE(); // element oid if (ndims === 0) return []; const dims = []; const readDim = (level) => { const elemCount = dims[level]; const target = new Array(elemCount); for (let i = 0; i < elemCount; i++) { if (level < dims.length - 1) { target[i] = readDim(level + 1); continue; } const len = io.readInt32BE(); if (len === -1) target[i] = null; else { const b = io.readBuffer(len); target[i] = decoder(b, { ...options, elementOID }); } } return target; }; for (let d = 0; d < ndims; d++) { dims[d] = io.readInt32BE(); io.readInt32BE(); // LBound } return readDim(0); }