Skip to content

Conversation

@jahnvi480
Copy link
Contributor

@jahnvi480 jahnvi480 commented Aug 21, 2025

Work Item / Issue Reference

AB#34934


Summary

This pull request adds support for retrieving ODBC data type information via a new getTypeInfo method on the cursor object, exposing the underlying SQLGetTypeInfo API. It includes the necessary C++/Python bindings, error handling, and comprehensive test coverage to ensure correct behavior for different data types and usage scenarios.

Feature: Data type information retrieval

  • Added a new getTypeInfo method to the cursor class in mssql_python/cursor.py, allowing users to retrieve metadata about supported SQL data types via the ODBC SQLGetTypeInfo API. The method supports querying all types or a specific type and returns results as a list of Row objects with a well-defined column map.

Bindings and driver integration

  • Introduced a new function pointer type for SQLGetTypeInfo (SQLGetTypeInfoFunc) and integrated it into the driver loading and verification process in mssql_python/pybind/ddbc_bindings.h and mssql_python/pybind/ddbc_bindings.cpp. This ensures the function pointer is loaded and checked along with other ODBC APIs.
  • Added a wrapper function and Python binding for SQLGetTypeInfo, exposing it as DDBCSQLGetTypeInfo in the Python module.

Testing

  • Added a comprehensive suite of tests in tests/test_004_cursor.py to validate the new getTypeInfo method. Tests cover retrieving all types, specific types, result structure, numeric and datetime types, binary types, multiple successive calls, and repeated identical queries for consistency and efficiency.

@github-actions github-actions bot added the pr-size: medium Moderate update size label Aug 21, 2025
@github-actions github-actions bot added pr-size: medium Moderate update size and removed pr-size: medium Moderate update size labels Sep 12, 2025
### Work Item / Issue Reference  
<!-- 
IMPORTANT: Please follow the PR template guidelines below.
For mssql-python maintainers: Insert your ADO Work Item ID below (e.g.
AB#37452)
For external contributors: Insert Github Issue number below (e.g. #149)
Only one reference is required - either GitHub issue OR ADO Work Item.
-->

<!-- mssql-python maintainers: ADO Work Item -->
>
[AB#34933](https://sqlclientdrivers.visualstudio.com/c6d89619-62de-46a0-8b46-70b92a84d85e/_workitems/edit/34933)

-------------------------------------------------------------------
### Summary   
This pull request adds support for retrieving metadata about stored
procedures in SQL Server via the Python driver, including both temporary
and permanent procedures. It introduces a new `procedures()` method on
the `cursor` object, updates the C++ pybind layer to expose the ODBC
`SQLProcedures` API, and includes a comprehensive suite of tests to
ensure correct behavior across various scenarios.

**New feature: Procedures metadata retrieval**
* Added `procedures()` method to the `cursor` class in
`mssql_python/cursor.py` to fetch information about stored procedures,
handling both temporary (using direct queries) and permanent procedures
(using the ODBC API). The method supports filtering by procedure name,
catalog, and schema, and returns detailed metadata for each procedure.

**ODBC bindings and pybind integration**
* Introduced new function pointer type `SQLProceduresFunc` and related
extern variable to the ODBC bindings header and implementation files
(`mssql_python/pybind/ddbc_bindings.h`,
`mssql_python/pybind/ddbc_bindings.cpp`).
* Loaded the `SQLProceduresW` function pointer during driver
initialization and included it in the required function check.
* Implemented a wrapper function `SQLProcedures_wrap` and exposed it to
Python as `DDBCSQLProcedures` for cross-platform use.
**Testing and validation**
* Added a comprehensive set of tests to `tests/test_004_cursor.py` to
verify the new `procedures()` functionality, including filtering by
name, schema, and catalog, handling of input/output parameters, result
set reporting, and correct behavior with non-existent procedures.

---------

Co-authored-by: Jahnvi Thakkar <[email protected]>
@github-actions github-actions bot added pr-size: large Substantial code update and removed pr-size: medium Moderate update size labels Sep 15, 2025
@jahnvi480 jahnvi480 merged commit 997ded6 into jahnvi/cursor_setinputsizes Sep 15, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-size: large Substantial code update

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants