database/sql — validation proof
Go’s own database/sql test suite, converted to C# by go2cs, built against the converted standard
library, run under the Go-semantics test host, and compared verdict for verdict against a clean
go test -json baseline of the same sources. This page is generated by the converter from that
comparison — it is the evidence behind the database/sql row in
Validated Test Packages.
Validated 2026-09-23 · converter f95f88866
140 matched · 2 disclosed — Go 1.24.13, windows/amd64, converted package
src/core/database/sql.
Measured at Release (tiered JIT off), oracle go version go1.24.13 windows/amd64.
Verdicts
| Test | go test |
go2cs |
|---|---|---|
TestBadDriver |
pass | pass |
TestBogusPreboundParameters |
pass | pass |
TestCloseConnBeforeStmts |
pass | pass |
TestCloseStmtBeforeRows |
pass | pass |
TestConcurrency |
pass | pass |
TestConcurrency/Exec |
pass | pass |
TestConcurrency/Query |
pass | pass |
TestConcurrency/Random |
pass | pass |
TestConcurrency/StmtExec |
pass | pass |
TestConcurrency/StmtQuery |
pass | pass |
TestConcurrency/TxExec |
pass | pass |
TestConcurrency/TxQuery |
pass | pass |
TestConcurrency/TxStmtExec |
pass | pass |
TestConcurrency/TxStmtQuery |
pass | pass |
TestConnExpiresFreshOutOfPool |
pass | pass |
TestConnExpiresFreshOutOfPool/expired=false,badReset=false |
pass | pass |
TestConnExpiresFreshOutOfPool/expired=false,badReset=true |
pass | pass |
TestConnExpiresFreshOutOfPool/expired=true,badReset=false |
pass | pass |
TestConnIsValid |
pass | pass |
TestConnMaxLifetime |
pass | pass |
TestConnQuery |
pass | pass |
TestConnRaw |
pass | pass |
TestConnRequestSet |
pass | pass |
TestConnRequestSet/add-delete |
pass | pass |
TestConnRequestSet/close-delete |
pass | pass |
TestConnRequestSet/get-take-many |
pass | pass |
TestConnRequestSet/take-before-delete |
pass | pass |
TestConnTx |
pass | pass |
TestConnectionLeak |
pass | pass |
TestContextCancelBetweenNextAndErr |
pass | pass |
TestContextCancelDuringRawBytesScan |
pass | pass |
TestContextCancelDuringRawBytesScan/bottom |
pass | pass |
TestContextCancelDuringRawBytesScan/go |
pass | pass |
TestContextCancelDuringRawBytesScan/nocancel |
pass | pass |
TestContextCancelDuringRawBytesScan/top |
pass | pass |
TestContextCancelDuringScan |
pass | pass |
TestConversions |
pass | pass |
TestCursorFake |
pass | pass |
TestDecimal |
pass | pass |
TestDecimal/bad-form |
pass | pass |
TestDecimal/diff |
pass | pass |
TestDecimal/same |
pass | pass |
TestDriverArgs |
pass | pass |
TestDriverArgsWrapsErrors |
pass | pass |
TestDriverArgsWrapsErrors/exec |
pass | pass |
TestDriverArgsWrapsErrors/query |
pass | pass |
TestDriverPanic |
pass | pass |
TestDrivers |
pass | pass |
TestErrBadConnReconnect |
pass | pass |
TestExec |
pass | pass |
TestGenericNullStringParam |
pass | pass |
TestGrabConnAllocs |
pass | fail (disclosed) |
TestInvalidNilValues |
pass | pass |
TestInvalidNilValues/int |
pass | pass |
TestInvalidNilValues/time.Time |
pass | pass |
TestIssue18429 |
pass | pass |
TestIssue18719 |
pass | pass |
TestIssue20160 |
pass | pass |
TestIssue20575 |
pass | pass |
TestIssue20622 |
pass | pass |
TestIssue20647 |
pass | pass |
TestIssue2542Deadlock |
pass | pass |
TestIssue4902 |
pass | pass |
TestIssue6081 |
pass | pass |
TestIssue6651 |
pass | pass |
TestIssue69728 |
pass | pass |
TestIssue69837 |
pass | pass |
TestManyErrBadConn |
pass | pass |
TestMaxIdleConns |
pass | pass |
TestMaxIdleTime |
pass | pass |
TestMaxIdleTime/1h0m0s |
pass | pass |
TestMaxIdleTime/1ms |
pass | pass |
TestMaxIdleTime/1ms#01 |
pass | pass |
TestMaxOpenConns |
pass | pass |
TestMaxOpenConnsOnBusy |
pass | pass |
TestMultiResultSetQuery |
pass | pass |
TestNamedValueChecker |
pass | pass |
TestNamedValueCheckerSkip |
pass | pass |
TestNilErrorAfterClose |
pass | pass |
TestNullBoolParam |
pass | pass |
TestNullByteParam |
pass | pass |
TestNullByteSlice |
pass | pass |
TestNullFloat64Param |
pass | pass |
TestNullInt16Param |
pass | pass |
TestNullInt32Param |
pass | pass |
TestNullInt64Param |
pass | pass |
TestNullString |
pass | pass |
TestNullStringParam |
pass | pass |
TestNullTimeParam |
pass | pass |
TestOpenConnector |
pass | pass |
TestOpenDB |
pass | pass |
TestParentStmtOutlivesTxStmt |
pass | pass |
TestPendingConnsAfterErr |
pass | pass |
TestPing |
pass | pass |
TestPointerParamsAndScans |
pass | pass |
TestPoolExhaustOnCancel |
pass | pass |
TestQuery |
pass | pass |
TestQueryContext |
pass | pass |
TestQueryContextWait |
pass | pass |
TestQueryExecContextOnly |
pass | pass |
TestQueryNamedArg |
pass | pass |
TestQueryRow |
pass | pass |
TestQueryRowClosingStmt |
pass | pass |
TestQueryRowNilScanDest |
pass | pass |
TestRawBytesAllocs |
pass | fail (disclosed) |
TestRawBytesReuse |
pass | pass |
TestRowErr |
pass | pass |
TestRowsCloseError |
pass | pass |
TestRowsCloseOrder |
pass | pass |
TestRowsColumnTypes |
pass | pass |
TestRowsColumns |
pass | pass |
TestRowsImplicitClose |
pass | pass |
TestRowsScanProperlyWrapsErrors |
pass | pass |
TestSimultaneousQueries |
pass | pass |
TestSingleOpenConn |
pass | pass |
TestStatementClose |
pass | pass |
TestStatementErrorAfterClose |
pass | pass |
TestStatementQueryRow |
pass | pass |
TestStatementQueryRowConcurrent |
pass | pass |
TestStats |
pass | pass |
TestStatsMaxIdleClosedTen |
pass | pass |
TestStatsMaxIdleClosedZero |
pass | pass |
TestStmtCloseDeps |
pass | pass |
TestStmtCloseOrder |
pass | pass |
TestTxCannotCommitAfterRollback |
pass | pass |
TestTxContextWait |
pass | pass |
TestTxContextWaitNoDiscard |
pass | pass |
TestTxEndBadConn |
pass | pass |
TestTxErrBadConn |
pass | pass |
TestTxPrepare |
pass | pass |
TestTxQuery |
pass | pass |
TestTxQueryInvalid |
pass | pass |
TestTxRollbackCommitErr |
pass | pass |
TestTxStmt |
pass | pass |
TestTxStmtClosedRePrepares |
pass | pass |
TestTxStmtDeadlock |
pass | pass |
TestTxStmtFromTxStmtRePrepares |
pass | pass |
TestTxStmtPreparedOnce |
pass | pass |
TestTypedString |
pass | pass |
TestUnsupportedOptions |
pass | pass |
TestUserDefinedBytes |
pass | pass |
TestValueConverters |
pass | pass |
Disclosed divergences
A disclosed divergence is a specific Go assertion this conversion does not satisfy — not
a skipped test and not a tolerance. Each one is pinned by exact failure signature in the package’s
hand-owned go2cs_test_disclosures.json;
a disclosed test that fails any other way is still a hard mismatch.
The Class column says which kind each one is: a deferred entry is an assertion the managed
CLR can meet, pinned against the named plan that will retire it; every other class is one it
provably cannot satisfy.
| Test | Class | Pinned reason |
|---|---|---|
TestGrabConnAllocs |
alloc-count-semantics |
want-zero AllocsPerRun assert: four golib-counted objects per run where Go allocates none — the interior field pointers the emission mints to reach c.done, c.releaseConnOnce and c.closemu (Go’s &c.field is an address, not an allocation) plus the display class the sync.Once closure needs on every call, even though the cached releaseConnCache method value it installs is built once. RELABEL 2026-09-23 (C1, from the i7 reading run at bb54ff0920, Release with tiering off; claude/coord-h10-readings ac9f8251ee): alloc-profile -> alloc-count-semantics. The run’s own unit note is BYTES – 96 B/run, 96,000 bytes over 1,000 runs, golib’s counter charging none of it (the test printed Conn.grabConn allocated 96 objects; want 0) – so at this tree golib charges NONE of the objects this reason names; which change moved the interior field pointers off golib’s charged sites is not attributed here. What remains is outside the counter, so no object count exists to compare with the want: the ladder’s incomparable-unit arm. Nothing to retire and no plan. The relabel census’s RULING OWED for this entry (a deferred-with-floor proposal) is superseded by the unit. |
TestRawBytesAllocs |
deferred |
want-zero AllocsPerRun assert: fifteen golib-counted objects per run where Go allocates none — each convertAssign round materializes the managed backing for the formatted value and boxes the any-typed source, where Go’s escape analysis proves the temporaries non-escaping and appends into the pre-sized RawBytes in place. RELABEL 2026-09-23 (C1, as ruled at ledger 2026-09-23 03:37 O5): alloc-profile -> deferred. 28 per run = two per call over fourteen cases. The census’s floor (any-boxing) is withdrawn: boxing is uncounted. Between b6026b9246 (where 15 was recorded) and bb54ff0920 – 3,134 commits (1,152 first-parent), counted by COORD on a full clone, the go1.24.13 reconvert among them; C1’s earlier 734 was an artifact of a SHALLOW clone and is withdrawn – this path’s emission changed at formatBits’ append form (itoa.cs) and the time.Time arm (convert.cs:326); neither is shown to be the cause. |
Excluded declarations
Declarations filtered from both sides of the comparison, and therefore not claimed above:
Benchmark, Fuzz and Example declarations the converted host does not execute, plus any
test requiring a capability the managed runtime does not provide — a testing member the host
has not implemented, or a platform behavior it provably cannot reproduce. Each is named with
the capability it needs.
- BenchmarkConcurrentDBExec (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkConcurrentRandom (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkConcurrentStmtExec (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkConcurrentStmtQuery (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkConcurrentTxExec (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkConcurrentTxQuery (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkConcurrentTxStmtExec (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkConcurrentTxStmtQuery (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkConnRequestSet (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkGrabConn (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkManyConcurrentQueries (benchmark): benchmark execution is deferred to Phase 4D
- ExampleConn_ExecContext (example): example execution is deferred to Phase 4D
- ExampleDB_BeginTx (example): example execution is deferred to Phase 4D
- ExampleDB_ExecContext (example): example execution is deferred to Phase 4D
- ExampleDB_PingContext (example): example execution is deferred to Phase 4D
- ExampleDB_Prepare (example): example execution is deferred to Phase 4D
- ExampleDB_QueryContext (example): example execution is deferred to Phase 4D
- ExampleDB_QueryRowContext (example): example execution is deferred to Phase 4D
- ExampleDB_Query_multipleResultSets (example): example execution is deferred to Phase 4D
- ExampleRows (example): example execution is deferred to Phase 4D
- ExampleStmt (example): example execution is deferred to Phase 4D
- ExampleStmt_QueryRowContext (example): example execution is deferred to Phase 4D
- ExampleTx_ExecContext (example): example execution is deferred to Phase 4D
- ExampleTx_Prepare (example): example execution is deferred to Phase 4D
- ExampleTx_Rollback (example): example execution is deferred to Phase 4D
- Example_openDBCLI (example): example execution is deferred to Phase 4D
- Example_openDBService (example): example execution is deferred to Phase 4D