Skip to content

Commit 7b51c6e

Browse files
authored
[PECOBLR-361] convert column table to arrow if arrow present (#551)
1 parent 3463b12 commit 7b51c6e

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/databricks/sql/client.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1415,9 +1415,22 @@ def fetchall_arrow(self) -> "pyarrow.Table":
14151415
while not self.has_been_closed_server_side and self.has_more_rows:
14161416
self._fill_results_buffer()
14171417
partial_results = self.results.remaining_rows()
1418-
results = pyarrow.concat_tables([results, partial_results])
1418+
if isinstance(results, ColumnTable) and isinstance(
1419+
partial_results, ColumnTable
1420+
):
1421+
results = self.merge_columnar(results, partial_results)
1422+
else:
1423+
results = pyarrow.concat_tables([results, partial_results])
14191424
self._next_row_index += partial_results.num_rows
14201425

1426+
# If PyArrow is installed and we have a ColumnTable result, convert it to PyArrow Table
1427+
# Valid only for metadata commands result set
1428+
if isinstance(results, ColumnTable) and pyarrow:
1429+
data = {
1430+
name: col
1431+
for name, col in zip(results.column_names, results.column_table)
1432+
}
1433+
return pyarrow.Table.from_pydict(data)
14211434
return results
14221435

14231436
def fetchall_columnar(self):

tests/e2e/test_driver.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -801,6 +801,13 @@ def test_decimal_not_returned_as_strings_arrow(self):
801801
decimal_type = arrow_df.field(0).type
802802
assert pyarrow.types.is_decimal(decimal_type)
803803

804+
@skipUnless(pysql_supports_arrow(), "arrow test needs arrow support")
805+
def test_catalogs_returns_arrow_table(self):
806+
with self.cursor() as cursor:
807+
cursor.catalogs()
808+
results = cursor.fetchall_arrow()
809+
assert isinstance(results, pyarrow.Table)
810+
804811
def test_close_connection_closes_cursors(self):
805812

806813
from databricks.sql.thrift_api.TCLIService import ttypes

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy