Repository navigation
Ask the driver for LOB values, not LOB objects - #15
Merged
Merged
Conversation
seerdb 3.0 returns a LOB OBJECT from a SELECT of a CLOB / BLOB by
default, matching python-oracledb (seerdb#964). This dialect is built on
the values: SQLAlchemy's Text and LargeBinary result processors, and
every comparison the compliance suite makes, expect str / bytes.
Without this, against a driver carrying that change, the compliance suite
goes 52 failed -> 65 (the 52 are this bed's own pre-existing failures).
With it, 52 again -- the baseline restored exactly, measured three ways
on 11g:
dialect master + driver master 52 failed, 945 passed
dialect master + driver with the flip 65 failed, 932 passed
dialect HERE + driver with the flip 52 failed, 945 passed
`fetch_lobs` is FEATURE-DETECTED rather than pinned. The same dialect
still has to work against a driver that predates the option -- passing it
to one is a TypeError -- and the floor cannot be raised to a driver
release that is not published yet. `seerdb.OracleConnect` is public, so
one signature probe at import settles it.
A URL that asks for `?fetch_lobs=true` still wins: the query-string loop
runs after this, as it does for autocommit.
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
This was referenced Sep 19, 2026
Merged
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.
seerdb 3.0 returns a LOB object from a
SELECTof a CLOB / BLOB by default, matching python-oracledb (seerdb#964). This dialect is built on the values: SQLAlchemy'sTextandLargeBinaryresult processors, and every comparison the compliance suite makes, expectstr/bytes.Measured three ways, on 11g
The baseline is restored exactly — 13 regressions recovered, none left over. (The 52 are this local bed's own pre-existing failures, unrelated to LOBs.)
Why feature-detected rather than pinned
The same dialect still has to work against a driver that predates the option — passing
fetch_lobsto one is aTypeError— and the floor cannot be raised to a driver release that is not published yet.seerdb.OracleConnectis public, so one signature probe at import settles it.A URL that asks for
?fetch_lobs=truestill wins: the query-string loop runs after this, exactly as it does forautocommit.Note for the driver side
seerdb's
SQLAlchemy compliance (Mirror over PostgreSQL)job checks this repository out at master, so it goes green once this merges. The11gand23aijobs check out the newest release tag, so they stay red until the dialect is tagged — that is a release call, not something this PR can do.🤖 Generated with Claude Code