From b20d9bfb68b5a1c9717432313e8016e8dd2ec7e6 Mon Sep 17 00:00:00 2001 From: Nathaniel Ramm Date: Tue, 18 Aug 2026 22:54:42 +1000 Subject: [PATCH] chore(registry): track ibis-sqlite NaT memtable-binding bug (IB-DT-19) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _register_in_memory_table stages sqlite memtables via a pandas roundtrip (op.data.to_frame()); null date32/timestamp values become pandas NaT, which sqlite3 cannot bind. Crashes create_table/insert for any frame with a null temporal value. Discovered downstream in mountainash-data (DEBT-13). status: needs_filing, zero-ref-OK per the join contract — no upstream ibis issue exists yet. --- registry/upstream-issues.yaml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/registry/upstream-issues.yaml b/registry/upstream-issues.yaml index 61e73c10..e933b6ba 100644 --- a/registry/upstream-issues.yaml +++ b/registry/upstream-issues.yaml @@ -2089,3 +2089,29 @@ issues: CapabilityFact (whole-op, WILDCARD_PARAM) for the Narwhals backend (backlog item 86, 2026-08-13). last_verified: '2026-08-13' +- id: IB-DT-19 + project: ibis + category: datetime-ops + summary: SQLite backend memtable registration crashes on null date/timestamp + values (NaT binding) + root_cause: upstream_bug + affected_backends: + - ibis-sqlite + upstream_issue: null + upstream_issue_filed_by: null + status: needs_filing + our_workaround: none + notes: _register_in_memory_table (ibis/backends/sqlite/__init__.py) stages + memtables via op.data.to_frame() (a pandas roundtrip). A null date32 or + timestamp value becomes pandas NaT, which sqlite3 cannot bind — crashes + create_table/insert for any frame containing a null temporal value. + Verified empirically 2026-08-18 against ibis 12.0.0 — raw pyarrow.Table + sources are incidentally safe for date columns only (PyArrow's + Table.to_pandas() defaults date_as_object=True, so a null date32 becomes + Python None, not NaT) but not for timestamp columns; polars/pandas + DataFrame sources crash for both date and timestamp columns (their own + to_pandas() maps Date to datetime64 directly). Discovered downstream in + mountainash-data (DEBT-13), not via mountainash's own cross-backend probe + suite — mountainash itself does not yet have a CapabilityFact/DivergenceFact + exercising this path. + last_verified: '2026-08-18'