# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [2.0.14.1] (2026-04-12) [2.0.14.1]: https://github.com/vast-data/vastdb_sdk/compare/v2.0.14...v2.0.14.1 ### Changed - using new `adbc-driver-vastdb` package ## [2.0.14] (2026-02-24) [2.0.14]: https://github.com/vast-data/vastdb_sdk/compare/v2.0.13...v2.0.14 ### Added - Added pyarrow range support for up to 23.0.1 - Fix vector api backwards compatibility ## [2.0.13] (2026-02-15) [2.0.13]: https://github.com/vast-data/vastdb_sdk/compare/v2.0.12...v2.0.13 ### Fixed - vast_protobuf import error ## [2.0.12] (2026-02-12) [2.0.12]: https://github.com/vast-data/vastdb_sdk/compare/v2.0.11...v2.0.12 ### Added - Support for loading column names only in `Table.columns()` and `Table.reload_schema()` - Support for configuration the page size for entities (schemas, tables, columns, etc...) pagination in `Session()` - Support specifying data_endpoints config for import files ## [2.0.11] (2026-02-05) [2.0.11]: https://github.com/vast-data/vastdb_sdk/compare/v2.0.10...v2.0.11 - revert 2.0.7 and 2.0.8 ## [2.0.10] (2026-02-05) [2.0.10]: https://github.com/vast-data/vastdb_sdk/compare/v2.0.9...v2.0.10 ### Added - Support for both `Table.add_sorting_key` and `Schema.create_table` to take a list of column names as a sorting key ### Changed - Dead code was removed (topic functionallity) from internal module (_internal.py) ## [2.0.9] (2026-02-04) [2.0.9]: https://github.com/vast-data/vastdb_sdk/compare/v2.0.8...v2.0.9 ### Added - Blob expansion API added. ## [2.0.8] (2026-01-21) [2.0.8]: https://github.com/vast-data/vastdb_sdk/compare/v2.0.7...v2.0.8 ### Changed - populate _metadata._vector_index from list_tables response. ## [2.0.7] (2026-01-19) [2.0.7]: https://github.com/vast-data/vastdb_sdk/compare/v2.0.6...v2.0.7 ### Added - Vector Index table support (ORION-276190): - `sorting_key_enabled` field in `TableInfo` is now exclusive to Elysium tables (no longer `true` for vector index tables) - Vector index tables are now classified as `TableType.Regular` instead of `TableType.Elysium` - Requires VAST Cluster with ORION-276190 support - Vector Index metadata fields in `TableInfo` (conditioned on `include_vector_index_metadata`): - `vector_index_enabled`: boolean flag indicating vector index presence - `vector_index_column_name`: name of the column with vector index - `vector_index_distance_metric`: distance metric used (L2, COSINE, etc.) - `vector_index_sql_function_name`: SQL function name for distance calculation (e.g., "array_distance") ## [2.0.6] (2026-01-19) [2.0.6]: https://github.com/vast-data/vastdb_sdk/compare/v2.0.5...v2.0.6 ### Added - Float16 (half-precision floating point) type support - Schema serialization for float16 columns with precision.half - Predicate literal handling for float16 values - Fixes 'unsupported column type halffloat' error when creating tables with float16 columns ## [2.0.5] (2025-01-08) [2.0.4]: https://github.com/vast-data/vastdb_sdk/compare/v2.0.4...v2.0.5 ### Added - end-user impersonation for adbc connection configurable via Session ## [2.0.4] (2025-01-06) [2.0.3]: https://github.com/vast-data/vastdb_sdk/compare/v2.0.3...v2.0.4 ### Changed - Fix race condition in select (get data) mechanism ## [2.0.3] (2025-11-25) [2.0.2]: https://github.com/vast-data/vastdb_sdk/compare/v2.0.2...v2.0.3 ### Added - Support for vastdb's adbc driver - Session now gets an Optional[AdbcDriver] - AdbcDriver is created out of a local path to a driver `.so` (shared library) or a url - Vector Search capability - `Table.vector_search` - Approximate Top-N closest vectors ## [2.0.2] (2025-10-22) [2.0.2]: https://github.com/vast-data/vastdb_sdk/compare/v2.0.1...v2.0.2 ### Fixed - Get correct rows count and size in bytes when asking for a table projections ## [2.0.1] (2025-10-22) [2.0.1]: https://github.com/vast-data/vastdb_sdk/compare/v2.0.0...v2.0.1 ### Fixed - Performance improvement in query data flow - sending only required columns instead of entire schema ## [2.0.0] (2025-09-17) [2.0.0]: https://github.com/vast-data/vastdb_sdk/compare/v1.4.0...v2.0.0 ### BREAKING CHANGE - Removed properties `Table.bucket` and `Table.schema` - Removed properties `Projection.bucket` and `Projection.schema` - Removed official support for Python 3.9 - Added hard requirement for pyarrow~=18.0 ### Added - `ITable` - partial VAST tables interface (no DDL) - `TableMetadata` - table metadata allowing for reuse / or refraining from loading bucket/schema/table metadata on every transaction - `Transaction.table_from_metadata` allows creating `ITable` from `TableMetadata` inside a transaction - This table is only for DQL and DML (query and manipulation) - Official support for Python 3.13 ## [1.4.0] (2025-07-28) [1.4.0]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.11...v1.4.0 ### Added - Support for inserting rows by columns ## [1.3.11] (2025-07-10) [1.3.11]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.10...v1.3.11 ### Added - Support Tables with FixedSizeListArray of Numerics ### Fixed - Table insert with no rows - Boolean predicates - List tables with pagination - Amount of threads used for parallel queries ## [1.3.10] (2025-05-11) [1.3.10]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.9...v1.3.10 ### Added - Support limit on query data - Support for timestamp with timezone ## Fixed - Don't modify the user-passed config - Name the feature logger ## [1.3.9] (2025-04-22) [1.3.9]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.8...v1.3.9 ### Fixed - Elysium-check validation - Fix logging level ### Added - Support elysium new stats - Exposing `sorting_done` flag for Elysium tables (for other tables, `sorting_done()` will always return false) ## [1.3.8] (2025-03-31) [1.3.8]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.7...v1.3.8 ### Fixed - Support InsufficientCapacity (fixes internal issue) ### Added - Add server feature supported checks - Support zip import - Add split estimation for sorted tables - Support Update & Delete for Sorted Tables - Support Elysium DDL for the pysdk ### Changed - Move vast_flatbuf under vastdb ## [1.3.7] (2024-12-23) [1.3.7]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.6...v1.3.7 ### Fixed - Fix creating kafka schema before calling create table. ## [1.3.6] (2024-12-23) [1.3.6]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.5...v1.3.6 ### Fixed - Fix missing api call. ## [1.3.5] (2024-12-16) [1.3.5]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.4...v1.3.5 ### Added - Separated Kafka Topic specific APIs ## [1.3.4] (2024-12-11) [1.3.4]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.3...v1.3.4 ### Added - Support predicate pushdown on unsigned integers ## [1.3.3] (2024-11-18) [1.3.3]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.2...v1.3.3 ### Added - Detect non-VAST DB server responses ### Fixed - Fetch table statistics when constructing a `Table` objects and accessing `Table.stats` ## [1.3.2] (2024-10-07) [1.3.2]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.1...v1.3.2 ### Fixed - Fix broken links in https://vastdb-sdk.readthedocs.io - Document `vastdb_rowid` column - Document prefix match operator ## [1.3.1] (2024-09-10) [1.3.1]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.0...v1.3.1 ### Fixed - Retry in case `HEAD` request fails ## [1.3.0] (2024-09-01) [1.3.0]: https://github.com/vast-data/vastdb_sdk/compare/v1.2.0...v1.3.0 ### Added - Support `startswith` pushdown over string columns ## [1.2.0] (2024-08-19) [1.2.0]: https://github.com/vast-data/vastdb_sdk/compare/v1.1.2...v1.2.0 ### Added - Allow listing tables' names without fetching columns ## [1.1.2] (2024-08-19) [1.1.2]: https://github.com/vast-data/vastdb_sdk/compare/v1.1.1...v1.1.2 ### Fixed - Fix `Table.update()` when column names are not specified [#66] ## [1.1.1] (2024-08-11) [1.1.1]: https://github.com/vast-data/vastdb_sdk/compare/v1.1.0...v1.1.1 ### Fixed - Combine record batches when inserting `pyarrow.Table` ### Changed - Don't require `boto3` for checking bucket existence - Improve documentation ## [1.1.0] (2024-07-25) [1.1.0]: https://github.com/vast-data/vastdb_sdk/compare/v1.0.0...v1.1.0 ## Fixed - Close internal sessions in `select` and `import` ## Added - VastDB/Parquet performance benchmark harness - Support predicate pushdown over subfields ## [1.0.0] (2024-07-21) [1.0.0]: https://github.com/vast-data/vastdb_sdk/compare/v0.1.11...v1.0.0 ## Added - Add CLA (`CONTRIBUTING.md`) - Support setting HTTP timeouts ## [0.1.11] (2024-07-17) [0.1.11]: https://github.com/vast-data/vastdb_sdk/compare/v0.1.10...v0.1.11 ## Fixed - Revert timezone check to keep previous SDK behaviour ## Added - Use Sphinx for building documentation ## Changed - Defer imports to optimize initial import latency ## [0.1.10] (2024-07-09) [0.1.10]: https://github.com/vast-data/vastdb_sdk/compare/v0.1.9...v0.1.10 ## Fixed - Support responses with no record batches - Document supported Arrow data types ## [0.1.9] (2024-07-01) [0.1.9]: https://github.com/vast-data/vastdb_sdk/compare/v0.1.8...v0.1.9 ## Fixed - Don't drop timezone information when creating a table - Clarify the catalog example ## [0.1.8] (2024-06-26) [0.1.8]: https://github.com/vast-data/vastdb_sdk/compare/v0.1.7...v0.1.8 ## Fixed - Allow retries also during query response parsing - Don't retrieve stats during Table.select() if not needed - Log successful server-side file import ## [0.1.7] (2024-06-03) [0.1.7]: https://github.com/vast-data/vastdb_sdk/compare/v0.1.6...v0.1.7 ## Added - Retry idempotent requests in case of retriable errors - Allow setting `Table.select()` RPC queue priority - Send SDK version via Tabular RPC - Support external row IDs allocation - Document required VAST release - Add a helper function for defining a range of VIPs ## Changed - Update `ibis-framework` dependency to 9.0.0 - Refactor internal RPC client to support retries - Refactor request invocation and result handling ## Fixed - Sort record batch according to internal row ID column for updates/deletes - Don't use `ListBuckets` RPC to probe for server's version - Don't fail on an empty batch - Don't use 'us-east-1' region name ## Removed - Remove unused internal methods ## [0.1.6] (2024-05-23) [0.1.6]: https://github.com/vast-data/vastdb_sdk/compare/v0.1.5...v0.1.6 ### Added - Allow listing and querying Catalog snapshots - Support nested schemas - Use automatic split estimation ### Fixed - Allow using specific semi-sorted projection (needs VAST 5.1+ release) - Add a client-side check for too large requests ## [0.1.5] (2024-05-16) [0.1.5]: https://github.com/vast-data/vastdb_sdk/compare/v0.1.4...v0.1.5 ### Added - Allow passing `ssl_verify` via `Session` c-tor - Retry `requests.exceptions.ConnectionError` - Document `QueryConfig` properties - Support "deferred" `ibis` predicates using [Underscore (`_`) API](https://github.com/ibis-project/ibis/pull/3804) ### Fixed - Fix predicate pushdown when nested columns are present - Attach original traceback to `MissingBucket` exception ## [0.1.4] (2024-05-13) [0.1.4]: https://github.com/vast-data/vastdb_sdk/compare/v0.1.3...v0.1.4 ### Added - Resume `Table.select()` on HTTP 503 code - Allow pushing down True/False boolean literals - Support `between` predicate pushdown - Support inserting wide rows (larger than 5MB) ## [0.1.3] (2024-05-05) [0.1.3]: https://github.com/vast-data/vastdb_sdk/compare/v0.1.2...v0.1.3 ### Added - Document predicate pushdown support - Access imports' table (for VAST 5.2+) - Support `is_in` predicate pushdown - Document `table.py` ### Fixed - Freeze `ibis` dependency at 8.0.0 - Support snapshot-based access - Optimize RecordBatch slicing ## [0.1.2] (2024-04-25) [0.1.2]: https://github.com/vast-data/vastdb_sdk/compare/v0.1.1...v0.1.2 ### Added - Allow querying [VAST Catalog](https://www.vastdata.com/blog/vast-catalog-treat-your-file-system-like-a-database) - Use [mypy](https://mypy-lang.org/) for type annotation checking ### Fixed - Fix handling HTTPS endpoints [#50] - Optimize `Table.select()` performance - Use `GET` request to retrieve cluster version - Enable `ruff` preview mode - Make sure DuckDB integration fails gracefully when transaction is closed prematurely ### Removed - Don't return row IDs from `Table.insert()` ## [0.1.1] (2024-04-15) [0.1.1]: https://github.com/vast-data/vastdb_sdk/compare/v0.1.0...v0.1.1 ### Added - Support date & timestamp predicate pushdown [#25] ### Fixed - Add missing `requirements.txt` file to released tarball [#47] ## [0.1.0] (2024-04-11) [0.1.0]: https://github.com/vast-data/vastdb_sdk/compare/v0.0.5.3...v0.1.0 ### Added - Transactions are implemented using [context managers](https://docs.python.org/3/library/stdtypes.html#typecontextmanager) - Database entities are derived from a specific transaction - Predicate pushdown is using [ibis](https://ibis-project.org/)-like expressions - Public SDK [test suite](vastdb/tests/) - Internal CI with Python 3.9 - 3.12 - Using [`ruff`](https://github.com/astral-sh/ruff) for linting and code formatting - Improved [`README.md`](README.md) with new API examples ### Removed - Old SDK classes and methods are deprecated ## [0.0.5.3] (2024-03-24) [0.0.5.3]: https://github.com/vast-data/vastdb_sdk/compare/v0.0.5.2...v0.0.5.3 ### Added - Allow changing default max list_columns page size [#43] ### Fixed - Fixing insert function to use the correct tx while listing columns [#42] ## [0.0.5.2] (2024-03-19) [0.0.5.2]: https://github.com/vast-data/vastdb_sdk/compare/v0.0.5.1...v0.0.5.2 ### Added - Support retrieving row IDs via `VastdbApi.query()` [#31] ### Fixed - Fixed several functions that didn't use the correct txid [#30] - Fix graceful cancellation for `VastdbApi.query_iterator()` [#33] ### Removed - Remove `vast_protobuf` package and `protobuf` dependency [#29] ## [0.0.5.1] (2024-03-01) [0.0.5.1]: https://github.com/vast-data/vastdb_sdk/compare/v0.0.5.0...v0.0.5.1 ### Fixed - Support latest Python (3.11+) by not requiring too old dependencies. [#16] ## [0.0.5.0] (2024-02-25) [0.0.5.0]: https://github.com/vast-data/vastdb_sdk/compare/v0.0.4.0...v0.0.5.0 ### Added - Created a CHANGELOG ### Fixed - Wait until all files are processed during import - Sync with internal `api.py` code ## [0.0.4.0] (2024-02-14) [0.0.4.0]: https://github.com/vast-data/vastdb_sdk/compare/v0.0.2...v0.0.4.0 ### Added - Allow creating a table using the schema of an existing Parquet file via `create_table_from_parquet_schema()` - Allow inserting RecordBatch into DB via `insert()` ### Changed - Rename `vastdb_api` module to `api` ### Fixed - Fix `concurrent.futures` import error [#16]: https://github.com/vast-data/vastdb_sdk/pull/16 [#25]: https://github.com/vast-data/vastdb_sdk/pull/25 [#29]: https://github.com/vast-data/vastdb_sdk/pull/29 [#30]: https://github.com/vast-data/vastdb_sdk/pull/30 [#31]: https://github.com/vast-data/vastdb_sdk/pull/31 [#33]: https://github.com/vast-data/vastdb_sdk/pull/33 [#42]: https://github.com/vast-data/vastdb_sdk/pull/42 [#43]: https://github.com/vast-data/vastdb_sdk/pull/43 [#47]: https://github.com/vast-data/vastdb_sdk/pull/47 [#50]: https://github.com/vast-data/vastdb_sdk/pull/50 [#66]: https://github.com/vast-data/vastdb_sdk/issues/66