test: native acceptance run for range-independent field binding (#914) - #938
Merged
Merged
Conversation
Port the reproducer that came with the field report against 26.09.1 to a native acceptance script in the style of compaction_cycle_acceptance.py: no containers, loopback only, standard library only. It spawns the arc binary and drives the Line Protocol, query, schema and compaction APIs. Scenarios: a late field inside one day (before and after daily compaction, with the compaction-enabling restart the report used), a field first written 59 days after the earlier day was compacted (March compacts as a separate candidate without rewriting January), a field that stops being written, and restarts. The restart phase turns query.stable_schema off and requires the 26.09.1 Binder Errors back, so the assertions are shown to observe the feature. Every NULL is checked with typeof, an unknown field must still fail to bind, and SELECT * must have the same columns over every range. Passes on main with four planned process starts; the 26.09.1 release binary fails at the first narrow-range assertion.
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.
Summary
Ports the reproducer that came with the field report behind #914 to a native acceptance script,
scripts/range_schema_acceptance.py, in the style ofscripts/compaction_cycle_acceptance.py: no containers, loopback only, Python standard library only. It spawns thearcbinary and drives the Line Protocol, query, schema and compaction APIs.docs/testing/range-schema-26.09.2.mddocuments the run, and the #914 release notes entry points at it.Scenarios
stable, eleven addinglate_only. The narrow hour bindslate_onlyas a BIGINT NULL before and after daily compaction, with the compaction-enabling restart the report used, and every observation is identical across the compaction.weeks_laterexists nowhere (Binder Error), March introduces it and compacts as a separate candidate without rewriting the January output. January-only then binds it as a BIGINT NULL, the span groups to 0 of 12 and 12 of 12,COALESCEandtry_castbehave, andSELECT *has the same columns over the span and over January alone.retired_field.query.stable_schema = falsethe narrow projections are Binder Errors again and January-onlySELECT *loses the column, which is the 26.09.1 behavior and proves the assertions observe the feature. Restarting with the default reads the stored anchors back.An unknown field must still fail to bind in every scenario.
Results
late_onlyabsent from the early-rangeSELECT *).Review notes
An independent pass over the script found five weak spots that are fixed here: the empty-range check goes through the pre-existing whole-measurement fallback (now labelled as such), NULLs are now checked with
typeof, the disabled-feature control now also shows theSELECT *column set depends on the feature,daily_skip_file_age_check_daysis set explicitly with a comment, and candidates are matched by measurement and partition path rather than by count.Part of the 26.09.2 work on #914.