@@ -53,34 +53,34 @@ export function parquetDataFrame(from: AsyncBufferFrom, metadata: FileMetaData):
5353 return {
5454 header,
5555 numRows : Number ( metadata . num_rows ) ,
56- rows ( rowStart : number , rowEnd : number , orderBy ?: string ) {
56+ rows ( { start , end , orderBy } : { start : number , end : number , orderBy ?: string } ) {
5757 if ( orderBy ) {
58- const numRows = rowEnd - rowStart
58+ const numRows = end - start
5959 const wrapped = new Array ( numRows ) . fill ( null ) . map ( ( ) => resolvableRow ( header ) )
6060
6161 getSortIndex ( orderBy ) . then ( indices => {
6262 // Compute row groups to fetch
63- for ( const index of indices . slice ( rowStart , rowEnd ) ) {
63+ for ( const index of indices . slice ( start , end ) ) {
6464 const groupIndex = groupEnds . findIndex ( end => index < end )
6565 fetchRowGroup ( groupIndex )
6666 }
6767
6868 // Re-assemble data in sorted order into wrapped
69- for ( let i = rowStart ; i < rowEnd ; i ++ ) {
69+ for ( let i = start ; i < end ; i ++ ) {
7070 const index = indices [ i ]
7171 const row = data [ index ]
7272 if ( row === undefined ) {
7373 throw new Error ( 'Row not fetched' )
7474 }
7575 const { cells } = row
76- wrapped [ i - rowStart ] . index . resolve ( index )
76+ wrapped [ i - start ] . index . resolve ( index )
7777 for ( const key of header ) {
7878 if ( key in cells ) {
7979 // TODO(SL): should we remove this check? It makes sense only if header change
8080 // but if so, I guess we will have more issues
8181 cells [ key ]
8282 . then ( ( value : unknown ) => {
83- wrapped [ i - rowStart ] ?. cells [ key ] . resolve ( value )
83+ wrapped [ i - start ] ?. cells [ key ] . resolve ( value )
8484 } )
8585 . catch ( ( error : unknown ) => {
8686 console . error ( 'Error resolving sorted row' , error )
@@ -99,17 +99,18 @@ export function parquetDataFrame(from: AsyncBufferFrom, metadata: FileMetaData):
9999 } else {
100100 for ( let i = 0 ; i < groups . length ; i ++ ) {
101101 const groupStart = groupEnds [ i - 1 ] || 0
102- if ( rowStart < groupEnds [ i ] && rowEnd > groupStart ) {
102+ if ( start < groupEnds [ i ] && end > groupStart ) {
103103 fetchRowGroup ( i )
104104 }
105105 }
106- const wrapped = data . slice ( rowStart , rowEnd )
106+ const wrapped = data . slice ( start , end )
107107 if ( wrapped . some ( row => row === undefined ) ) {
108108 throw new Error ( 'Row not fetched' )
109109 }
110110 return wrapped as ResolvableRow [ ]
111111 }
112112 } ,
113113 sortable : true ,
114+ // TODO(SL): implement getColumn({column, start, end}): any[]
114115 }
115116}
0 commit comments