@@ -47,6 +47,10 @@ def next_n_rows(self, num_rows: int):
4747def remaining_rows (self ):
4848pass
4949
50+ @abstractmethod
51+ def close (self ):
52+ pass
53+
5054
5155class ResultSetQueueFactory (ABC ):
5256@staticmethod
@@ -159,6 +163,9 @@ def remaining_rows(self):
159163self .cur_row_index += slice .num_rows
160164return slice
161165
166+ def close (self ):
167+ return
168+
162169
163170class ArrowQueue (ResultSetQueue ):
164171def __init__ (
@@ -195,6 +202,9 @@ def remaining_rows(self) -> "pyarrow.Table":
195202self .cur_row_index += slice .num_rows
196203return slice
197204
205+ def close (self ):
206+ return
207+
198208
199209class CloudFetchQueue (ResultSetQueue ):
200210def __init__ (
@@ -347,6 +357,9 @@ def _create_empty_table(self) -> "pyarrow.Table":
347357# Create a 0-row table with just the schema bytes
348358return create_arrow_table_from_arrow_file (self .schema_bytes ,self .description )
349359
360+ def close (self ):
361+ self .download_manager ._shutdown_manager ()
362+
350363
351364ExecuteResponse = namedtuple (
352365"ExecuteResponse" ,