CurtHagenlocher opened a new pull request, #4318:
URL: https://github.com/apache/arrow-adbc/pull/4318

   Wires up exporter callbacks that were either missing or unreachable:
   
     - `StatementSetOption` (1.0.0 gap): a managed driver behind the exporter 
never received `SetOption()` calls. The importer always issued them via 
`AdbcStatement.SetOption` / `BulkIngest`.
     - `StatementExecuteSchema`, `ConnectionCancel`, `StatementCancel` (1.1.0): 
the exporter previously returned `NotImplemented` for any version >= 1.1.0; 
`AdbcDriverInit` now also populates the v1.1.0 fields that map onto existing 
managed APIs and leaves the rest null so the importer's defaults take effect. 
Adds matching `Cancel()` overrides on `ImportedAdbcConnection` / 
`ImportedAdbcStatement` so the C-ABI is actually exercised end-to-end; 
previously the base classes threw `NotImplemented` before ever calling into the 
driver.
     - Extends `ExportedDriverRoundTripTests` with cases for `SetOption`, both 
`Cancel` paths, `ExecuteSchema` (verifies it doesn't run the query), and a 
regression test that proves 1.1.0-only callbacks are gated by the negotiated 
version.
   
   Adds two projects under `csharp/test/AotInterop/`:
   
     - Apache.Arrow.Adbc.TestFixture.Native: net10 library published with 
`PublishAot=true`. Exports `AdbcDriverInit` (UnmanagedCallersOnly) that 
delegates to `CAdbcDriverExporter` wrapped around a deterministic managed 
`FixtureDriver`. The fixture echoes its inputs (SQL query, statement options, 
database/connection options) through the result schema so a consumer can assert 
that each ADBC API call survived the C-ABI hop.
     - Apache.Arrow.Adbc.TestFixture.Tests: net10 xUnit test project that loads 
the AOT-published .dll via `CAdbcDriverImporter.Load(path)` and exercises the 
round-trip. Tests use `SkippableFact` and read the path from 
`ADBC_TEST_AOT_FIXTURE_PATH` so the suite stays green locally when no AOT 
artifact is present.
   
   Together these projects test BOTH halves of csharp/src/Apache.Arrow.Adbc/C: 
the export path inside the AOT'd native lib AND the import path in the managed 
test process. They also serve as an AOT-compatibility canary — trim-unsafe 
reflection or missing exports anywhere in core ADBC will fail this build.
   
   Enables the csharp-aot job in .github/workflows/csharp.yml (previously `if: 
false`, referencing a non-existent project). The job runs on windows-2022 only 
for now because of the MSVC linker dependency for NativeAOT on Windows.
   
   Will look at enabling this on non-Windows platforms in a subsequent PR.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to