FEAT: Support for Complex Data Type- sql_variant by gargsaumya · Pull Request #446 · microsoft/mssql-python

@gargsaumya

- Add SQL_VARIANT constant (-150) to constants.py
- Implement preprocessing approach in ddbc_bindings.cpp:
  * MapVariantCTypeToSQLType helper maps C types to SQL types
  * SQLGetData_wrap detects sql_variant and maps to base type
  * Handles old-style date/time C codes (9, 10, 11)
  * Handles SQL Server TIME type (code 16384)
  * Routes to existing type conversion logic (no duplication)
- Move LOB detection before calculateRowSize in FetchAll_wrap
- Add comprehensive test suite (25 tests):
  * Tests all SQL base types: INT, BIGINT, SMALLINT, TINYINT, REAL, FLOAT, DECIMAL, NUMERIC, BIT, VARCHAR, NVARCHAR, DATE, TIME, DATETIME, DATETIME2, VARBINARY, UNIQUEIDENTIFIER, NULL
  * Tests all fetch methods: fetchone(), fetchmany(), fetchall()
  * Tests implicit vs explicit type casting
  * All tests passing

Type mappings:
- Integer types → Python int
- Float types → Python float
- Exact numeric → Python Decimal
- Character types → Python str
- Date/time types → Python date/time/datetime objects
- Binary → Python bytes
- GUID → Python str/UUID
- NULL → Python None