Skip to content

Commit ee37dd3

Browse files
refactor: remove unreachable progress guard in RowsResponse.decode_body
The `if offset == prev_offset` check was added to prevent infinite loops for zero-column results, but the zero-column handling was later extracted into its own early-return branch. Inside the while loop, column_count >= 1 is guaranteed, and decode_row_header always advances by at least 8 bytes, so offset always increases and the guard is unreachable dead code. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent a551dea commit ee37dd3

1 file changed

Lines changed: 0 additions & 7 deletions

File tree

src/dqlitewire/messages/responses.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -366,8 +366,6 @@ def decode_body(
366366
)
367367

368368
while offset < len(data):
369-
prev_offset = offset
370-
371369
# Read row header; markers are detected byte-by-byte inside
372370
result, consumed = decode_row_header(data[offset:], column_count)
373371
offset += consumed
@@ -404,11 +402,6 @@ def decode_body(
404402
if len(rows) >= max_rows:
405403
raise DecodeError(f"Row count {len(rows)} reached maximum {max_rows}")
406404

407-
if offset == prev_offset:
408-
raise DecodeError(
409-
"No progress in row decoding (possible zero-column result with malformed data)"
410-
)
411-
412405
raise DecodeError(
413406
f"RowsResponse body exhausted without end marker "
414407
f"(decoded {len(rows)} rows, consumed {offset} of {len(data)} bytes)"

0 commit comments

Comments
 (0)