Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Reuse arrangements for FULL reads in occurrence-bound runs

Closed
#2,123 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
22/100
Issue type
Refactor
Clarity
Mostly clear
Activity status
Active
Tech stack
c

Research direction

Start by profiling the insert route with the overlapping CSPA workload to confirm how much time goes to rebuilding join hashes. The skip logic is in wirelog/columnar/join.c near lines 1356, 1769 and 1818, reached from wl_columnar_eval_tdd_run_bound_slice_begin() in wirelog/columnar/eval.c. Done means the arrangement-staleness test passes, the insert route takes at most half the full evaluation time at W=1 with identical tuple counts, and the three named tests stay green.

Written by the indexing model from the issue text.

Description

enhancement

Summary

The occurrence-bound runner used by the #2114 insert route (wl_columnar_eval_tdd_run_bound_slice_begin(), wirelog/columnar/eval.c; join paths in wirelog/columnar/join.c) skips the arrangement and materialisation caches whenever sess->tdd_input_run is set (join.c around lines 1356, 1769, 1818). So every FULL read of a large relation -- a recursive head or a big EDB relation -- rebuilds its join hash in every instance and every round. With overlapping CSPA inserts the insert route takes 2.2-2.3 s (see #2122); these rebuilt hashes are a likely large part of that, though the split has not been profiled yet -- profiling it is the first step.

Proposed change

Let a bound FULL read of a registered, unpartitioned coordinator relation reuse that relation's primary arrangement (or build it once per round and share it across the round's instances), keyed by the relation's view and storage generation so a head that changed at the end of the previous round is never read through a stale index. DELTA reads keep building their own.

Acceptance

  • Arrangement-staleness test: an instance in round i+1 joining against a head that gained rows at the end of round i sees those rows.
  • The overlapping-insert CSPA measurement at W=1 improves measurably (target: insert route at most half the full evaluation's time), with identical tuple counts.
  • tests/test_tdd_insert_run.c, tests/test_tdd_insert_stratum.c, tests/test_incremental_snapshot_recursive.c stay green; no change for the #1984 manifest forms.
Dominant language
C
Stars
18
Forks
2
Avg merge
9h 48m
Merged PRs (30d)
165

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from semantic-reasoning/wirelog

All issues in semantic-reasoning/wirelog

Similar issues

More C issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.