@@ -61,7 +61,7 @@ describe('ArrowResultHandler', () => {
6161 it ( 'should return data' , async ( ) => {
6262 const context = { } ;
6363 const rowSetProvider = new ResultsProviderMock ( [ sampleRowSet1 ] ) ;
64- const result = new ArrowResultHandler ( context , rowSetProvider , sampleArrowSchema ) ;
64+ const result = new ArrowResultHandler ( context , rowSetProvider , { arrowSchema : sampleArrowSchema } ) ;
6565
6666 const batches = await result . fetchNext ( { limit : 10000 } ) ;
6767 expect ( await rowSetProvider . hasMore ( ) ) . to . be . false ;
@@ -74,7 +74,10 @@ describe('ArrowResultHandler', () => {
7474 it ( 'should handle LZ4 compressed data' , async ( ) => {
7575 const context = { } ;
7676 const rowSetProvider = new ResultsProviderMock ( [ sampleRowSet1LZ4Compressed ] ) ;
77- const result = new ArrowResultHandler ( context , rowSetProvider , sampleArrowSchema , true ) ;
77+ const result = new ArrowResultHandler ( context , rowSetProvider , {
78+ arrowSchema : sampleArrowSchema ,
79+ lz4Compressed : true ,
80+ } ) ;
7881
7982 const batches = await result . fetchNext ( { limit : 10000 } ) ;
8083 expect ( await rowSetProvider . hasMore ( ) ) . to . be . false ;
@@ -87,7 +90,7 @@ describe('ArrowResultHandler', () => {
8790 it ( 'should not buffer any data' , async ( ) => {
8891 const context = { } ;
8992 const rowSetProvider = new ResultsProviderMock ( [ sampleRowSet1 ] ) ;
90- const result = new ArrowResultHandler ( context , rowSetProvider , sampleArrowSchema ) ;
93+ const result = new ArrowResultHandler ( context , rowSetProvider , { arrowSchema : sampleArrowSchema } ) ;
9194 expect ( await rowSetProvider . hasMore ( ) ) . to . be . true ;
9295 expect ( await result . hasMore ( ) ) . to . be . true ;
9396
@@ -100,34 +103,61 @@ describe('ArrowResultHandler', () => {
100103 const context = { } ;
101104 case1: {
102105 const rowSetProvider = new ResultsProviderMock ( ) ;
103- const result = new ArrowResultHandler ( context , rowSetProvider , sampleArrowSchema ) ;
106+ const result = new ArrowResultHandler ( context , rowSetProvider , { arrowSchema : sampleArrowSchema } ) ;
104107 expect ( await result . fetchNext ( { limit : 10000 } ) ) . to . be . deep . eq ( [ ] ) ;
105108 expect ( await result . hasMore ( ) ) . to . be . false ;
106109 }
107110 case2: {
108111 const rowSetProvider = new ResultsProviderMock ( [ sampleRowSet2 ] ) ;
109- const result = new ArrowResultHandler ( context , rowSetProvider , sampleArrowSchema ) ;
112+ const result = new ArrowResultHandler ( context , rowSetProvider , { arrowSchema : sampleArrowSchema } ) ;
110113 expect ( await result . fetchNext ( { limit : 10000 } ) ) . to . be . deep . eq ( [ ] ) ;
111114 expect ( await result . hasMore ( ) ) . to . be . false ;
112115 }
113116 case3: {
114117 const rowSetProvider = new ResultsProviderMock ( [ sampleRowSet3 ] ) ;
115- const result = new ArrowResultHandler ( context , rowSetProvider , sampleArrowSchema ) ;
118+ const result = new ArrowResultHandler ( context , rowSetProvider , { arrowSchema : sampleArrowSchema } ) ;
116119 expect ( await result . fetchNext ( { limit : 10000 } ) ) . to . be . deep . eq ( [ ] ) ;
117120 expect ( await result . hasMore ( ) ) . to . be . false ;
118121 }
119122 case4: {
120123 const rowSetProvider = new ResultsProviderMock ( [ sampleRowSet4 ] ) ;
121- const result = new ArrowResultHandler ( context , rowSetProvider , sampleArrowSchema ) ;
124+ const result = new ArrowResultHandler ( context , rowSetProvider , { arrowSchema : sampleArrowSchema } ) ;
122125 expect ( await result . fetchNext ( { limit : 10000 } ) ) . to . be . deep . eq ( [ ] ) ;
123126 expect ( await result . hasMore ( ) ) . to . be . false ;
124127 }
125128 } ) ;
126129
130+ it ( 'should infer arrow schema from thrift schema' , async ( ) => {
131+ const context = { } ;
132+ const rowSetProvider = new ResultsProviderMock ( [ sampleRowSet2 ] ) ;
133+
134+ const sampleThriftSchema = {
135+ columns : [
136+ {
137+ columnName : '1' ,
138+ typeDesc : {
139+ types : [
140+ {
141+ primitiveEntry : {
142+ type : 3 ,
143+ typeQualifiers : null ,
144+ } ,
145+ } ,
146+ ] ,
147+ } ,
148+ position : 1 ,
149+ } ,
150+ ] ,
151+ } ;
152+
153+ const result = new ArrowResultHandler ( context , rowSetProvider , { schema : sampleThriftSchema } ) ;
154+ expect ( result . arrowSchema ) . to . not . be . undefined ;
155+ } ) ;
156+
127157 it ( 'should return empty array if no schema available' , async ( ) => {
128158 const context = { } ;
129159 const rowSetProvider = new ResultsProviderMock ( [ sampleRowSet2 ] ) ;
130- const result = new ArrowResultHandler ( context , rowSetProvider ) ;
160+ const result = new ArrowResultHandler ( context , rowSetProvider , { } ) ;
131161 expect ( await result . fetchNext ( { limit : 10000 } ) ) . to . be . deep . eq ( [ ] ) ;
132162 expect ( await result . hasMore ( ) ) . to . be . false ;
133163 } ) ;
0 commit comments