Skip to content

Conversation

@jahnvi480
Copy link
Contributor

Work Item / Issue Reference

GitHub Issue: #258


Summary

This pull request improves the accuracy and consistency of the rowcount attribute in the mssql_python cursor implementation, ensuring it reflects the correct number of rows affected or fetched after various operations. It also introduces comprehensive tests to verify rowcount behavior for different fetch methods and scenarios, including edge cases and specific data types.

Enhancements to rowcount logic:

  • Updated fetchone, fetchmany, and fetchall methods in mssql_python/cursor.py to set rowcount correctly after each fetch operation, including for empty result sets. This ensures rowcount is 0 for empty results, and matches the total number of rows fetched for non-empty results.

Expanded test coverage for rowcount:

  • Added new tests in tests/test_004_cursor.py to verify rowcount updates after fetchone, fetchmany, and fetchall, and to check behavior for inserts, selects, and edge cases such as empty result sets and tables with GUID columns. These tests cover typical usage patterns as well as specific scenarios reported in GitHub issues.

Copilot AI review requested due to automatic review settings September 29, 2025 14:14
@github-actions github-actions bot added the pr-size: medium Moderate update size label Sep 29, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This pull request fixes the rowcount attribute in the cursor implementation to accurately reflect the number of rows fetched during various operations. The fix addresses GitHub Issue #258 by ensuring rowcount is properly updated after fetchone, fetchmany, and fetchall operations.

  • Updates cursor fetch methods to set rowcount to the cumulative number of rows fetched
  • Handles edge cases like empty result sets by setting rowcount to 0
  • Adds comprehensive test coverage for various fetch scenarios and data types

Reviewed Changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
mssql_python/cursor.py Updates fetchone, fetchmany, and fetchall methods to properly maintain the rowcount attribute
tests/test_004_cursor.py Adds three new test functions covering rowcount behavior for different fetch operations and edge cases

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@github-actions
Copy link

github-actions bot commented Sep 29, 2025

📊 Code Coverage Report

🔥 Diff Coverage

100%


🎯 Overall Coverage

74%


📈 Total Lines Covered: 4153 out of 5572
📁 Project: mssql-python


Diff Coverage

Diff: main...HEAD, staged and unstaged changes

  • mssql_python/cursor.py (100%)

Summary

  • Total: 9 lines
  • Missing: 0 lines
  • Coverage: 100%

📋 Files Needing Attention

📉 Files with overall lowest coverage (click to expand)
mssql_python.pybind.connection.connection.cpp: 67.6%
mssql_python.ddbc_bindings.py: 68.5%
mssql_python.pybind.ddbc_bindings.cpp: 69.4%
mssql_python.pybind.connection.connection_pool.cpp: 78.9%
mssql_python.cursor.py: 79.6%
mssql_python.connection.py: 81.7%
mssql_python.helpers.py: 84.7%
mssql_python.auth.py: 85.3%
mssql_python.type.py: 86.8%
mssql_python.pooling.py: 88.8%

🔗 Quick Links

⚙️ Build Summary 📋 Coverage Details

View Azure DevOps Build

Browse Full Coverage Report

Copy link
Contributor

@sumitmsft sumitmsft left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Approving PR

@jahnvi480 jahnvi480 merged commit 9fcfe87 into main Sep 30, 2025
21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-size: medium Moderate update size

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants