8000 streaming engine 2/9: operator core, Scan and oracle harness (#473) · Issue #544 · project-minigraf/minigraf · GitHub
[go: up one dir, main page]

Skip to content

streaming engine 2/9: operator core, Scan and oracle harness (#473) #544

Closed

Description

@adityamukho

Part 2 of 9 of #473. Design: docs/superpowers/specs/2026-10-11-streaming-engine-design.md (branch docs/473-streaming-engine-spec), §5, §6.1, §6.3, §9.

  • Internal Batch (1,024 rows, columnar, plan-time variable slots) and Cell (Eid/Iid/Val), provisional ids for pending entities and idents
  • Scan over EAVT/AEVT/AVET/VAET with net-assert on keys and temporal pushdown, merging committed and pending facts; folds in perf: attribute+value patterns scan the whole attribute; AVET index is never read #518 (rebase perf/518-avet-lookup)
  • Filter/Expr, Project (id→value only for rows returned; folds in perf: committed scans look up every entity id in the DICT tree #530), Limit/Offset with clo 8000 se propagation
  • Planner v1 producing operator trees; single-pattern queries run on the new engine
  • Old executor kept as a test-only oracle; differential runs over the model-based, property, golden-corpus and integration suites
  • Cross-kind matching rules (§5.4) pinned by oracle tests
  • Pseudo-attributes (:db/valid-from, :db/valid-to, :db/tx-count, :db/tx-id) as Meta columns of Scan (§5.5)
  • Provisional ids assigned lazily per cursor; counted as query state

PRs for this part target v3 and must not use a closing keyword for #473.

Activity

  1. added this to the v3.0.0 milestone on Oct 11, 2026
  2. added
    enhancementNew feature or request
    rustPull requests that update rust code
    performanceBenchmark performance regressions
    on Oct 11, 2026
  3. adityamukho commented on Oct 14, 2026

    @adityamukho
    CollaboratorAuthor

    PR 1 of 3 merged (#588): key-level reads, Scan, Project, planner v1 for single plain patterns, oracle + CI job. Plan: docs/superpowers/plans/2026-10-14-544-operator-core.md. Limit/Offset move to #306 (no syntax reaches them before then); close propagation stays here (PR 3).

  4. adityamukho commented on Oct 14, 2026

    @adityamukho
    CollaboratorAuthor

    For PR 2 (plan step 9, cross-kind constants): reuse from the parked branch perf/518-avet-lookup (fe545dc) rather than rewriting:

    • keys::attribute_kind_prefix (with ValueKind) and keys::attribute_string_prefix;
    • the cross-type cases added to tests/live_reads_test.rs (keyword↔ref, UUID↔keyword, floats, :as-of, retractions, reopen), ported as engine tests.

    Not its executor changes (selective_fact_fetch, Scan::AttributeValue/AttributeKind): the executor stays unchanged as the oracle (plan decision 8). git diff a16f385d fe545dc1 -- src/storage/keys.rs src/storage/mod.rs tests/live_reads_test.rs.

    Delete perf/518-avet-lookup (local and origin) once #544 is closed.

  5. adityamukho commented on Oct 14, 2026

    @adityamukho
    CollaboratorAuthor

    Done on v3 in three PRs: #588 (operator core, Scan, Project, oracle; #518 folded in), #590 (Filter/Bind, pseudo-attributes, cross-kind constants), #591 (lazy cursor, close and counters, envelope measurement). Docs site: project-minigraf/minigraf-docs#16. Limit/Offset moved to #306. Attribute scan at 10M facts: 458 → 7 MiB peak RSS, 3.12 → 2.59 s; point queries unchanged. Next: #545.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestperformanceBenchmark performance regressionsrustPull requests that update rust code

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      0