FEAT: Adding foreignkey API #195
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Work Item / Issue Reference
Summary
This pull request adds support for retrieving foreign key metadata from SQL Server via ODBC by implementing the
foreignKeysmethod in theCursorclass and wiring up the necessary C++ bindings for the ODBCSQLForeignKeysAPI. The changes ensure that Python users can now fetch foreign key relationships in a way similar to other database drivers.Python interface enhancements:
foreignKeysmethod to theCursorclass incursor.py, allowing users to retrieve foreign key metadata for a specified table or referenced table. The method performs input validation, calls the new C++ binding, and returns results asRowobjects with appropriate metadata.cursor.pyto include theProgrammingErrorexception, used for input validation in the new method.C++ DDBC bindings:
SQLForeignKeysFunc) and corresponding global pointer (SQLForeignKeys_ptr) for the ODBCSQLForeignKeysAPI inddbc_bindings.hand initialized it inddbc_bindings.cpp.SQLForeignKeys_wrapfunction inddbc_bindings.cppto wrap the ODBC call, handling both Windows and Unix platforms, and exposed it to Python asDDBCSQLForeignKeys.SQLForeignKeysand fail if it is not present, ensuring the new functionality is always available.