Repository navigation
Added
refresh.merge_max_fraction(default 0.25): an incremental table's change set is counted in the source
before it is staged, and above this share of the table's rows the table is copied whole instead of
merged. A customer (2026-11-03): a dbt--full-refreshrestamped every row of three models, the
watermark filter selected 100% of them, and the resultingMERGE ... UPDATEof a 6.25M-row table ran
GizmoSQL out of memory (7.4 GiB) every hour for a day, while a whole copy of the same table takes a
minute.
Fixed
-
DuckDB source: columns of type
TIMETZ,BITorBIGNUM(alone or nested, e.g.TIMETZ[]) are refused
at plan time, naming each column, unless they are masked or excluded. DuckDB's Arrow export changed their
values without an error:TIMETZarrived asTIMEwithout its UTC offset,BITandBIGNUMas their
internal bytes. Copy them as text withmask: {COL: {strategy: expression, sql: "CAST({column} AS VARCHAR)"}},
or exclude them. A view with such a column is no longer materialized byviews.on_failure: materialize
unless it is masked the same way. -
DuckDB source: tables and views in a DuckDB file's
mainschema were never listed, sodb_schemas: [main]
copied nothing (the plan only warned that the pattern matched no db_schema). DuckDB flagsmainas an
internal schema, likeinformation_schema, and internal schemas were left out.