@@ -664,6 +664,45 @@ def test_dump_table_w_public_data(self):
664664 table = dataset .table (TABLE_NAME )
665665 self ._fetch_single_page (table )
666666
667+ def test_insert_nested_nested (self ):
668+ # See #2951
669+ SF = bigquery .SchemaField
670+ schema = [
671+ SF ('string_col' , 'STRING' , mode = 'NULLABLE' ),
672+ SF ('record_col' , 'RECORD' , mode = 'NULLABLE' , fields = [
673+ SF ('nested_string' , 'STRING' , mode = 'NULLABLE' ),
674+ SF ('nested_repeated' , 'INTEGER' , mode = 'REPEATED' ),
675+ SF ('nested_record' , 'RECORD' , mode = 'NULLABLE' , fields = [
676+ SF ('nested_nested_string' , 'STRING' , mode = 'NULLABLE' ),
677+ ]),
678+ ]),
679+ ]
680+ record = {
681+ 'nested_string' : 'another string value' ,
682+ 'nested_repeated' : [0 , 1 , 2 ],
683+ 'nested_record' : {'nested_nested_string' : 'some deep insight' },
684+ }
685+ to_insert = [
686+ ('Some value' , record )
687+ ]
688+ table_name = 'test_table'
689+ dataset = Config .CLIENT .dataset (
690+ _make_dataset_name ('issue_2951' ))
691+
692+ retry_403 (dataset .create )()
693+ self .to_delete .append (dataset )
694+
695+ table = dataset .table (table_name , schema = schema )
696+ table .create ()
697+ self .to_delete .insert (0 , table )
698+
699+ table .insert_data (to_insert )
700+
701+ retry = RetryResult (_has_rows , max_tries = 8 )
702+ rows = retry (self ._fetch_single_page )(table )
703+
704+ self .assertEqual (rows , to_insert )
705+
667706 def test_create_table_nested_schema (self ):
668707 table_name = 'test_table'
669708 dataset = Config .CLIENT .dataset (
0 commit comments