2727
2828import bigframes
2929import bigframes .core
30- from bigframes .core import bq_data , pyarrow_utils
30+ from bigframes .core import bq_data , local_data , pyarrow_utils
3131import bigframes .core .schema
3232import bigframes .session ._io .pandas as io_pandas
3333import bigframes .session .execution_spec as ex_spec
@@ -70,7 +70,6 @@ def arrow_batches(self) -> Iterator[pyarrow.RecordBatch]:
7070 result_rows = 0
7171
7272 for batch in self ._batches :
73- batch = pyarrow_utils .cast_batch (batch , self ._schema .to_pyarrow ())
7473 result_rows += batch .num_rows
7574
7675 maximum_result_rows = bigframes .options .compute .maximum_result_rows
@@ -162,8 +161,10 @@ def batches(self) -> ResultsIterator:
162161
163162class LocalExecuteResult (ExecuteResult ):
164163 def __init__ (self , data : pa .Table , bf_schema : bigframes .core .schema .ArraySchema ):
165- self ._data = data
166- self ._schema = bf_schema
164+ self ._data = local_data .ManagedArrowTable (
165+ data .cast (bf_schema .to_pyarrow ()), bf_schema
166+ )
167+ self ._data .validate ()
167168
168169 @property
169170 def query_job (self ) -> Optional [bigquery .QueryJob ]:
@@ -175,14 +176,14 @@ def total_bytes_processed(self) -> Optional[int]:
175176
176177 @property
177178 def schema (self ) -> bigframes .core .schema .ArraySchema :
178- return self ._schema
179+ return self ._data . schema
179180
180181 def batches (self ) -> ResultsIterator :
181182 return ResultsIterator (
182- iter (self ._data .to_batches () ),
183+ iter (self ._data .to_arrow ()[ 1 ] ),
183184 self .schema ,
184- self ._data .num_rows ,
185- self ._data .nbytes ,
185+ self ._data .metadata . row_count ,
186+ self ._data .metadata . total_bytes ,
186187 )
187188
188189
0 commit comments