@@ -39,8 +39,8 @@ export function parquetDataFrame(from: AsyncBufferFrom, metadata: FileMetaData):
3939 }
4040 }
4141
42- async function fetchVirtualRowGroup ( { virtualGroupIndex, columns, onCached } : {
43- virtualGroupIndex : number , columns : string [ ] , onCached ?: ( ) => void
42+ async function fetchVirtualRowGroup ( { virtualGroupIndex, columns } : {
43+ virtualGroupIndex : number , columns : string [ ]
4444 } ) : Promise < void > {
4545 const group = groups [ virtualGroupIndex ]
4646 if ( ! group ) {
@@ -49,20 +49,6 @@ export function parquetDataFrame(from: AsyncBufferFrom, metadata: FileMetaData):
4949 const { groupStart, groupEnd, fetching, fetched } = group
5050 const columnsToFetch = columns . filter ( column => ! fetching . get ( column ) && ! fetched . get ( column ) )
5151
52- function onChunk ( chunk : ColumnData ) : void {
53- const { columnName, columnData, rowStart } = chunk
54- const cachedColumn = cellCache . get ( columnName )
55- if ( ! cachedColumn ) {
56- throw new Error ( `Column "${ columnName } " not found in header` )
57- }
58- let row = rowStart
59- for ( const value of columnData ) {
60- cachedColumn [ row ] ??= { value }
61- onCached ?.( )
62- row ++
63- }
64- }
65-
6652 if ( columnsToFetch . length === 0 ) {
6753 // nothing to fetch
6854 return
@@ -82,6 +68,20 @@ export function parquetDataFrame(from: AsyncBufferFrom, metadata: FileMetaData):
8268
8369 }
8470
71+ function onChunk ( chunk : ColumnData ) : void {
72+ const { columnName, columnData, rowStart } = chunk
73+ const cachedColumn = cellCache . get ( columnName )
74+ if ( ! cachedColumn ) {
75+ throw new Error ( `Column "${ columnName } " not found in header` )
76+ }
77+ let row = rowStart
78+ for ( const value of columnData ) {
79+ cachedColumn [ row ] ??= { value }
80+ row ++
81+ }
82+ eventTarget . dispatchEvent ( new CustomEvent ( 'resolve' ) )
83+ }
84+
8585 const numRows = Number ( metadata . num_rows )
8686
8787 const unsortableDataFrame : UnsortableDataFrame = {
@@ -107,17 +107,12 @@ export function parquetDataFrame(from: AsyncBufferFrom, metadata: FileMetaData):
107107
108108 const promises : Promise < void > [ ] = [ ]
109109
110- function onCached ( ) {
111- eventTarget . dispatchEvent ( new CustomEvent ( 'resolve' ) )
112- }
113-
114110 groups . forEach ( ( { groupStart, groupEnd } , i ) => {
115111 if ( groupStart < rowEnd && groupEnd > rowStart ) {
116112 promises . push (
117113 fetchVirtualRowGroup ( {
118114 virtualGroupIndex : i ,
119115 columns,
120- onCached,
121116 } ) . then ( ( ) => {
122117 checkSignal ( signal )
123118 } )
0 commit comments