From f36dcfcefc49545ef52cbe9608677380875c8dfb Mon Sep 17 00:00:00 2001 From: Magnus Persson <1431685+magnusp@users.noreply.github.com> Date: Fri, 23 Oct 2026 04:57:02 +0200 Subject: [PATCH] docs(conformance): re-triage the vendored selection and refresh its docs 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. --- upstream-xerial_sqlite-jdbc.manifest | 10 +++++----- upstream-xerial_sqlite-jdbc/UPSTREAM.md | 6 +++++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/upstream-xerial_sqlite-jdbc.manifest b/upstream-xerial_sqlite-jdbc.manifest index a46d2ee..1a07929 100644 --- a/upstream-xerial_sqlite-jdbc.manifest +++ b/upstream-xerial_sqlite-jdbc.manifest @@ -29,12 +29,11 @@ # selected: src/test/java/org/sqlite/RSMetaDataTest.java -- ResultSetMetaData column names, types, and nullability. # Rejected tests. -# rejected: src/test/java/org/sqlite/TypeMapTest.java -- removed: libSQL accepts but ignores type maps (tracked by #48), so a parity assertion would be red; asserting the no-op would be a weak test. # rejected: src/test/java/org/sqlite/BackupTest.java -- drives sqlite-jdbc's native backup API; Hrana exposes no backup primitive. # rejected: src/test/java/org/sqlite/BusyHandlerTest.java -- registers native busy-handler callbacks that Hrana does not expose. # rejected: src/test/java/org/sqlite/CollationTest.java -- registers JVM collations through sqlite-jdbc's native extension API. # rejected: src/test/java/org/sqlite/ConnectionTest.java -- exercises sqlite-jdbc URL, open-mode, and resource-loading configuration that has no Hrana equivalent; covered JDBC paths are asserted by selected tests. -# rejected: src/test/java/org/sqlite/DBMetaDataTest.java -- DatabaseMetaData parity is tracked by #41, #42, and #50; selecting it now would be red. +# rejected: src/test/java/org/sqlite/DBMetaDataTest.java -- #156 tracks the remaining DatabaseMetaData gaps (java.sql-shaped empty result sets, column and key filters); sqld also rejects CREATE TEMP TABLE. # rejected: src/test/java/org/sqlite/ErrorMessageTest.java -- asserts sqlite-jdbc wording and native result codes; sqld returns different messages and error codes. # rejected: src/test/java/org/sqlite/ExtendedCommandTest.java -- exercises sqlite-jdbc's dot-command parser, not the JDBC API. # rejected: src/test/java/org/sqlite/ExtensionTest.java -- loads native SQLite extensions; the libSQL server does not permit extension loading. @@ -42,9 +41,9 @@ # rejected: src/test/java/org/sqlite/ListenerTest.java -- update, commit, rollback, and authorizer hooks require native callbacks unavailable over Hrana. # rejected: src/test/java/org/sqlite/MathFunctionsTest.java -- passes only when the server binary was compiled with SQLITE_ENABLE_MATH_FUNCTIONS; the sqld image build is not pinned to that option. # rejected: src/test/java/org/sqlite/MultipleClassLoaderTest.java -- verifies sqlite-jdbc's native library loading per class loader; libSQL has no native library. -# rejected: src/test/java/org/sqlite/PrepStmtTest.java -- includes getGeneratedKeys (#39) and CLOB/binary binding parity that are not yet implemented; selected prepared-statement paths cover the rest. +# rejected: src/test/java/org/sqlite/PrepStmtTest.java -- #157 tracks the parameter binding and parameter-metadata gaps; the class cannot pass until they close. # rejected: src/test/java/org/sqlite/ProgressHandlerTest.java -- registers native progress callbacks that Hrana does not expose. -# rejected: src/test/java/org/sqlite/QueryTest.java -- date/time and blob conversion cases belong to the value-conversion lane (#31, #32, #33, #34); selecting it now would mix known gaps into the parity baseline. +# rejected: src/test/java/org/sqlite/QueryTest.java -- imports sqlite-jdbc's SQLiteConfig and FastDateFormat classes and drives query timeouts; the conversion getters it exercises are covered by selected ResultSetTest cases. # rejected: src/test/java/org/sqlite/ReadUncommittedTest.java -- depends on sqlite-jdbc shared-cache and read-uncommitted connection configuration; sqld does not expose it. # rejected: src/test/java/org/sqlite/SavepointTest.java -- savepoints are not implemented by the libSQL driver. # rejected: src/test/java/org/sqlite/SerializeTest.java -- serializes and restores a native database image; Hrana has no equivalent. @@ -52,8 +51,9 @@ # rejected: src/test/java/org/sqlite/SQLiteConnectionPoolDataSourceTest.java -- tests sqlite-jdbc DataSource and pooling classes that libSQL does not provide. # rejected: src/test/java/org/sqlite/SQLiteDataSourceTest.java -- tests sqlite-jdbc DataSource classes that libSQL does not provide. # rejected: src/test/java/org/sqlite/SQLiteJDBCLoaderTest.java -- tests the native SQLite library loader. -# rejected: src/test/java/org/sqlite/StatementTest.java -- statement reuse and lifecycle parity is tracked by #47; selected ResultSet tests cover the current read paths. +# rejected: src/test/java/org/sqlite/StatementTest.java -- #158 tracks the conversion, batch, and fetch-direction gaps; Hrana also rejects multi-statement strings and TEMP tables. # rejected: src/test/java/org/sqlite/TransactionTest.java -- asserts SQLite file-locking and multi-connection wait behavior that a single sqld server cannot reproduce; commit visibility is covered by InsertQueryTest. +# rejected: src/test/java/org/sqlite/TypeMapTest.java -- #95 rejects connection type maps with SQLFeatureNotSupportedException because java.sql makes them optional, while xerial stores a map it never applies; the control run cannot assert both, so the class stays upstream. # rejected: src/test/java/org/sqlite/UDFCustomErrorTest.java -- registers JVM UDFs and inspects native error callbacks. # rejected: src/test/java/org/sqlite/UDFTest.java -- registers JVM UDFs through sqlite-jdbc's native extension API. # rejected: src/test/java/org/sqlite/util/OSInfoTest.java -- tests sqlite-jdbc's OS and native-library detection utility. diff --git a/upstream-xerial_sqlite-jdbc/UPSTREAM.md b/upstream-xerial_sqlite-jdbc/UPSTREAM.md index 7ad88f4..1e4451a 100644 --- a/upstream-xerial_sqlite-jdbc/UPSTREAM.md +++ b/upstream-xerial_sqlite-jdbc/UPSTREAM.md @@ -9,8 +9,12 @@ | Commit date | 2026-08-26T09:55:34Z | | Commit author | github-actions <41898282+github-actions[bot]@users.noreply.github.com> | | Commit subject | chore(release): 3.53.4.0 [skip ci] | -| Paths | src/test/java/org/sqlite/Utils.java, src/test/java/org/sqlite/ResultSetTest.java, src/test/java/org/sqlite/InsertQueryTest.java, src/test/java/org/sqlite/FetchSizeTest.java, src/test/java/org/sqlite/TypeMapTest.java, src/test/java/org/sqlite/CachedRowSetTest.java, src/test/java/org/sqlite/JSON1Test.java, src/test/java/org/sqlite/MetadataLeakTest.java, src/test/java/org/sqlite/PreparedStatementThreadTest.java, src/test/java/org/sqlite/ResultSetWithoutResultsTest.java, src/test/java/org/sqlite/RSMetaDataTest.java, LICENSE, LICENSE.zentus, NOTICE, VERSION | +| Paths | src/test/java/org/sqlite/Utils.java, src/test/java/org/sqlite/ResultSetTest.java, src/test/java/org/sqlite/InsertQueryTest.java, src/test/java/org/sqlite/FetchSizeTest.java, src/test/java/org/sqlite/CachedRowSetTest.java, src/test/java/org/sqlite/JSON1Test.java, src/test/java/org/sqlite/MetadataLeakTest.java, src/test/java/org/sqlite/PreparedStatementThreadTest.java, src/test/java/org/sqlite/ResultSetWithoutResultsTest.java, src/test/java/org/sqlite/RSMetaDataTest.java, LICENSE, LICENSE.zentus, NOTICE, VERSION | | License | Apache-2.0 and Zentus BSD. See `LICENSE`, `LICENSE.zentus`, and `NOTICE`. | The exported upstream files are byte-identical copies at this commit and must not be edited. `export-upstream` regenerates this tree. + +## Divergences + +`CHECKSUMS.sha256` records the pinned upstream hash for every file. Four conformance copies carry a recorded divergence and must not be edited beyond it: `CachedRowSetTest.java`, `InsertQueryTest.java`, `JSON1Test.java`, and `PreparedStatementThreadTest.java`. Each reason is recorded in `../upstream-xerial_sqlite-jdbc.manifest` under `# divergence:`.