hyparquet/test/plan.test.js
Kenny Daniel 0e6d7dee6f
Parquet Query Planner: plan byte ranges, pre-fetch in parallel (#75)
* Parquet Query Planner: plan byte ranges, pre-fetch in parallel.

 - parquetPlan() that returns lists of byte ranges to fetch.
 - prefetchAsyncBuffer() pre-fetches all byte ranges in parallel.
   throws exception if non-pre-fetched slice is requested later.
2025-04-30 00:49:40 -07:00

33 lines
931 B
JavaScript

import { describe, expect, it } from 'vitest'
import { parquetMetadataAsync } from '../src/hyparquet.js'
import { asyncBufferFromFile } from '../src/utils.js'
import { parquetPlan } from '../src/plan.js'
describe('parquetPlan', () => {
it('generates a query plan', async () => {
const file = await asyncBufferFromFile('test/files/page_indexed.parquet')
const metadata = await parquetMetadataAsync(file)
const plan = parquetPlan({ file, metadata })
expect(plan).toEqual({
ranges: [
{ startByte: 4, endByte: 1166 },
{ startByte: 1166, endByte: 2326 },
],
groups: [
{
plan: [
{ startByte: 4, endByte: 832 },
{ startByte: 832, endByte: 1166 },
],
},
{
plan: [
{ startByte: 1166, endByte: 1998 },
{ startByte: 1998, endByte: 2326 },
],
},
],
})
})
})