Repository navigation
docs(conformance): re-triage the vendored selection and refresh its docs - #159
Merged
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #116
Closes #77
Closes #96
What changed
TypeMapTestkeeps its upstream rejection, but the reason is now true: fix(jdbc): reject unsupported type maps and report holdability #95 rejects connection type maps withSQLFeatureNotSupportedExceptionbecause 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, andPrepStmtTeststill 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:DBMetaDataTest: 45 of 56 pass. Seven metadata methods throw where xerial returns a java.sql-shaped empty result set;getColumns,getCrossReference, andgetPrimaryKeysdisagree on filtering and order; sqld rejectsCREATE TEMP TABLE.StatementTest: 38 of 46 pass.getDate(''),setDatemillis,setFetchDirection(999), andexecuteBatchwith a SELECT are driver gaps. Multi-statement SQL,CREATE TEMP TABLE, and the open-result-set DROP lock are remote-model cases that need divergences when the class selects.PrepStmtTest:getParameterMetaData, the CLOB/BLOB/stream setters,clearParameters,setDatemillis, and supplementary-character round trips are driver gaps. Hrana has no describe statement, so pre-execution metadata and prepare-time validation are impossible-parity cases.UPSTREAM.mdwith the vendoring tool, so itsPathsrow 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.QueryTestrationale found in the same triage. It imports sqlite-jdbc'sSQLiteConfigandFastDateFormatclasses.No new divergence line is added. The four existing ones remain:
CachedRowSetTest: Hrana holds a namespace until its last connection closes, so the conformance copy closes the leaked connection.InsertQueryTest: upstream misuses the connection factory, so the copy reuses the transaction connection and asserts rollback, commit visibility, and the final count (Conformance tests include weak assertions and an undocumented selection #51).JSON1Test: Hrana holds a namespace until its last connection closes, so the copy closes the leaked per-test connections.PreparedStatementThreadTest: upstream swallows everyExecutionException; Hrana serializes requests per stream, so the copy awaits both futures and fails on any runtime error (Conformance tests include weak assertions and an undocumented selection #51, Vendored PreparedStatementThreadTest passes when the race throws a runtime exception #118).Contract
Hrana 3 is the source of truth for transport, values, metadata, batching, transactions, and error reporting.
java.sqlis 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.0and run against libSQL:The failing method lists are in #156, #157, and #158.
Green
At
f36dcfcefc49545ef52cbe9608677380875c8dfb:Trunk lane:
./mvnw -pl libsql-conformance -am verifyat7c7d321gives 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.manifestandupstream-xerial_sqlite-jdbc/UPSTREAM.mdchange. No driver or test source changes. No files outside the plan's Files block.Base
7c7d32102e4b9e59b8e04d02ff095274ca76fbf2, headf36dcfcefc49545ef52cbe9608677380875c8dfb.