Skip to content

feat(jdbc): implement savepoints and re-select the xerial SavepointTest - #179

Merged
magnusp merged 0 commit into
docs/171-conformance-statementfrom
feat/173-savepoints
Oct 23, 2026
Merged

magnusp merged 0 commit into
docs/171-conformance-statementfrom
feat/173-savepoints

Conversation

@magnusp

@magnusp magnusp commented Oct 23, 2026 •

Copy link
Copy Markdown
Owner

Why

JDBC savepoints were a hard unsupported no-op, and xerial's SavepointTest was rejected because of that gap.

What changed

  • Implemented setSavepoint, setSavepoint with a name, rollback, and release over the transaction stream.
  • Flipped supportsSavepoints to true.
  • Vendored and selected the xerial SavepointTest, and added LibsqlSavepointTest with 15 tests.

Scope

  • Savepoint support and the conformance re-selection. No unrelated JDBC behavior changed.

Tradeoffs

  • None.

Blast Radius

  • Savepoint code path in the JDBC module, plus one new vendored conformance file. The upstream test opens two connections to one path, and the conformance driver maps a path to one sqld namespace, so the test passes with no divergence.

Verification

  • ./tools/export-upstream --verify and --verify-pinned: verified against the pinned commit.
  • libSQL conformance lane: 272 tests, 0 failures, 7 skipped; SavepointTest 4 of 4.
  • xerial control lane: 249 tests, 0 failures, 2 skipped; SavepointTest 4 of 4.
  • ./mvnw -pl libsql-jdbc -am test: 366 of 366 passed.
  • ./mvnw spotless:check: passed.

@magnusp
magnusp changed the base branch from main to docs/171-conformance-statement October 23, 2026 23:32
@magnusp
magnusp added this pull request to stack #183 October 23, 2026 23:32
@magnusp
magnusp force-pushed the docs/171-conformance-statement branch from 16e220d to 562beb3 Compare October 23, 2026 23:35
@magnusp
magnusp force-pushed the feat/173-savepoints branch from be93f13 to 5a1ab53 Compare October 23, 2026 23:35
@magnusp
magnusp removed this pull request from stack #183 October 23, 2026 23:39
@magnusp
magnusp merged commit 2046088 into docs/171-conformance-statement Oct 23, 2026
@magnusp
magnusp force-pushed the docs/171-conformance-statement branch from 562beb3 to 7684661 Compare October 23, 2026 23:40
@magnusp
magnusp deleted the feat/173-savepoints branch October 23, 2026 23:40
@magnusp
magnusp force-pushed the feat/173-savepoints branch from 5a1ab53 to 2046088 Compare October 23, 2026 23:40
magnusp added a commit that referenced this pull request Oct 24, 2026
…st (#184)

## Why

JDBC savepoints were a hard unsupported no-op, and xerial's
`SavepointTest` was rejected because of that gap. This is the same
change as #179, re-issued on a branch based directly on `main`, because
#179 was merged into a stacked base branch instead of `main` and so
never reached `main`.

## What changed

- Implemented setSavepoint, setSavepoint with a name, rollback, and
release over the transaction stream.
- Flipped `supportsSavepoints` to true.
- Vendored and selected the xerial `SavepointTest`, and added
`LibsqlSavepointTest` with 15 tests.

## Scope

- Savepoint support and the conformance re-selection. No unrelated JDBC
behavior changed.

## Tradeoffs

- None.

## Blast Radius

- Savepoint code path in the JDBC module, plus one new vendored
conformance file. The upstream test opens two connections to one path,
and the conformance driver maps a path to one sqld namespace, so it
passes with no divergence.

## Verification

- `./tools/export-upstream --verify`: verified.
- `./mvnw -pl libsql-jdbc -am test`: passed.
- The conformance lanes passed on the identical content in #179, with
`SavepointTest` 4 of 4 under both the libSQL driver and the xerial
control probe.

Fixes #173
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant