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]