@@ -244,6 +244,51 @@ def test_pyarrow_limit(catalog: Catalog) -> None:
244244 full_result = table_test_limit .scan (selected_fields = ("idx" ,), limit = 999 ).to_arrow ()
245245 assert len (full_result ) == 10
246246
247+ # test `to_arrow_batch_reader`
248+ limited_result = table_test_limit .scan (selected_fields = ("idx" ,), limit = 1 ).to_arrow_batch_reader ().read_all ()
249+ assert len (limited_result ) == 1
250+
251+ empty_result = table_test_limit .scan (selected_fields = ("idx" ,), limit = 0 ).to_arrow_batch_reader ().read_all ()
252+ assert len (empty_result ) == 0
253+
254+ full_result = table_test_limit .scan (selected_fields = ("idx" ,), limit = 999 ).to_arrow_batch_reader ().read_all ()
255+ assert len (full_result ) == 10
256+
257+ @pytest .mark .integration
258+ @pytest .mark .parametrize ("catalog" , [pytest .lazy_fixture ("session_catalog_hive" ), pytest .lazy_fixture ("session_catalog" )])
259+ def test_pyarrow_limit_with_multiple_files (catalog : Catalog ) -> None :
260+ table_name = "default.test_pyarrow_limit_with_multiple_files"
261+ try :
262+ catalog .drop_table (table_name )
263+ except :
264+ pass
265+ reference_table = catalog .load_table ("default.test_limit" )
266+ data = reference_table .scan ().to_arrow ()
267+ table_test_limit = catalog .create_table (table_name , schema = reference_table .schema ())
268+ table_test_limit .append (data )
269+ table_test_limit .append (data )
270+ assert len (table_test_limit .inspect .files ()) == 2
271+
272+ # # test with multiple files
273+ limited_result = table_test_limit .scan (selected_fields = ("idx" ,), limit = 1 ).to_arrow ()
274+ assert len (limited_result ) == 1
275+
276+ empty_result = table_test_limit .scan (selected_fields = ("idx" ,), limit = 0 ).to_arrow ()
277+ assert len (empty_result ) == 0
278+
279+ full_result = table_test_limit .scan (selected_fields = ("idx" ,), limit = 999 ).to_arrow ()
280+ assert len (full_result ) == 10 * 2
281+
282+ # test `to_arrow_batch_reader`
283+ limited_result = table_test_limit .scan (selected_fields = ("idx" ,), limit = 1 ).to_arrow_batch_reader ().read_all ()
284+ assert len (limited_result ) == 1
285+
286+ empty_result = table_test_limit .scan (selected_fields = ("idx" ,), limit = 0 ).to_arrow_batch_reader ().read_all ()
287+ assert len (empty_result ) == 0
288+
289+ full_result = table_test_limit .scan (selected_fields = ("idx" ,), limit = 999 ).to_arrow_batch_reader ().read_all ()
290+ assert len (full_result ) == 10 * 2
291+
247292
248293@pytest .mark .integration
249294@pytest .mark .filterwarnings ("ignore" )
0 commit comments