Skip to content

Latest commit

 

History

History
924 lines (477 loc) · 41.3 KB

File metadata and controls

924 lines (477 loc) · 41.3 KB

Changelog

This repository is a fork of https://github.com/Mause/duckdb_engine. Entries from v0.18.0 onward are maintained in this fork; earlier entries are preserved from the upstream project for historical context.

Maintained in this fork

1.5.4.7 (2026-07-31)

Bug Fixes

  • reflect valid quoted DuckDB schema names containing dots without crashing or splitting quoted identifier components

Tooling

  • update Ruff to 0.16.1 and refresh locked development dependencies within existing version constraints

1.5.4.6 (2026-07-30)

Bug Fixes

  • serialize the first DuckDB reserved-word catalog load so concurrently created engines do not repeat the query or race during DuckDB initialization

Tooling

  • update ty to 0.0.65 and refresh locked development dependencies within existing version constraints

1.5.4.5 (2026-07-24)

Bug Fixes

  • adapt SQLAlchemy 2.1 execution-context and PostgreSQL reflection API changes so statement execution and table reflection keep working (#142)

Tooling

  • validate DuckDB 1.5.5 and SQLAlchemy 2.1.0b3, update ty to 0.0.63 and Ruff to 0.16.0, and refresh locked development dependencies

1.5.4.4 (2026-07-17)

Bug Fixes

  • preserve healthy pooled connections when DuckDB query errors contain words such as timeout or socket instead of misclassifying those programming errors as disconnects, while recognizing DuckDB's actual Connection already closed error

Tooling

  • update ty to 0.0.60 and refresh locked development dependencies within existing version constraints

1.5.4.3 (2026-07-10)

Features

  • expose the supported verb-style MotherDuck Flight helpers and the max_runtime_sec Flight version column
  • add md_update_dive_status() for updating public Dive status metadata through SQLAlchemy

Bug Fixes

  • compile Flight list, run-list, log, and version helpers to the released MotherDuck table-function names while keeping the older Python helper names as deprecated compatibility aliases

Tooling

  • extend the validated compatibility matrix to DuckDB 1.4.5, update ty to 0.0.58, and refresh locked development dependencies within existing version constraints

1.5.4.2 (2026-07-03)

Features

  • expose MotherDuck Dive status metadata columns on md_list_dives(), md_create_dive(), md_get_dive(), and other summary-returning Dive helpers

Bug Fixes

  • reject copy_from_rows(..., include_header=True) for sequence rows without explicit columns instead of letting DuckDB treat the first data row as the header

Maintenance

  • centralize reflection result default handling for multi-reflection methods without changing public behavior

Tooling

  • refresh the locked development dependency set to the latest non-breaking transitive releases within existing version caps

1.5.4.1 (2026-07-01)

Bug Fixes

  • render autoincrement integer primary keys with an implicit DuckDB sequence (DEFAULT nextval(...)) instead of PostgreSQL's unsupported SERIAL, so Column(Integer, primary_key=True) works without an explicit Sequence (#128)

1.5.4 (2026-06-26)

Features

  • expose MotherDuck md_user_info().c.region and Flight run config columns in the SQLAlchemy table-function helpers
  • document one-off md_run_flight(config=...) overrides and selecting effective Flight run config
  • route motherduck_enable_server_side_temp_tables through the MotherDuck startup URL parameter bucket

Bug Fixes

  • restore SQLAlchemy 2.0.0+ compatibility by using a reflection fallback on early 2.0 releases
  • reject empty MotherDuck Flight config keys before compiling Flight helper calls
  • reject invalid MotherDuck Flight config map keys and NUL-containing values before compiling Flight helper calls

Tooling

  • extend the validated compatibility matrix to DuckDB 1.5.4 and SQLAlchemy 2.0.51
  • bump the local ty pin to 0.0.54 and the Ruff pre-commit hook to 0.15.20 after validating the current checks against the latest non-breaking releases
  • refresh the locked development dependency set to the latest non-breaking transitive releases within existing version caps

1.5.3 (2026-06-02)

Features

  • add quack_query() for stateless DuckDB Quack remote queries on DuckDB 1.5.3+
  • add pragma_storage_info() for SQLAlchemy access to DuckDB storage metadata
  • add MotherDuck job table-function helpers for job metadata, versions, runs, logs, and job lifecycle operations
  • add MotherDuck Dive table-function helpers for Dives-as-code create, update, fetch, versioning, and cleanup workflows

Bug Fixes

  • quote validated table-function named parameters so reserved names such as limit and offset work with SQLAlchemy helpers

Tooling

  • focus the nox compatibility matrix on active DuckDB release lines while keeping the runtime dependency floor unchanged
  • extend the DuckDB compatibility test matrix to include DuckDB 1.5.3
  • update the SQLAlchemy compatibility matrix to include SQLAlchemy 2.0.50
  • refresh the locked development dependency set to the latest non-breaking releases within existing version caps
  • bump the local ty pin to 0.0.38 after validating the current checks against the latest non-breaking release

1.5.2.2 (2026-05-11)

Features

  • add md_user_info() for querying MotherDuck user and organization metadata through SQLAlchemy table-valued functions

Bug Fixes

  • prefer the documented MOTHERDUCK_TOKEN environment variable over the lowercase fallback when both are set
  • reject MotherDuck database names containing commas before building SQLAlchemy URLs
  • ignore common PostgreSQL session setup statements and transaction isolation declarations emitted by PostgreSQL-oriented clients

Tooling

  • extract bulk insert builder logic into a focused helper module without changing the public execution option behavior
  • revert unreleased PostgreSQL compatibility-mode aliases before publishing them
  • bump the local ty pin to 0.0.34 after validating the current checks against the latest non-breaking release
  • refresh the locked development dependency set to the latest non-breaking releases within existing version caps
  • deduplicate reflection fallback wrapper handling

1.5.2.1 (2026-04-25)

Bug Fixes

  • treat MotherDuck transport overrides such as host, region_host, port, tls, and grpc_local_subchannel_pool as startup URL parameters so SQLAlchemy URLs and connect_args["config"] keep working with current MotherDuck routing behavior
  • derive duckdb_sqlalchemy.__version__ from installed package metadata so the runtime version matches published package metadata and generated user agents
  • normalize legacy MotherDuck transport aliases such as motherduck_host, motherduck_port, motherduck_use_tls, motherduck_region_host, and motherduck_grpc_local_subchannel_pool into the startup URL parameters the current extension expects, while emitting deprecation warnings
  • restore the exported package version to 1.5.2 so the runtime version matches published package metadata

Tooling

  • bump the local ty pin to 0.0.32 after validating the current checks against the latest non-breaking release
  • allow pre-commit 4.6.x in the devtools extra
  • refresh validated dev minimums for nox and pytest-cov

1.5.2 (2026-04-17)

Features

  • prefer MotherDuck's new session_name connection parameter while keeping session_hint, motherduck_session_hint, and motherduck_session_name as deprecated aliases
  • add stable_session_name() and keep stable_session_hint() as a deprecated compatibility wrapper
  • reflect DuckDB GEOMETRY columns as a concrete dialect type on DuckDB 1.5.2+

Tooling

  • extend the DuckDB compatibility test matrix to include DuckDB 1.5.2
  • refresh the locked development environment and update local ty/Ruff pre-commit pins after validation

1.5.1.4 (2026-04-10)

Versioning

  • release 1.5.1.4 with no runtime code changes; this cut only updates package metadata and triggers the GitHub release workflow

1.5.1.3 (2026-04-10)

Bug Fixes

  • keep motherduck_oauth_token in the initial duckdb.connect(..., config=...) call so MotherDuck OAuth connections keep working after the upstream extension started requiring the registered startup option on DuckDB 1.5.1+

Tooling

  • validate the current development dependency set against Python 3.14 and refresh the lockfile to the latest non-breaking packages within the existing version caps

1.5.1.2 (2026-04-08)

Bug Fixes

  • default URLs without an explicit database back to :memory: before applying DuckDB path query parameters, so duckdb://?access_mode=read_only no longer opens a file named from the query string
  • normalize older MotherDuck startup aliases such as motherduck_session_hint, motherduck_attach_mode, motherduck_saas_mode, and cachebust into the canonical URL path-query keys so connection routing and cache isolation keep working

Tooling

  • test SQLAlchemy 2.0.49 in CI, update the ty dev dependency to 0.0.29, and refresh the locked development environment to the latest non-breaking versions within the existing constraints

1.5.1.1 (2026-04-03)

Bug Fixes

  • require SQLAlchemy 2.0.45+ in package metadata and the test matrix to match the reflection API used by the dialect
  • default local file-backed DuckDB engines to QueuePool while keeping MotherDuck on NullPool
  • treat read-only WITH statements and comment-prefixed queries as idempotent for transient retry handling

Tooling

  • install nox with the dev and devtools extras so the documented nox -s ... workflow works after standard development installs and in fresh repo checkouts
  • refresh the locked dev toolchain and bump ty to 0.0.28 after validating the current suite against the latest allowed package set

1.5.1 (2026-03-26)

Versioning

  • align package version with supported DuckDB version (1.5.1)
  • extend the compatibility matrix and lockfile to include DuckDB 1.5.1

Features

  • add a native VARIANT SQLAlchemy type and reflect DuckDB VARIANT columns without degrading them to NullType

Notes

  • DuckDB 1.5.1 is a bugfix release; no dialect-level changes were required beyond validation and metadata updates
  • DuckDB 1.5.0 also introduced GEOMETRY, but the Python binding still raises Unsupported type: "GEOMETRY" on fetch, so this release does not claim first-class geometry value support yet

1.4.4.8 (2026-03-24)

Bug Fixes

  • stop probing the default isolation level during connection setup to match duckdb_engine
  • add an explicit checkpoint() helper that commits around DuckDB checkpoints on SQLAlchemy connections

1.4.4.7 (2026-03-22)

Bug Fixes

  • reflect JSON columns as JSON during single-table autoload and MetaData.reflect()
  • reflect array/list columns from DuckDB metadata instead of degrading them to NullType
  • populate reflected enum labels from DuckDB type metadata
  • populate reflected primary key columns from duckdb_constraints()
  • reflect indexes from duckdb_indexes() instead of returning an empty list

1.4.4.6 (2026-03-22)

Bug Fixes

  • reflect DuckDB DOUBLE/FLOAT8 columns as SQLAlchemy DOUBLE on SQLAlchemy 2.x

1.4.4.5 (2026-03-22)

Bug Fixes

  • preserve empty MAP values as empty dicts instead of coercing them to NULL
  • refresh Arrow compatibility and package constraints across supported environments

Performance

  • refactor bulk insert preparation and copy_from_rows chunk handling to reduce duplication

Refactoring

  • simplify MotherDuck config, query, URL, path, connect-arg, and TTL normalization helpers

Tooling

  • update local lint/type-check tool pins and CI matrix versions
  • add repo architecture and execution-plan guidance docs

1.4.4.3 (2026-02-21)

Bug Fixes

  • fix USMALLINT max range handling to cover the full 0..65535 domain
  • preserve NULL MAP values as None in Python instead of coercing to an empty dict

Tooling

  • add .codex/environments/environment.toml with local test/lint/type-check actions

1.4.4.2 (2026-02-05)

Security

  • validate config keys before SET statements to block SQL injection payloads
  • validate preload extension names before LOAD
  • validate COPY helper table/column/option identifiers and reject SQL fragments

Testing

  • gate pandas tests on supported pandas/SQLAlchemy combinations
  • pin pandas<2.2 in nox SQLAlchemy 1.x sessions for stable matrix runs

Typing

  • align SQLAlchemy compatibility shims and test typing to satisfy ty

1.4.4.1 (2026-02-05)

Documentation

  • document DuckDB multiprocessing fork-safety caveat and spawn/forkserver workaround

1.4.4 (2026-02-03)

Versioning

  • align package version with supported DuckDB version (1.4.4)
  • update test matrix and lockfile to DuckDB 1.4.4
  • this release contains no functional changes from 1.4.3

1.4.3 (2026-01-15)

Versioning

  • align package version with supported DuckDB version (1.4.x)
  • this release contains no functional changes from 0.19.3

0.19.3 (2025-12-28)

Documentation

  • publish GitHub Pages docs site with Jekyll config and navigation
  • add overview, getting started, migration guide, and SEO checklist
  • add llms.txt and strengthen README/docs discoverability links

Metadata

  • expand PyPI metadata (keywords, classifiers, documentation URL)

0.19.2 (2025-12-28)

Documentation

  • expand docs guides with additional examples and configuration notes
  • refine README wording for a more professional tone

Bug Fixes

  • default empty database URLs to :memory: for DuckDB connections

Miscellaneous Chores

  • bump package version to 0.19.2

0.19.0 (2025-12-24)

Documentation

  • overhaul README with long-term support positioning, expanded quick starts, and URL/pooling guidance
  • add CI and license badges plus clearer compatibility and support policy sections
  • reorganize docs/examples pointers for faster onboarding

Miscellaneous Chores

  • bump package version to 0.19.0 for the documentation release

Notes

  • no runtime code changes in this release

0.18.0 (2025-12-24)

⚠ BREAKING CHANGES

  • rename package to duckdb-sqlalchemy and module to duckdb_sqlalchemy (#2)

Documentation

  • refresh README branding and fork attribution (#2)

Miscellaneous Chores

  • update release/publish tooling and metadata for new package name (#2)

Upstream history (from Mause/duckdb_engine)

0.17.0 (2025-03-29)

Features

0.16.0 (2025-03-29)

⚠ BREAKING CHANGES

  • drop python 3.8

Bug Fixes

0.15.1 (2025-03-29)

Bug Fixes

  • panics in multi-threaded environments (694d227)
  • panics in multi-threaded environments (d42c977), closes #1190

0.15.0 (2025-01-16)

Features

  • Add supported MotherDuck connection string parameters (c57f024)

0.14.2 (2025-01-10)

Bug Fixes

  • use full list of reserved words (6dbadf1)

0.14.1 (2025-01-10)

Bug Fixes

  • set div_is_floordiv to False to avoid bad casts (dfbed6d)

0.14.0 (2024-12-16)

Features

  • reexport postgresql insert function (51dbb18)

Miscellaneous Chores

0.13.7-pre0 (2024-11-24)

Miscellaneous Chores

0.13.6 (2024-11-24)

Bug Fixes

  • avoid mutating caller's connect args (don't accumulate user_agents) (8f39aca)
  • deps: update dependency packaging to v24.2 (f5daa5a)

0.13.5 (2024-11-07)

Bug Fixes

  • deps: update dependency duckdb to v1.1.3 (3152ddb)
  • nightly: fix default connection references for nightly (c0848d2)
  • reflection bug: Fixed bug causing TypeError when using metadata.reflect() (b96c1d2)
  • sqlalchemy versions: Added statement to apply changes only for sqlalchemy version 2.0.36 and above (d6fcd32)

0.13.4 (2024-10-22)

Bug Fixes

  • deps: update dependency duckdb to v1.1.2 (d363897)
  • propagate kwargs through compilation nodes (95d8cef)

0.13.3 (2024-10-21)

Bug Fixes

  • add varint type (220c18f)
  • restrict varint to supported versions (ccdbc06)
  • update Map type for 1.0+ (7574837)

0.13.2 (2024-09-04)

Bug Fixes

Documentation

  • use read_only=False so that example doesn't raise an exception. (#1079) (d0688b4)

0.13.1 (2024-07-29)

Bug Fixes

  • fix: Pass user config option via database name #1064

0.13.0 (2024-06-02)

Features

  • first class interval support (286abb5)

Bug Fixes

  • deps: update dependency duckdb to v0.10.3 (7b5249a)

0.12.1 (2024-05-24)

Bug Fixes

  • add new types names for 0.10.3 (8e0ca8e)

0.12.0 (2024-04-21)

Miscellaneous Chores

  • release 0.12.0 (same as rc0) (7842f2c)

0.12.0-rc0 (2024-04-18)

Bug Fixes

  • allow connections to be properly closed (0e57a64)

Miscellaneous Chores

0.11.5 (2024-04-16)

Miscellaneous Chores

  • loosen packaging pin

0.11.4 (2024-04-09)

Bug Fixes

  • drop python 3.7 support (9acdd66)

0.11.3 (2024-04-07)

Bug Fixes

  • _loads_domains in SQLA2 (4c67e26)
  • allow parsing json in dynamic queries (895685e)

0.11.2 (2024-03-01)

Bug Fixes

  • support views in has_table (52d6a43)

0.11.1 (2024-02-06)

Miscellaneous Chores

  • Add duckdb-sqlalchemy/sqlalchemy version info to DuckDB user_agent

0.11.0 (2024-02-04)

Features

0.10.0 (2023-12-24)

Features

Bug Fixes

  • remove packaging requirement (5b9cafb)

0.9.5 (2023-12-21)

Bug Fixes

  • fix: support getting table properties using schema with db name prefix (#848)

0.9.4 (2023-12-09)

Bug Fixes

  • fix: Support fetching multiple databases and schemas and their associated tables

0.9.3 (2023-12-05)

Bug Fixes

  • use numeric_dollar where available (f51ee7f)

Documentation

0.9.2 (2023-07-23)

Bug Fixes

  • types: map uinteger to correct type (405769a)

0.9.1 (2023-07-14)

Bug Fixes

  • move numpy to dev dependencies (368c55c)

0.9.0 (2023-06-21)

Features

0.8.0 (2023-06-20)

Features

  • nested types (Struct, Map, Union) (5c16863)
  • passing config via query parameters in the url (6907041

Bug Fixes

  • allow passing motherduck_token as a config parameter (b944405)

0.7.3 (2023-05-19)

Bug Fixes

  • don't reflect nested types for now (3a01f9d)

0.7.2 (2023-05-17)

Bug Fixes

  • add missing ischema_names entries (20e30cf)

0.7.1 (2023-05-09)

Bug Fixes

Dependencies

0.7.0 (2023-03-16)

Miscellaneous Chores

0.7.0-rc1 (2023-03-07)

Features

Miscellaneous Chores

0.6.9 (2023-03-01)

Bug Fixes

Documentation

  • update README toc (42a0192)
  • update readme with link to duckdb's docs (4fcb730)

0.6.8 (2023-01-08)

Bug Fixes

  • correct json type mapping (7bf8753)

0.6.7 (2023-01-07)

Bug Fixes

  • correct attribute reference (d2a2577)

0.6.6 (2022-12-17)

Bug Fixes

  • add missing data types (92cef1b)
  • add missing integer data types (c7e9ccf)
  • disable server side cursors (bae0a1c)

0.6.5 (2022-11-22)

⚠ BREAKING CHANGES

  • drop python 3.6 support

Documentation

  • add note regarding fetchmany support in duckdb=>0.5.0 (7ccbaa9)

Dependencies

  • add snapshottest (0b18f47)
  • bump tested duckdb to 0.5.1 in tox.ini (da71828)
  • declare shared test dependencies (e43823c)
  • fix requirement declaration (e3923ee)
  • test against 0.5.1 (0aca52e)

Code Refactoring

  • drop python 3.6 support (0d81998)

Miscellaneous Chores

0.6.4 (2022-09-11)

Bug Fixes

  • stub out Dialect#get_indexes for now (1d450ab)
  • use real fetchmany now it's available (06400b4)

Dependencies

  • bump locked duckdb version (1a83643)

0.6.3 (2022-09-08)

Bug Fixes

  • add schema support to get_view_names (b58bf32)
  • correct get_view_names for older sqlalchemy (b58bf32)
  • repin duckdb & poetry (#400) (4586852)

0.6.2 (2022-08-25)

Bug Fixes

  • fix bleeding edge duckdb for exceptions changes (f955264)

0.6.1 (2022-08-23)

Bug Fixes

  • support boolean and integer config values (4a2c639)

0.6.0 (2022-08-21)

Features

  • allow preloading of extensions (13a92e1)

Documentation

  • document preload_extensions config parameter (c0f2a99)
  • link to example of IPython-SQL usage (96e8bdf)

0.5.0 (2022-08-19)

Features

  • support unsigned integer types (a69a35b)

Bug Fixes

  • try to fix poetry installation in workflow (db21892)

Documentation

  • mention unsigned integer support in README (4e403cb)

0.4.0 (2022-08-15)

Features

  • switch to first party sqlalchemy stubs (cf9f626)

Bug Fixes

  • support ping on latest sqlalchemy (bd63122)

0.3.4 (2022-08-12)

Bug Fixes

  • disable comments in dialect (96cca1c)
  • restore mypy checking to github builds (b252679)

0.3.3 (2022-08-06)

Bug Fixes

  • add code coverage reporting (019b61c)
  • add documentation and test for duckdb config (f3e577a)
  • correct dialect error lookup for bleeding edge (0e04d02)

0.3.2 (2022-08-05)

Bug Fixes

  • unpin numpy for python 3.6 (3e87509)

0.3.1 (2022-08-05)

Bug Fixes

0.3.0 (2022-08-02)

Features

  • use SingletonThreadPool for :memory: connections (58ef77a)

0.2.0 (2022-07-03)

Features

  • add missing apilevel and threadsafety attributes on duckdb DBAPI (bc413a3)
  • add release-please config (6e9a2d7)
  • add support for Binary (8235377)
  • enable relationship integrity (f41bd10)
  • improve release script (bcb17bf)
  • override driver name (1a7bb4e)
  • strip comments from generated sql (66265a2)
  • warn when we find comments in the ddl (5b27a7f)

Bug Fixes

  • enable updating of existing models (14a4d5f)

0.1.12a0 (2022-06-23)

Features

Chores

Version bumps