Repository navigation
Conversation
The suite encodes Tables B-1 through B-6 from the JDBC 4.3 specification. It fails on the current driver by design and becomes the evidence for the compliance stack.
|
Verdict: CLEAN at 6a9e74a. PR-0 is the stack root and targets Lane results, all PASS. Transcripts live under
Perf is PASS. The unit suite takes 2.6 seconds at the head, and the integration suite takes 4.5 seconds with the container cache warm. Both are far inside the 60 second and 5 minute budgets. CI is red by design. STACK-READY for the operator to land. PR-1 branches from this head. |
|
Verdict correction, evidence only. The perf comparison in the original verdict was not like-for-like. The head run omitted The issue's decision line also said PR-0 would carry one live lane. Execution used ten per-table baseline lanes and a wall-time budget. Your decision was to land the suite as PR-0; the lane definition was the root's call within that grant. Issue 238 now records that. |
## 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 driver claims JDBC 4.3 support, but nothing executes the Appendix B type tables against it. This PR adds that oracle and lands it before any production change, so every later PR can show which rows it turns green.
What changed
Jdbc4AppendixBReadTest, covering Tables B-1, B-3, and B-6 on the read path.Jdbc4AppendixBSetObjectTest, covering Table B-5 on the write path.Jdbc4AppendixBTypeMappingIT, which drives the same tables against the pinned sqld container.vendor/JDBC4-TYPE-MAPPING.md, the specification extract the tests encode.Scope
Test sources and the vendor document only. No driver behavior changes. The suite is expected to fail on arrival.
Tradeoffs
Folding the suite into PR-1 would keep
maingreen until the model lands. A separate PR-0 was chosen so the oracle is reviewed and landed on its own, and so PR-1 does not hide two thousand lines of tests inside a behavior change.Blast Radius
mainturns red when this lands, by design, and stays red until PR-6. The suite adds about ten seconds to the unit build and runs only under theJdbc4AppendixB*filter in CI until PR-6 wires it in.Verification
6a9e74a: 1,077 tests, 518 failures, 0 errors. The failures name Appendix B rows.6a9e74aagainst the pinned sqld image: 146 tests, 63 failures, 0 errors.spotless:checkpasses.