Skip to content

Commit 238dd78

Browse files
ai: apply changes for #1007 (2 review threads)
Addresses: - #4419356673 at src/databricks/sql/result_set.py:382 - #4419356679 at src/databricks/sql/backend/sea/result_set.py:178 Signed-off-by: peco-engineer-bot[bot] <peco-engineer-bot[bot]@users.noreply.github.com>
1 parent cfbc6f6 commit 238dd78

3 files changed

Lines changed: 14 additions & 12 deletions

File tree

‎src/databricks/sql/backend/sea/utils/filters.py‎

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,9 @@ def _filter_arrow_result_set(
174174
raise ValueError(f"Column index {column_index} is out of bounds")
175175
column_name = result_set.description[column_index][0]
176176

177-
# Get all remaining rows as Arrow table and filter it
178-
arrow_table = result_set.results.remaining_rows()
177+
# Get all remaining rows as Arrow table and filter it. Go through
178+
# fetchall_arrow() so any rows buffered by fetchone() are included.
179+
arrow_table = result_set.fetchall_arrow()
179180
filtered_table = ResultSetFilter._filter_arrow_table(
180181
arrow_table, column_name, allowed_values, case_sensitive
181182
)
@@ -220,8 +221,9 @@ def _filter_json_result_set(
220221
if column_index >= len(result_set.description):
221222
raise ValueError(f"Column index {column_index} is out of bounds")
222223

223-
# Extract rows
224-
all_rows = result_set.results.remaining_rows()
224+
# Extract rows. Go through fetchall_json() so any rows buffered by
225+
# fetchone() are included.
226+
all_rows = result_set.fetchall_json()
225227

226228
# Convert allowed values if case-insensitive
227229
if not case_sensitive:

‎src/databricks/sql/result_set.py‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -373,10 +373,7 @@ def _fetchone_buffered(
373373
"""
374374
if self._row_buffer_count() == 0:
375375
cap = max(min(self.arraysize, _FETCHONE_BUFFER_MAX_ROWS), 1)
376-
target = getattr(
377-
self, "_fetchone_refill_rows", _FETCHONE_BUFFER_INITIAL_ROWS
378-
)
379-
size = max(min(target, cap), 1)
376+
size = max(min(self._fetchone_refill_rows, cap), 1)
380377
self._fetchone_refill_rows = min(
381378
size * _FETCHONE_BUFFER_GROWTH_FACTOR, _FETCHONE_BUFFER_MAX_ROWS
382379
)
@@ -396,12 +393,15 @@ def _fetchone_buffered(
396393
# Warn once per result set; later failing batches (e.g. a column
397394
# type that fails in every row) log at DEBUG to avoid a WARNING
398395
# per refill for callers that catch and keep fetching.
399-
warned = getattr(self, "_fetchone_conversion_warned", False)
400396
fallback = self._convert_rows_individually(
401397
raw,
402398
convert,
403399
batch_error,
404-
log_level=logging.DEBUG if warned else logging.WARNING,
400+
log_level=(
401+
logging.DEBUG
402+
if self._fetchone_conversion_warned
403+
else logging.WARNING
404+
),
405405
)
406406
if fallback is None:
407407
raise

‎tests/unit/test_filters.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ def setUp(self):
1616
# Create a mock SeaResultSet
1717
self.mock_sea_result_set = MagicMock()
1818

19-
# Set up the remaining_rows method on the results attribute
19+
# Set up fetchall_json, which the filters use to read all remaining rows
2020
self.mock_sea_result_set.results = MagicMock()
21-
self.mock_sea_result_set.results.remaining_rows.return_value = [
21+
self.mock_sea_result_set.fetchall_json.return_value = [
2222
["catalog1", "schema1", "table1", "owner1", "2023-01-01", "TABLE", ""],
2323
["catalog1", "schema1", "table2", "owner1", "2023-01-01", "VIEW", ""],
2424
[

0 commit comments

Comments
 (0)