Repository navigation
Conversation
The RowId and SQLXML stubs returned null bytes and null text, so the B-2 rows bound null. Return the rowid-1 bytes and the <a/> text. Read the NClob wrapper directly so the B-5 row proves the wrapper round trip.
Four selected xerial methods assert behavior that Appendix B replaces. Exclude them from the libSQL run without editing the vendored tree. The xerial-control profile still runs them.
Give every Appendix B row a status, a reason, and the test that proves it. Record the expression fallback as an exception and the policy in AGENTS.md. Add the verification commands to README.md.
|
Verdict: CLEAN at 234186d. Base Ten lanes PASS. The full gate and the control profile were run by the root, not taken from the owner's report.
The control profile runs the four quarantined xerial methods and all four pass against the reference driver. The quarantine is inactive there, so the exclusion is confined to the libSQL run. The three integration fixtures are fixed and the full build is green. Perf is PASS. Clean CI is fully green on all six checks. No review-bot comments to triage. Residual risk, recorded rather than hidden. The quarantine is method-level, so it drops the other assertions inside STACK-READY. This is the tip of the chain. PR-0 through PR-6 are ready for the operator to land bottom-up. |
The B-5 reader returned the NClob wrapper while the expectation checked only the type, so the stored text was no longer verified. Read the wrapper, assert its type, and compare getSubString(1, length) with the source text in B-2, B-4, and B-5.
The quarantine table names the conflicting assertion for each method but not the non-conflicting checks the method-level exclusion also removes. List those checks per method and correct the count note: 270 excludes the four quarantines.
The profile test only exercises getObject, getArray, and getRef on declared columns, so it cannot prove the B-2, B-4, or B-5 setter rows. Cite the integration rows and the setObject rejection test instead, and note that the timezone types belong to B-5 and B-6 rather than B-1 or B-3.
|
Verdict: CLEAN at 0861960. This supersedes the verdict at The fix round did three things. The B-5 NCLOB row now reads the Ten lanes PASS, rerun by the root at the new head.
The full gate is Perf is PASS. The head build is 63.2 seconds against 62.7 at trunk, inside 10 percent. Residual risk, now documented. The quarantine is method-level and drops the non-conflicting checks named in STACK-READY. This is the corrected tip of the chain. |
## Why The driver mapped result values by storage class, so the declared type did not control metadata or `getObject`, and `setObject` ignored the target type. JDBC 4.3 Appendix B is the oracle. Seven stacked pull requests implement it. The stack cannot land link by link because the `main` ruleset requires the full build green at every head, and the Appendix B oracle is red until the last link. This PR lands the verified tip as one commit. ## What changed - Add the Appendix B oracle suite and the vendor table, then resolve one JDBC type per declared column for metadata and `getObject`. - Honor the `setObject` target type, add the missing getters and LOB wrappers, and support the offset temporal types. - Mark `ARRAY`, `STRUCT`, `REF`, `JAVA_OBJECT`, and `DISTINCT` N/A and reject unlisted Table B-6 conversions. - Publish the compliance profile, quarantine the four xerial tests that conflict with the spec, and record the policy. ## Scope The seven stacked PRs are #239, #240, #241, #242, #243, #244, and #245. No unrelated changes. `vendor/JDBC4-TYPE-MAPPING.md` is the oracle. ## Tradeoffs - The five unrepresentable types throw instead of emulating them. - The conformance quarantine is method-level. The lost checks are named in `libsql-conformance/README.md`. - An expression column with no `decltype` keeps the storage fallback, documented as a profile exception. ## Blast Radius Metadata and `getObject` now follow the declared type, so a `BIGINT` holding 42 returns `Long`, and an unlisted getter conversion throws. The default build was red from #239 through #245 by design and is green at this tip. ## Verification - `clean verify` at `0861960`: 2,006 tests, 0 failures, 7 skipped, about 63 seconds. - Appendix B unit 1,050 of 1,050, integration 148 of 148, conformance 270 of 270 with 7 skipped. - Clean clone at the same SHA: unit 1,510 of 1,510, integration 148 of 148. - Each link has a verdict and ten live lanes. The verdict comments are on #239 through #245.
Why
The default build has been red by design since PR-0 because the Appendix B oracle landed before the driver changes. PR-6 is the last step. It fixes the three integration fixture defects, reconciles the xerial conformance suite, and publishes the compliance profile that names every Appendix B row.
What changed
Jdbc4AppendixBTypeMappingITfixtures. The RowId fixture now returns the bytes ofrowid-1, the SQLXML fixture returns<a/>, and the B-5 NClob reader returns the wrapper.XerialQuarantine, a JUnitPostDiscoveryFilterthat excludes four selected xerial methods whose expectations Appendix B replaces. The vendored tree is untouched, and thexerial-controlprofile still runs them.docs/jdbc-appendix-b-compliance.mdwith one row for each of the 180 Appendix B rows, a status, a reason, and the proving test.README.md.AGENTS.md.Scope
Only
libsql-conformance/,docs/,README.md, and the three integration fixtures change. No production code changes.upstream-xerial_sqlite-jdbcand.audit/are untouched.Tradeoffs
RSMetaDataTest#columnTypesalso asserts other metadata that still passes, so excluding the method loses that passing coverage. The Appendix B suite covers the same declared-type metadata.decltype. The storage-class fallback stays permissive and is recorded as an exception.Blast Radius
./mvnw clean verifyis green from a clean checkout for the first time since PR-0.StatementTest#bytesTest,RSMetaDataTest#columnTypes,RSMetaDataTest#testGetColumnClassName, andPrepStmtTest#getObject.Verification
./mvnw -q -pl libsql-jdbc testexited 0. The clean verify run reports 1510libsql-jdbctests with 0 failures../mvnw -q spotless:checkexited 0../mvnw -q -DskipTests install -pl libsql-hrana-codec,libsql-client,libsql-jdbcexited 0.Jdbc4AppendixBTypeMappingITthen ran 148 tests with 0 failures and 0 errors.DOCKER_CONFIG="$PWD/libsql-conformance/src/test/docker-config" ./mvnw clean verifyended withBUILD SUCCESSand 2006 tests across the reactor with 7 skipped.Head SHA:
234186d45c68cd8932006594b4b706f57303214c