You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is one ticket in a series carrying forward #12 foundation work. Read #12 first for repo context.
The fork went through ten review cycles (R1–R11) and accumulated a substantial set of correctness, atomicity, and overflow-safety fixes. Some are tied to specific feature workstreams and travel with those tickets (#17/#18/#19/#20). The ones that don't have a clear home — generic safety net improvements — live here.
This ticket exists so the safety improvements don't get lost when the feature tickets are extracted into focused PRs.
Reference branch
ducklake-features/integration — search commit log for R10-S-* and R11-S-* prefixes. Read docs/2026-03-03-retrospective-r1-r5.md and docs/2026-03-05-retrospective.md for the design intent.
Specific fixes to port (verify each is still applicable after #12 rebase)
Numbered by their R*-S-* reference in the branch commit log:
R10-S-007 — wrap append-mode file registration in a transaction
R11-S-010 — reject NaN/Inf in compaction delete_threshold (compaction is dropped; the NaN/Inf check pattern may still apply to other float inputs — audit)
R11-S-012 — include nullability in schema equality check across all backends
R11-S-015/017/029 — resolve unstable as_str() and unused import warnings; extract shared Parquet write helper for UPDATE/MERGE; as_ref() instead of unstable as_str() in SQLite inlined data
The remaining fixes (R10-S-007, R11-S-007, R11-S-012, R11-S-018, R11-S-021, R11-S-022, R11-S-025, R11-S-028, R11-S-030) don't belong to a single feature ticket — port them here.
Acceptance criteria
Each fix in the list above is either confirmed present (via test or code grep) or ported in this PR
Context
This is one ticket in a series carrying forward #12 foundation work. Read #12 first for repo context.
The fork went through ten review cycles (R1–R11) and accumulated a substantial set of correctness, atomicity, and overflow-safety fixes. Some are tied to specific feature workstreams and travel with those tickets (#17/#18/#19/#20). The ones that don't have a clear home — generic safety net improvements — live here.
This ticket exists so the safety improvements don't get lost when the feature tickets are extracted into focused PRs.
Reference branch
ducklake-features/integration— search commit log forR10-S-*andR11-S-*prefixes. Readdocs/2026-03-03-retrospective-r1-r5.mdanddocs/2026-03-05-retrospective.mdfor the design intent.Specific fixes to port (verify each is still applicable after #12 rebase)
Numbered by their
R*-S-*reference in the branch commit log:checked_mulfor timestamp unit conversions (tracked under Type system & inlined-data parsing (merge with upstream overlap) #23)saturating_addfor null count accumulation (tracked under Type system & inlined-data parsing (merge with upstream overlap) #23)as_ref()instead of unstableas_str()in SQLite inlined datai32::try_fromfor Date32 num_days (tracked under Type system & inlined-data parsing (merge with upstream overlap) #23)10i128.pow()overflow (tracked under Type system & inlined-data parsing (merge with upstream overlap) #23)checked_addfor delete_filter row_offset arithmeticlist_all_columnscompare_exchangeto prevent double-install race (was tied to compaction; pattern may still apply elsewhere)table_id.unwrap()with proper error innext_entity_idScope
Acceptance criteria
docs/2026-03-07-snapshot-awareness-audit.mdon the branch) findings all addressed in codeduckdbcrate imports addedDependencies
Out of scope
Notes
docs/describe each finding's rationale. Read the relevant doc before porting any non-obvious fix.