Read an integer box operand at the width its registration declares - #365
Merged
estebanzimanyi merged 1 commit intoSep 3, 2026
Merged
Conversation
tbox.test is disabled whole-file, and its own comment names the follow-up that re-registers the bindings with correct argument types. That follow-up is what this carries, so the file runs again: the suite goes from 2695 assertions to 2795, and the hundred it gains are the ones nobody was running. THE WITNESS. Six executors read an INTEGER operand as int64_t. Their branch is entered only when the vector is INTEGER, and the lambda beneath them applies Int32GetDatum, so both the registration and their own use say 32 bits; reading 64 takes a second word from a 32-bit vector. DuckDB 1.4 refuses it outright: SELECT tbox(10, timestamptz '2000-01-01'); INTERNAL Error: Expected vector of type INT64, but found vector of type INT32 Before that release the same read was undefined and silent, which is what let the whole file be disabled rather than the six sites corrected. The file holds no BIGINT branch at all — 0 against 8 DOUBLE ones — so every INTEGER branch is a 32-bit path and all six reads are the same defect. THE EXPECTED VALUES MOVE IN TWO WAYS, AND ONLY ONE IS A ZONE. The timestamps gain +01 because MobilityDuck initialises MEOS with Europe/Brussels and states why: a zone that differs from UTC fails loudly if the override is ever dropped, where UTC would pass trivially. tools/scripts and the sibling files already read that way, and `SET TimeZone` does not reach MEOS text output. Two adjacency results move from 0 to 1, and those are not a zone: `-|-` answers whether closures meet at a boundary, so a shared inclusive endpoint IS adjacency. Both moved rows are boundary-meets — [2000-01-02, 2000-02-01] against [2000-01-01, 2000-01-02], and the two spans meeting at 2000-01-02 — and every other topology file took that flip when the rule landed. This file was skipped through it and is the last one still asserting the rule it replaced. MEASURED. The full suite passes, 2795 assertions across 102 cases, with the six executors corrected and no other file's expectations touched. Skipped blocks across the suite go 18 to 15, and tbox.test holds none.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
tbox.test is disabled whole-file, and its own comment names the follow-up that
re-registers the bindings with correct argument types. That follow-up is what
this carries, so the file runs again: the suite goes from 2695 assertions to
2795, and the hundred it gains are the ones nobody was running.
THE WITNESS. Six executors read an INTEGER operand as int64_t. Their branch is
entered only when the vector is INTEGER, and the lambda beneath them applies
Int32GetDatum, so both the registration and their own use say 32 bits; reading
64 takes a second word from a 32-bit vector. DuckDB 1.4 refuses it outright:
SELECT tbox(10, timestamptz '2000-01-01');
INTERNAL Error: Expected vector of type INT64, but found vector of type INT32
Before that release the same read was undefined and silent, which is what let
the whole file be disabled rather than the six sites corrected. The file holds
no BIGINT branch at all — 0 against 8 DOUBLE ones — so every INTEGER branch is
a 32-bit path and all six reads are the same defect.
THE EXPECTED VALUES MOVE IN TWO WAYS, AND ONLY ONE IS A ZONE. The timestamps
gain +01 because MobilityDuck initialises MEOS with Europe/Brussels and states
why: a zone that differs from UTC fails loudly if the override is ever
dropped, where UTC would pass trivially. tools/scripts and the sibling files
already read that way, and
SET TimeZonedoes not reach MEOS text output.Two adjacency results move from 0 to 1, and those are not a zone:
-|-answerswhether closures meet at a boundary, so a shared inclusive endpoint IS
adjacency. Both moved rows are boundary-meets — [2000-01-02, 2000-02-01]
against [2000-01-01, 2000-01-02], and the two spans meeting at 2000-01-02 —
and every other topology file took that flip when the rule landed. This file
was skipped through it and is the last one still asserting the rule it
replaced.
MEASURED. The full suite passes, 2795 assertions across 102 cases, with the
six executors corrected and no other file's expectations touched. Skipped
blocks across the suite go 18 to 15, and tbox.test holds none.