Skip to content

docs(conformance): re-triage the vendored selection and refresh its docs - #159

Merged
magnusp merged 1 commit into
mainfrom
fix/i116-manifest-retriage
Oct 23, 2026
Merged

magnusp merged 1 commit into
mainfrom
fix/i116-manifest-retriage

Conversation

@magnusp

@magnusp magnusp commented Oct 23, 2026

Copy link
Copy Markdown
Owner

Fixes #116
Closes #77
Closes #96

What changed

  • Re-triaged every rejected class against the current driver. Four classes changed state.
  • TypeMapTest keeps its upstream rejection, but the reason is now true: fix(jdbc): reject unsupported type maps and report holdability #95 rejects connection type maps with SQLFeatureNotSupportedException because java.sql makes them optional, and xerial stores a map it never applies. The control run executes the same vendored test as the libSQL run, so a single assertion cannot pass on both. The stale "accepts but ignores" text is gone (Manifest rationale for TypeMapTest removal is stale after #48 #96).
  • DBMetaDataTest, StatementTest, and PrepStmtTest still fail against the current driver. The plan's triage rule says a real driver gap becomes a new issue and an exclusion, never a protocol divergence, and the plan's Files block is manifest plus docs only. They stay upstream with the new issues as their reason:
  • Regenerated UPSTREAM.md with the vendoring tool, so its Paths row now matches the vendored tree (UPSTREAM.md Paths still lists removed TypeMapTest.java #77). Added a Divergences section that names the four files with recorded edits.
  • Refreshed the stale QueryTest rationale found in the same triage. It imports sqlite-jdbc's SQLiteConfig and FastDateFormat classes.
  • Updated the JDBC driver production readiness #54 tracker: all 25 sub-issue boxes are checked, and the status note records the four re-triaged classes.

No new divergence line is added. The four existing ones remain:

Contract

Hrana 3 is the source of truth for transport, values, metadata, batching, transactions, and error reporting. java.sql is the source of truth for the JDBC surface. xerial/sqlite-jdbc 3.53.4.0 is the behavioral reference and conformance foundation, never a copy target. Every exclusion above cites the protocol, sqld, java.sql, or a tracked driver issue, with no bug recorded as a parity divergence.

Red

The four candidate suites at the PR base, fetched with tools/export-upstream 3.53.4.0 and run against libSQL:

./mvnw -pl libsql-conformance -am -Dit.test=DBMetaDataTest verify
Tests run: 56, Failures: 3, Errors: 8, Skipped: 1

./mvnw -pl libsql-conformance -am -Dit.test=StatementTest verify
Tests run: 46, Failures: 4, Errors: 4, Skipped: 1

./mvnw -pl libsql-conformance -am -Dit.test=PrepStmtTest verify
Tests run: 43, Failures: 7, Errors: 8, Skipped: 0

./mvnw -pl libsql-conformance -am -Dit.test=TypeMapTest verify
Tests run: 2, Failures: 0, Errors: 2, Skipped: 0

The failing method lists are in #156, #157, and #158.

Green

At f36dcfcefc49545ef52cbe9608677380875c8dfb:

tools/export-upstream --verify
Verified upstream-xerial_sqlite-jdbc against upstream-xerial_sqlite-jdbc.manifest

tools/export-upstream --verify-pinned
Verified upstream hashes against cab7981c19ce04d691f0675f0b2586afc2bbf803

./mvnw -pl libsql-conformance -am verify
Tests run: 123, Failures: 0, Errors: 0, Skipped: 1, BUILD SUCCESS

./mvnw -pl libsql-conformance -am -Pxerial-control verify
Tests run: 100, Failures: 0, Errors: 0, Skipped: 1, BUILD SUCCESS

./mvnw -pl libsql-conformance -am test        BUILD SUCCESS
./mvnw -pl libsql-jdbc test                   BUILD SUCCESS
./mvnw test                                   BUILD SUCCESS
./mvnw spotless:check                         BUILD SUCCESS
./mvnw -pl libsql-jdbc -am package -DskipTests BUILD SUCCESS

Trunk lane: ./mvnw -pl libsql-conformance -am verify at 7c7d321 gives 123 run, 0 failures, 1 skipped. The head passes every test trunk passes.

Perf, wall clock of ./mvnw -pl libsql-jdbc test, interleaved three times per side: trunk median 2.45 s, head median 2.49 s, 1.6 percent over baseline.

Files

Only upstream-xerial_sqlite-jdbc.manifest and upstream-xerial_sqlite-jdbc/UPSTREAM.md change. No driver or test source changes. No files outside the plan's Files block.

Base 7c7d32102e4b9e59b8e04d02ff095274ca76fbf2, head f36dcfcefc49545ef52cbe9608677380875c8dfb.

Re-check every rejected class against the current driver. TypeMapTest stays upstream because #95 rejects type maps and the control run cannot assert both contracts. DBMetaDataTest, StatementTest, and PrepStmtTest expose driver gaps, so they stay upstream with the new issues as their reason (#156, #157, #158). Regenerate UPSTREAM.md so its Paths row matches the tree, and note the recorded divergences. Update the #54 tracker and refresh the stale QueryTest rationale.
@magnusp
magnusp merged commit e172d22 into main Oct 23, 2026
6 checks passed
@magnusp
magnusp deleted the fix/i116-manifest-retriage branch October 23, 2026 03:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant