Repository navigation
feat(oracledb): add enterprise topology, session context hooks, streaming Arrow, HNSW/RRF, and 26ai capabilities - #849
Merged
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #849 +/- ##
==========================================
- Coverage 81.83% 81.37% -0.47%
==========================================
Files 527 527
Lines 86585 87836 +1251
Branches 16112 16370 +258
==========================================
+ Hits 70861 71479 +618
- Misses 11662 11992 +330
- Partials 4062 4365 +303
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
cofin
force-pushed
the
feat/oracle-enterprise-26ai
branch
2 times, most recently
from
October 22, 2026 01:52
27909e3 to
87ff327
Compare
…ming Arrow, HNSW/RRF, and 26ai capabilities
cofin
force-pushed
the
feat/oracle-enterprise-26ai
branch
from
October 22, 2026 04:00
87ff327 to
efbbe30
Compare
cofin
added a commit
that referenced
this pull request
Oct 22, 2026
## Summary Prepares the `v0.68.0` release of SQLSpec, updates the changelog with comprehensive release notes covering Oracle enterprise topology and 26ai capabilities, PostgreSQL pooler modes, Google ADK v2 parity, wire-level SQLCommenter injection, and DuckDB statement profiling, upgrades pre-commit tools and lockfile dependencies, and resolves DuckDB Arrow result typing. ## Key Changes ### Documentation (`docs/`) - Add comprehensive `v0.68.0` release notes in `docs/changelog.rst` documenting new features, changes, and fixes across PRs #840, #849, #850, #851, and #852. ### Package & Tooling (`pyproject.toml`, `.pre-commit-config.yaml`, `uv.lock`) - Bump package `version` and bumpversion `current_version` to `0.68.0` in `pyproject.toml`. - Bump `ruff-pre-commit` hook from `v0.16.10` to `v0.17.0` in `.pre-commit-config.yaml`. - Update `uv.lock` with bumped `sqlspec` package version and refreshed dependencies. ### Database Adapters (`sqlspec/adapters/duckdb/`) - Ensure `DuckDBDriver.select_to_arrow` verifies `cursor.to_arrow_table()` is not `None` before passing to `build_arrow_result_from_table`, satisfying strict type checking under updated DuckDB stubs.
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.
Summary
Adds Oracle enterprise connection topology and in-memory wallet support, declarative session checkout/release context hooks, sub-pool derivation, PyCapsule Arrow batch streaming, HNSW
FETCH APPROX FIRST+ hybrid RRF vector search, and Oracle 26ai catalog introspection and execution plan diagnostics.Closes #841
Closes #842
Closes #843
Closes #844
Closes #845
Closes #847
Key Changes
Core & Configuration (
sqlspec/config.py,sqlspec/core/explain.py)DatabaseConfig.derive_pool(**overrides)onSyncDatabaseConfigandAsyncDatabaseConfigto clone pooled adapter configurations with shallow-mergedconnection_configanddriver_featuresoverrides for workload isolation.ExplainOptionswithdisplay_cursor: boolandxplan_format: str | Nonefor OracleDBMS_XPLAN.DISPLAY_CURSORexecution plan formatting.Query Builder (
sqlspec/builder/)Select.vector_top_k(...),build_oracle_vector_top_k(...), andbuild_oracle_hybrid_rrf_sql(...)supporting OracleFETCH APPROX FIRST ... ROWS ONLYHNSW index syntax (TARGET ACCURACY) and single-round-trip Reciprocal Rank Fusion (1 / (:k + rank)) acrossVECTOR_DISTANCEandCONTAINSCTEs.build_oracle_explain(...)to supportDBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, format)whendisplay_cursor=True.Oracle Adapter (
sqlspec/adapters/oracledb/)core.py,config.py): AddOracleEndpoint,OracleTopologyConfig,build_tns_description(...)((ADDRESS_LIST=...)+(CONNECT_DATA=...)), andextract_oracle_wallet_zip(...)with strict0o700permissions, zip-slip path validation, and automatic temporary directory cleanup onclose_pool().core.py,config.py): AddOracleSessionContextConfigand batched anonymous PL/SQLBEGIN ... END;checkout/release callbacks (DBMS_SESSION.SET_IDENTIFIER,DBMS_SESSION.SET_CONTEXT,DBMS_APPLICATION_INFO.SET_MODULE,NLS_*session parameters,EDITION,CURRENT_SCHEMA, andDBMS_SESSION.MODIFY_package_state(DBMS_SESSION.REINITIALIZE)) wired intosession_callback.core.py,driver.py): Remove unsupportedfetch_lobsfromget_dataframe_batcheskwargs, supportarrow_requested_schema, and convert OracleDataFramechunks via Arrow PyCapsule (pa.RecordBatch.from_pyarrow(odf)) inselect_to_arrow(..., return_format="batches").adk/store.py): Addmode="hybrid"andrrf_k: int = 60toOracleSyncADKMemoryStoreandOracleAsyncADKMemoryStorewith automatic fallback whenquery_embeddingis omitted oruse_ftsis disabled.core.py,data_dictionary.py,driver.py):sanitize_oracle_text_query(...), JSON Relational Duality View_metadata.etaghelpers (extract_duality_view_etag,inject_duality_view_etag,build_duality_etag_update_sql), andVALID_ORACLE_DRIVER_FEATURE_KEYSvalidation.get_vector_memory_pool,has_cloud_ai,get_apex_release,get_json_duality_views) backed by domain queries insqlspec/data_dictionary/dialects/oracle/sql/{system,objects,version,views}.sql.connection.versioninspection inOracleAsyncDriver._pipeline_native_supportedand addOracleSyncDriver.explain_statement/OracleAsyncDriver.explain_statement.