File tree Expand file tree Collapse file tree 4 files changed +85
-150
lines changed Expand file tree Collapse file tree 4 files changed +85
-150
lines changed Original file line number Diff line number Diff line change @@ -588,14 +588,16 @@ export class BigQuery extends Service {
588
588
parseJSON ?: boolean ;
589
589
}
590
590
) {
591
+ // copy schema fields to avoid mutation when filtering selected fields
592
+ let schemaFields = schema . fields ? [ ...schema . fields ] : [ ] ;
591
593
if ( options . selectedFields && options . selectedFields ! . length > 0 ) {
592
594
const selectedFieldsArray = options . selectedFields ! . map ( c => {
593
595
return c . split ( '.' ) ;
594
596
} ) ;
595
597
596
598
const currentFields = selectedFieldsArray . map ( c => c . shift ( ) ) ;
597
599
//filter schema fields based on selected fields.
598
- schema . fields = schema . fields ? .filter (
600
+ schemaFields = schemaFields . filter (
599
601
field =>
600
602
currentFields
601
603
. map ( c => c ! . toLowerCase ( ) )
@@ -610,7 +612,7 @@ export class BigQuery extends Service {
610
612
611
613
function mergeSchema ( row : TableRow ) {
612
614
return row . f ! . map ( ( field : TableRowField , index : number ) => {
613
- const schemaField = schema . fields ! [ index ] ;
615
+ const schemaField = schemaFields [ index ] ;
614
616
let value = field . v ;
615
617
if ( schemaField . mode === 'REPEATED' ) {
616
618
value = ( value as TableRowField [ ] ) . map ( val => {
Original file line number Diff line number Diff line change @@ -1830,6 +1830,10 @@ class Table extends ServiceObject {
1830
1830
delete options . wrapIntegers ;
1831
1831
const parseJSON = options . parseJSON ? options . parseJSON : false ;
1832
1832
delete options . parseJSON ;
1833
+ const selectedFields = options . selectedFields
1834
+ ? options . selectedFields . split ( ',' )
1835
+ : [ ] ;
1836
+ delete options . selectedFields ;
1833
1837
const onComplete = (
1834
1838
err : Error | null ,
1835
1839
rows : TableRow [ ] | null ,
@@ -1841,10 +1845,8 @@ class Table extends ServiceObject {
1841
1845
return ;
1842
1846
}
1843
1847
rows = BigQuery . mergeSchemaWithRows_ ( this . metadata . schema , rows || [ ] , {
1844
- wrapIntegers : wrapIntegers ,
1845
- selectedFields : options . selectedFields
1846
- ? options . selectedFields ! . split ( ',' )
1847
- : [ ] ,
1848
+ wrapIntegers,
1849
+ selectedFields,
1848
1850
parseJSON,
1849
1851
} ) ;
1850
1852
callback ! ( null , rows , nextQuery , resp ) ;
You can’t perform that action at this time.
0 commit comments