Doc: insert executor and incremental consolidation leave sorted runs, not globally sorted heads
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 1/5
- Estimated time
- Under an hour
- Newbie friendliness
- 83/100
- Issue type
- Documentation
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- c
- Domain
- documentation
Research direction
Read the comments for wl_columnar_eval_tdd_insert_stratum() in wirelog/columnar/internal.h and col_op_consolidate_incremental_delta in wirelog/columnar/merge.c. Compare their claims with the described run_count/run_ends metadata and sorted-run behavior. Update both comments to state the acceptance criterion: rows are unique and stored in sorted runs, or fully sorted when run_count == 0.
Written by the indexing model from the issue text.
Description
Summary
Two comments promise that a head relation ends in globally sorted order. It does not: incremental consolidation keeps the relation's rows as up to COL_MAX_RUNS independently sorted, unique runs (run_count / run_ends, #369). The rows are unique, but their stored order is sorted only within each run.
wirelog/columnar/internal.h, doc ofwl_columnar_eval_tdd_insert_stratum()(#2114): "Each head ends sorted and unique".wirelog/columnar/merge.c, header ofcol_op_consolidate_incremental_delta: POSTCONDITIONS "rel->data[0..rel->nrows) is sorted and unique (new invariant)". The same header's ALGORITHM section describes the binary-search path that maintains "tiered sorted runs".
How it shows
While writing tests/test_tdd_insert_oracle.c (#2120), a check that each admitted head's rows are in non-decreasing stored order failed after wl_columnar_eval_tdd_insert_stratum(). The failures were on andersen pointsTo, csda nullNode, galen outP, tc tc and polonius subset. In each, a sorted prefix was followed by rows that sort before it, for example tc on bench/data/graph_100.csv: ... (98 100) (99 100) (1 97) (2 97) .... In every case the rows were unique and equal to a full evaluation. The test now checks uniqueness on a sorted copy instead.
Proposed change
Reword both comments to the actual invariant: unique, stored as sorted runs that run_count/run_ends describe (or fully sorted when run_count == 0). No code change. If any caller relies on global stored order rather than on the run metadata, that is a separate defect; none was found in this investigation.
Acceptance
- Both comments state the run invariant instead of global order.
- Dominant language
- C
- Stars
- 18
- Forks
- 2
- Avg merge
- 6h 50m
- Merged PRs (30d)
- 243
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from semantic-reasoning/wirelog
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
semantic-reasoning/wirelog#2042 ·
Maintainers usually reply within 1 day
-
p2-medium
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
semantic-reasoning/wirelog#1914 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 35/100
semantic-reasoning/wirelog#2209 ·
Maintainers usually reply within 1 day
-
Differential JOIN reads out of range for a nonempty nullary keyed leftPossibly taken @justinjoy claimed this today. Openbug
Difficulty 4/5 1-2 days Newbie friendliness 54/100
semantic-reasoning/wirelog#2202 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
semantic-reasoning/wirelog#2201 ·
Maintainers usually reply within 1 day
All issues in semantic-reasoning/wirelog
Similar issues
-
os:linux
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
mpv-player/mpv#18649 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
facebookincubator/muse-gadget-sdk#249 ·
Maintainers usually reply within 1 day
-
docs: nng_dial / nng_dialer_start can return NNG_ECONNSHUT and NNG_ECRYPTO, which are not documentedOpen
Difficulty 1/5 1-3 hours Newbie friendliness 89/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
micropython/micropython#19786 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
vercel-labs/zerolang#442 ·