Repository navigation
feat(oracledb): add PKCS#12 wallet conversion, TNS alias resolution, hybrid RRF NEAR/exact modes, and DBMS_CLOUD.COPY_DATA - #858
Merged
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #858 +/- ##
==========================================
- Coverage 81.35% 81.30% -0.05%
==========================================
Files 527 527
Lines 88242 88851 +609
Branches 16436 16576 +140
==========================================
+ Hits 71788 72241 +453
- Misses 12058 12162 +104
- Partials 4396 4448 +52
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
…g, and ADK search options
cofin
force-pushed
the
feat/oracle-wallet-rrf-and-cloud-copy
branch
from
October 24, 2026 18:10
6df1099 to
788a974
Compare
…ngelog ## Summary Bumps package version to v0.69.0, refreshes dependencies and pre-commit hooks, conforms Oracle ADK memory store search signatures to the base abstract contract, and documents all changes in docs/changelog.rst. ## Key Changes - Package & Tooling (pyproject.toml, uv.lock, .pre-commit-config.yaml): Bump version to 0.69.0, update dependencies, and upgrade ruff-pre-commit to v0.17.1. - Documentation (docs/changelog.rst): Add v0.69.0 release notes covering Oracle PKCS#12 wallet conversion, TNS alias resolution, proximity RRF, server-side DBMS_CLOUD ingestion, and package upgrades. - Database Adapters (sqlspec/adapters/oracledb/adk/store.py): Align OracleAsyncADKMemoryStore and OracleSyncADKMemoryStore search_entries signatures with BaseAsyncADKMemoryStore and BaseSyncADKMemoryStore.
cofin
force-pushed
the
feat/oracle-wallet-rrf-and-cloud-copy
branch
from
October 24, 2026 18:20
788a974 to
9964f96
Compare
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 PKCS#12 (
ewallet.p12) to PEM wallet conversion, shared temporary wallet lifecycle management, andtnsnames.ora/sqlnet.oraTNS alias resolution without mutatingTNS_ADMIN; adds Oracle TextNEAR((...))proximity query formatting and exact top-K (FETCH FIRST) fallback in Oracle HNSW and hybrid RRF search builders and ADK memory stores; and adds server-sideDBMS_CLOUD.COPY_DATAobject-store ingestion toOracleSyncDriver.load_from_storageandOracleAsyncDriver.load_from_storagewith automatic HTTP(S) REST URI normalization and client-side Arrow fallback.Closes #854
Closes #855
Closes #856
Key Changes
Wallet PKCS#12 Conversion, Lifecycle & TNS Alias Resolution (
sqlspec/adapters/oracledb/)extract_oracle_wallet_zip(sqlspec/adapters/oracledb/core.py) withwallet_password: str | bytes | None = None, pre-extracted wallet directory validation, and PKCS#12ewallet.p12->ewallet.pem(0o600) conversion using optionalcryptographyPKCS#12 loading.0o700,os.lstatsymlink and ownership checks,os.O_NOFOLLOW+os.fchmodprivate writes) with thread-safe reference counting (retain_extracted_wallet_dir,release_extracted_wallet_dir) acrossOracleSyncConfig,OracleAsyncConfig, andderive_poolclones plusatexitcleanup.parse_tnsnames_oraandparse_sqlnet_orainsqlspec/adapters/oracledb/core.py(re-exported insqlspec/adapters/oracledb/__init__.py) andtns_aliasonOracleConnectionParams(sqlspec/adapters/oracledb/config.py) sobuild_connection_configresolves multi-line TNS aliases andSSL_SERVER_DN_MATCHdirectly intodsnand connection parameters without mutatingos.environ["TNS_ADMIN"].Hybrid RRF
NEARProximity Mode & Exact Top-K Fallback (sqlspec/adapters/oracledb/,sqlspec/builder/)sanitize_oracle_text_query(sqlspec/adapters/oracledb/core.py) to supportoperator="NEAR"using functionalNEAR(({tok1}, {tok2}, ...))Oracle Text syntax (falling back to{tok1}for single-token queries).approximate: bool = Truetobuild_oracle_hnsw_subquery,build_oracle_hybrid_rrf_sql, andbuild_oracle_hybrid_rrf_query(sqlspec/builder/_vector_distance.py) to toggle betweenFETCH APPROX FIRSTand exactFETCH FIRSTvector candidate retrieval.fts_operator: str = "ACCUM"andapproximate: bool = TrueonOracleAsyncADKMemoryStore.search_entriesandOracleSyncADKMemoryStore.search_entries(sqlspec/adapters/oracledb/adk/store.py), forwarding options to hybrid RRF and Oracle Text FTS queries.Server-Side
DBMS_CLOUD.COPY_DATAIngestion (sqlspec/adapters/oracledb/)dbms_cloud_credentialtoOracleDriverFeatures(sqlspec/adapters/oracledb/config.py) andVALID_ORACLE_DRIVER_FEATURE_KEYS(sqlspec/adapters/oracledb/core.py).resolve_dbms_cloud_source_uri,build_dbms_cloud_format_json, andbuild_dbms_cloud_copy_data_sql(sqlspec/adapters/oracledb/core.py, withbuild_dbms_cloud_copy_data_sqlre-exported insqlspec/adapters/oracledb/__init__.py) to normalizes3://,gs:///gcs://,wasbs:///wasb://, andabfss:///abfs://URIs intoDBMS_CLOUD-compatible HTTP(S) REST endpoints and preserve double quotes on case-sensitive or special-character Oracle schema and table identifiers.OracleSyncDriver.load_from_storageandOracleAsyncDriver.load_from_storage(sqlspec/adapters/oracledb/driver.py) withcredential_nameandformat_optionsparameters to execute server-sideDBMS_CLOUD.COPY_DATAfor supported remote formats (parquet,csv,json,jsonl,ndjson), falling back transparently to client-side Arrow ingestion for local paths, uncredentialed loads, unresolvable URIs, or Arrow IPC inputs.