diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index 6d29b5806..5990fde3d 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -1,3 +1,145 @@ +## 2026-09-16 (15) — E-THE-SPINE-IS-WHATEVER-THE-READER-ALREADY-HAS-AN-ADDRESS-FOR-1 — the operator's quack redirect, and the four errors of one session that all substituted an address for the thing + +**Status:** OPERATOR-RULED (the redirect, verbatim below) + MEASURED (the census +numbers, re-run over the whole tree after codex's review of #1240). +**Confidence:** HIGH on the census — the corpus mechanism is now a directory +walk, so the number is a property of the tree rather than of a file list I +chose. The spine ruling is the operator's; it is recorded, not derived. + +### The redirect, in the operator's own four messages + +> *"cypher is just a cheap proof of concept / and an even better proof of +> concept is quack"* → *"my point is quack is the spine you need to rebuild +> from"* → *"any graph traversal in the end will be a modified version of it / +> any SPOG query will be just another flavor / and the benefit is quack / +> duckdb no AI will ever ask what it is, you can use muscle memory"* → +> *"everything else is running in circles around whats not in your training"*. + +**The argument is muscle memory, not elegance, and reading it as elegance is +how it gets lost.** `lance_graph_quack::Query { filter, agg }` — filter a +population, reduce over the survivors — is a shape every reader, every author +and every model already holds without being taught. A novel IR has to be taught +to each of them, every time, and the teaching cost recurs on every future +session. That is the same test the Java surface passes one tier down +(lance-graph-java `CLAUDE.md` § *THE JAVA SURFACE IS `sql()`*): the boring front +wins because nobody has to learn it, not because it is nicer. + +The last message is the mechanism behind the other three, and it is the one +worth keeping: **circling is the symptom of building on what is not in +training.** Work that re-derives its own vocabulary every session does not +accumulate — each session pays the teaching cost again and mistakes paying it +for progress. + +### What it cancels, stated plainly because I had it queued + +The Cypher→mask lowering (`.claude/plans/cypher-mask-lowering-v1.md`, Wave 1) +would have been a **third** lowering onto one floor — beside quack's `lower` +and `lgj-abi`'s `plan_eval`, both already pinned equal to `lance-graph-mask-risc` +by a differential. Three dialects, one evaluator, and two of them novel. + +quack's one missing leg is the **hop** (`src_mask → edge lane → dst_mask`). That +is one brick, and it makes SPOG a *flavour* of a shape that already exists +rather than a fourth thing to learn. It is now the recommended next brick +(task #10 / PR5), where before it was gated behind PR1-4. + +### The census defect — same shape, and self-inflicted on the day the rule landed + +`w0b_corpus_census` was built to answer §7.0's STOP gate: what fraction of the +Cypher the tree actually contains lowers to a mask. Its first corpus was a +**hand list of three files**, chosen from a grep — and a grep structurally +cannot see a query built as a raw string literal. codex flagged it on #1240. + +| | corpus | classified | Full (mask-lowerable) | +|---|---|---|---| +| as first reported | 3 files, hand-listed | 20 | 15 — **75.0 %** | +| after a quote-parity fix | same 3 files | 50 | 23 — **46.0 %** | +| after review: directory walk | **33 files** of 1451 walked | **303** | 113 — **37.3 %** | + +The corpus grew **17×** and the headline halved. The root cause is named in +this repo's own P0 rule — *grep FINDS, reading DECIDES* — which was written +into `CLAUDE.md` **the same day**. Writing a rule is not the same as being +immune to it. + +**And the file count in that last row was itself wrong when first published — +`27`, corrected here to `33`.** A second review pass found that the census +kept only the FIRST source per query literal, so a file whose every query also +appeared elsewhere vanished from the provenance entirely. The classification is +untouched by it (342 candidates, 303 classified, 113 Full, 37.3 % — all +unchanged; dedup by literal was always right, only the attribution was not). + +The uncomfortable half is that **the repo already held the right number**: the +census's own module doc said *33 files* while the program it documents printed +*27*, in the same commit, and I quoted whichever was nearer to hand — the doc's +33 into the source, the program's 27 into the plan and into this entry. Nothing +flagged it, because neither number is wrong-looking on its own. Third instance +in one session of two values for one quantity (see also G-F, whose summary row +contradicted its own document's body four sections above it). + +Three classifier defects rode in with the fix (inline pattern properties never +read, 4 maps → 53 hits; `DISTINCT`-over-a-value never firing, 37 hits; and +`run.sh`'s `|| true`, which let a failed harvest leave stale TSVs to be counted +while `provenance.txt` already carried the new commits — a clean exit reporting +old measurements against a new checkout). + +### The four errors of this session share ONE shape + +| what I substituted | for what | +|---|---| +| a grep pattern | the corpus | +| a section number and a symbol name | the argument (operator: *"reverse grep… pattern matching that doesnt make any context for me"*) | +| a stale 46 % | a decision I asked the operator to make (withdrawn — 0 of 303 fail to lower, so no ruling was ever needed) | +| an A/B/C fork I raised as open | a ruling `cypher-mask-lowering-v1` §5.2 had already made | + +**An address is not the thing.** Each one is cheap to produce and looks like +work. And the redirect above is the positive form of the same insight: build on +the spine the reader already has an address for, because a novel IR is an +address nobody can resolve. + +Operational consequence, and it is the cheap half: **plain words first; the +symbol, file and section go at the END, as receipts.** A report that opens with +`§5.2 / TERNLOG 0x86 / D-MAR-2` has told the reader nothing they can act on. + +### The three rulings that came with it + +**Alpha channel first, and the reason is not sequencing convenience.** Operator: +the SPOG alpha channel *"affects the underlying storage and table 'multitenant' +access… writing to alpha split tunnel without changing ontologies itself as +saccade focus of attention sparse write and meta awareness of simultaneous +rung"*, where *"before it was 10 rung not talking to each other despite +kanban_actor.rs or deprecated 'one at a time'"*. Three things are being bought: +a write path that does not rewrite the shared ontology (which is what makes +concurrent attention safe); a channel property rather than a consumer +convention; and **simultaneous rungs** — levels of thinking interact, and +interaction requires the priors to sit on the same level. So any second consumer +of `ogar_loco::TERNLOG = 0x86` inherits whatever simultaneity contract the alpha +channel establishes first. `cypher-mask-lowering-v1` §5.2's OQ-9 said "defer +rather than race"; this says *why* deferring is correct rather than merely +polite. + +**`RevisionKind` lives beside `belief.rs`.** Operator: *"belief is historically +correct but needs to be adjusted for proper wiring"* — so the planner, not the +contract (option A of `mask-algebra-revision-read-v1.md` §5 Q1). The history is +right; the wiring is the work. The adjustment is that plan's **D-MAR-2**. + +**The 46 % question is withdrawn, not answered.** Operator: *"46% negligable how +do i know what you are talking about"* — a fair hit twice over. I asked for a +ruling on a word from a plan the operator did not write, without supplying what +anyone would need to judge it; and the number had already moved to 37.3 % (see +the table above). Re-reading the census, **0 of 303 queries fail to lower** — +Split is a two-stage plan, not a failure — so there was never a ruling to make. + +### Receipts + +- Plan: `.claude/plans/lance-graph-as-the-modelgraph-v1.md` §§14-18 (the mindset + check, the census, `LabelDTO` as the answer to OQ-1, the rulings, the redirect). +- Instrument: `crates/lance-graph/examples/w0b_corpus_census.rs` — the corpus is + now `rust_sources()`, a walk, so the denominator is the tree's property. +- Gate discipline, second measured instance: `SUPERSESSION-INDEX.md` was + regenerated BEFORE these board writes and went red at four successive SHAs on + #1240 — exactly the failure `CLAUDE.md` § *Regenerate LAST, after the board + writes* already records from #1085. The rule is right; it needs to be executed + in the order it states. + ## 2026-09-16 (14) — E-THE-NET-ARM-RANKED-ON-A-PARTIAL-SUM-AND-ITS-ONLY-APPARENT-SIGNAL-WAS-THAT-BUG-1 — entry (13)'s NET row is re-measured; the arm is a census on BOTH arms, not one **Status:** MEASURED — re-run of `D-HXP-8` arm 1 after a one-line ranking fix in diff --git a/.claude/board/INTEGRATION_PLANS.md b/.claude/board/INTEGRATION_PLANS.md index 6461c4857..c9558b00b 100644 --- a/.claude/board/INTEGRATION_PLANS.md +++ b/.claude/board/INTEGRATION_PLANS.md @@ -1,3 +1,33 @@ +## 2026-09-16 (1) — lance-graph-as-the-modelgraph-v1 — the ModelGraph stops being a transient Rust object and becomes addressed rows in the V3 SoA → `.claude/plans/lance-graph-as-the-modelgraph-v1.md` + +**Status:** PROPOSAL (operator-set endgame: *"endgame should be to wire +lance-graph as ModelGraph"*). No code. The document is a SURVEY whose point is +that the chain is **already built except one step**: `ruff_cpp_spo::extract_tree` +→ `ruff_spo_address::mint` (16 B, byte-identical to `FacetCascade`, **no +dependency edge**) → `ogar-from-ruff::mint` → `lance_sink` → `as_le_bytes()`, +all live and unstubbed, stopping at a `Dataset::write` that `lance_sink.rs` +names out of scope in its own words. G-C is that write. + +The direction is FORCED, not chosen: no ruff crate may compile against +lance-graph (verified — `lance.graph` appears in `ruff/crates/*/Cargo.toml` +only inside two `description =` strings), so the spine can only be the HOME, +fed across a byte boundary. Matches `assembler-vs-storage-substrate.md`. + +Confirms two operator recollections and corrects a third: **two codegen arms** +are `ruff_cpp_codegen` (→ Rust `MethodSig` source) and `ruff_spo_address` (→ the +`(part_of:is_a)` rank-mint) — NOT `ruff_python_codegen`, which is upstream +ruff's `Generator`/`Stylist`. **arm-discovery is the table→SPO arm** exactly as +described (`translator.rs`: ARM confidence → NARS frequency, evidence `m` → +`m/(m+k)`, canonical `TruthU8` = the `CausalEdge64` wire), and it already names +`ruff_spo_triplet::Triple` as its downstream. **JSONML does not exist** in any +of the five repos. + +Carries G-A..G-E and waves W1-W4, each with a falsifier. G-E is the +uncomfortable one and is independent of the endgame: **quack has no DuckDB in +its loop at all** — zero dependency, every "DuckDB" in it a doc comment, its +oracles hand-written Rust. What is called parity today is quack ↔ its own +oracle; task #8's DuckDB differential fixtures remain unstarted. + ## 2026-09-14 (4) — hexagon-plasticity-v1 — can six learned rails discover local adjacency, and can ARM promote a cue to a path? → `.claude/plans/hexagon-plasticity-v1.md` **Status:** ACTIVE (W-1 and W0 RUN before landing; §9 carries their results and diff --git a/.claude/board/SUPERSESSION-INDEX.md b/.claude/board/SUPERSESSION-INDEX.md index bb9b9ce47..f1aac5507 100644 --- a/.claude/board/SUPERSESSION-INDEX.md +++ b/.claude/board/SUPERSESSION-INDEX.md @@ -14,7 +14,7 @@ ## What this table says **`BindSpace` is the shape of the problem.** Marked RETIRE, and simultaneously the -most-referenced symbol here: **68 crate files, 47 plans, 41 of them blind.** +most-referenced symbol here: **68 crate files, 48 plans, 42 of them blind.** That is a programme, not a cleanup. **`GateState` is the sharpest case: 1 plan names it and *every one* is blind.** @@ -60,11 +60,11 @@ coverage instead. | `GateState` | REPURPOSE | — | 14 | 1 | 1 | | `MergeMode` | REPURPOSE | — | 8 | 14 | 13 | | `ResonanceDto` | REPURPOSE | `PerturbationDto` | 2 | 12 | 7 | -| `BindSpace` | RETIRE | — | 68 | 47 | 41 | +| `BindSpace` | RETIRE | — | 68 | 48 | 42 | | `CollapseGateEmission` | RETIRE | — | 5 | 14 | 12 | | `ThinkingStyle` | RETIRE-toward-contract | — | 52 | 28 | 24 | -## Table 2 — plans naming a ruled symbol without citing the ruling (75) +## Table 2 — plans naming a ruled symbol without citing the ruling (76) Route is **mechanical triage, not a verdict**: `ARCHIVE?` = the plan's own status says it shipped; `RESCOPE` = it targets a symbol marked RETIRE; `READ` = neither signal fires @@ -87,7 +87,7 @@ a licence to act on it. | **READ** | `graphrag-doc-retrieval-soa-integration-v1` | `GateDecision` | DESIGN + FIRST CODE. **v1.2 (2026-07-17):** | 7/10 | | **READ** | `hexagon-plasticity-v1` | `MergeMode` | ACTIVE — landed 2026-09-14 on operator go. * | 5/10 | | **READ** | `integration-actionhandler-rbac-orchestration-v1` | `GateDecision` | HARDENING (5+3 in progress). | 0/0 | -| **READ** | `mask-algebra-revision-read-v1` | `StepMask` | DRAFT, awaiting operator ruling on §5 | 2/3 | +| **READ** | `mask-algebra-revision-read-v1` | `StepMask` | DRAFT, awaiting operator ruling on §5 | 3/3 | | **READ** | `mul-calibration-not-verdict-v1` | `GateDecision` | PROPOSAL (unbuilt) — 2026-08-26. PLAN/BOARD | 6/12 | | **READ** | `mul-consumer-build-gate-v1` | `GateDecision` | GATE RUN — 2026-08-27. Discharges D-MCAL-6 a | 3/7 | | **READ** | `mul-consumer-census-v1` | `GateDecision` | MEASUREMENT COMPLETE — 2026-08-27. Measureme | 1/2 | @@ -141,6 +141,7 @@ a licence to act on it. | **RESCOPE** | `entropy-closure-causal-ground-v1` | `ThinkingStyle` | PROPOSAL (measured, unbuilt) — 2026-08-26. P | 3/8 | | **RESCOPE** | `foundry-consumer-parity-v1` | `BindSpace` | Active | 0/0 | | **RESCOPE** | `foundry-roadmap-unified-smb-medcare-v1` | `BindSpace` | Active | 0/0 | +| **RESCOPE** | `lance-graph-as-the-modelgraph-v1` | `BindSpace` | PROPOSAL (operator-set endgame, 2026-09-16). | 6/6 | | **RESCOPE** | `lf-integration-mapping-v1` | `BindSpace` | Active (2026-04-25) | 0/0 | | **RESCOPE** | `lite-unified-surrealql-lance-v1` | `BindSpace` | CONJECTURE / design. **Test via feature gate | 0/0 | | **RESCOPE** | `ogit-cascade-supabase-callcenter-v1` | `BindSpace` | plan, not implementation. | 0/16 | @@ -156,6 +157,6 @@ a licence to act on it. | **RESCOPE** | `unified-soa-rubikon-integration-v1` | `BindSpace` | — | 8/8 | - **ARCHIVE?**: 0 -- **RESCOPE**: 55 +- **RESCOPE**: 56 - **READ**: 20 - ruled symbols tracked: 14 diff --git a/.claude/harvest/duckdb-headers/README.md b/.claude/harvest/duckdb-headers/README.md index 6e02048e5..954f5cc68 100644 --- a/.claude/harvest/duckdb-headers/README.md +++ b/.claude/harvest/duckdb-headers/README.md @@ -156,3 +156,76 @@ ht_entry_t.SetPointer ht_entry_t.SetSalt ht_entry_t.ht_entry_t ``` + +--- + +## ⊘ §6 IS NOW DISCHARGED — the harvest is reproducible, 2026-09-16 + +The honesty note above says what was missing: *"The TSV is not committed, there +is no `args.txt` here, and no DuckDB source is in this tree."* All three are +fixed, and the fix is committed beside this file: + +| file | what it is | +|---|---| +| `run.sh` | the whole harvest, one command, `DUCKDB_SRC=… ./run.sh` | +| `headers.txt` | the ten headers, by path | +| `args.txt.in` | the clang args as a TEMPLATE — `@DUCKDB_SRC@` is substituted at run time, so the include paths are not pinned to one machine | +| `ore/**` | the 40 TSVs (4 per header), 348 K, committed | +| `ore/per-header.tsv` | the counts table, regenerated | +| `ore/provenance.txt` | DuckDB commit + origin + ruff commit + clang version | + +**The source is `AdaWorldAPI/duckdb`** (P0: the fork, never upstream — +`duckdb/duckdb` is correctly out of this session's scope and returns 403). +Read-clone: `GIT_LFS_SKIP_SMUDGE=1 git clone --depth 1 +https://github.com/AdaWorldAPI/duckdb /home/user/adaworldapi/duckdb`. + +### The counts, re-derived rather than quoted + +**Methods: 123 — an EXACT match with the table above, on every one of the ten +rows.** The recorded observation is confirmed reproducibly; it is no longer a +number quoting an absent TSV. + +Events land at **1620** against the recorded 1622, differing on four rows: + +| header | events now | recorded | Δ | +|---|---|---|---| +| `common_types_selection_vector` | 311 | 310 | +1 | +| `common_vector_operations_scalar_executor` | 281 | 286 | **−5** | +| `common_vector_unified_vector_format` | 7 | 6 | +1 | +| `execution_expression_executor_state` | 12 | 11 | +1 | + +**The cause is not determinable, and that is itself the point.** Methods match +exactly, so no method was added or removed — the deltas are inside bodies, +which is what source drift between two DuckDB checkouts looks like. The +2026-09-14 run recorded no commit, so there is nothing to diff against. That +is precisely the gap `ore/provenance.txt` now closes: every future run carries +`duckdb_head`, and a count without its commit is an anecdote. + +> **⚠ MY OWN HARNESS NEARLY PRODUCED A FALSE FINDING AGAINST THIS FILE.** The +> first `run.sh` subtracted a header row from each TSV before counting, and +> reported **115 / 1612** against the recorded 123 / 1622 — a clean, uniform +> −1 on every non-empty header, which reads exactly like "the earlier numbers +> were inflated." They were not. **Neither `methods.tsv` nor `events.tsv` has +> a header row**; line 1 of each is already data +> (`duckdb::TemplatedValidityData.EntryCount(idx_t)…`), so the raw line count +> IS the count. +> +> What caught it was the SHAPE of the disagreement: −1 on every non-empty +> header and 0 on the two empty ones is not how source drift behaves, it is +> how an off-by-one behaves. **A measurement harness is code and gets the same +> scepticism as the thing it measures** — this workspace's own rule that a +> null result is a claim about the apparatus until proven otherwise, applied +> to a counting script. The corrected rule is now stated at the counting site +> rather than assumed. + +### What this does NOT yet do — the structural arm is still unrun + +`harvest_events` is the BEHAVIOURAL arm (four TSVs of ordered method-body +events). `ruff_cpp_spo` also carries a STRUCTURAL arm that has never been +pointed at DuckDB: `extract_tree(root, args) -> ModelGraph` (`lib.rs:338`), +yielding `CppClass` / `CppFunction` / `CppEnum` with `has_function` / +`inherits_from` / `virtually_overrides` — the ClassView method-resolution +manifest — which then feeds `ruff_spo_triplet::reassemble` and +`ruff_cpp_codegen::{project, render}`. That is the arm that answers *what +DuckDB's operator class tree IS*, where this one answers *what one method +body does*. Running it on DuckDB is the next step, not a claim made here. diff --git a/.claude/harvest/duckdb-headers/args.txt.in b/.claude/harvest/duckdb-headers/args.txt.in new file mode 100644 index 000000000..b57dd05d2 --- /dev/null +++ b/.claude/harvest/duckdb-headers/args.txt.in @@ -0,0 +1,14 @@ +-x +c++ +-std=c++11 +-I@DUCKDB_SRC@/src/include +-I@DUCKDB_SRC@/third_party/fmt/include +-I@DUCKDB_SRC@/third_party/re2 +-I@DUCKDB_SRC@/third_party/fsst +-I@DUCKDB_SRC@/third_party/fastpforlib +-I@DUCKDB_SRC@/third_party/utf8proc/include +-I@DUCKDB_SRC@/third_party/concurrentqueue +-I@DUCKDB_SRC@/third_party/pcg +-I@DUCKDB_SRC@/third_party/tdigest +-I@DUCKDB_SRC@/third_party/mbedtls/include +-DDUCKDB_BUILD_LIBRARY diff --git a/.claude/harvest/duckdb-headers/headers.txt b/.claude/harvest/duckdb-headers/headers.txt new file mode 100644 index 000000000..192e0f178 --- /dev/null +++ b/.claude/harvest/duckdb-headers/headers.txt @@ -0,0 +1,10 @@ +common/operator/comparison_operators +common/operator/constant_operators +common/row_operations/row_matcher +common/types/selection_vector +common/types/validity_mask +common/types/vector +common/vector_operations/scalar_executor +common/vector/unified_vector_format +execution/expression_executor_state +execution/ht_entry diff --git a/.claude/harvest/duckdb-headers/ore/args.txt b/.claude/harvest/duckdb-headers/ore/args.txt new file mode 100644 index 000000000..ed809925e --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/args.txt @@ -0,0 +1,14 @@ +-x +c++ +-std=c++11 +-I/home/user/adaworldapi/duckdb/src/include +-I/home/user/adaworldapi/duckdb/third_party/fmt/include +-I/home/user/adaworldapi/duckdb/third_party/re2 +-I/home/user/adaworldapi/duckdb/third_party/fsst +-I/home/user/adaworldapi/duckdb/third_party/fastpforlib +-I/home/user/adaworldapi/duckdb/third_party/utf8proc/include +-I/home/user/adaworldapi/duckdb/third_party/concurrentqueue +-I/home/user/adaworldapi/duckdb/third_party/pcg +-I/home/user/adaworldapi/duckdb/third_party/tdigest +-I/home/user/adaworldapi/duckdb/third_party/mbedtls/include +-DDUCKDB_BUILD_LIBRARY diff --git a/.claude/harvest/duckdb-headers/ore/common_operator_comparison_operators/events.tsv b/.claude/harvest/duckdb-headers/ore/common_operator_comparison_operators/events.tsv new file mode 100644 index 000000000..fb2233303 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_operator_comparison_operators/events.tsv @@ -0,0 +1,39 @@ +duckdb::Equals.Operation(const interval_t &,const interval_t &) 0 ScopeEnter s0 - c0 - 7900 - - walk +duckdb::Equals.Operation(const interval_t &,const interval_t &) 1 Param s1 - c0 - 7942 - s7 clang +duckdb::Equals.Operation(const interval_t &,const interval_t &) 2 Param s3 - c0 - 7966 - s7 clang +duckdb::Equals.Operation(const interval_t &,const interval_t &) 3 Return - - c0 - 7994 - - walk +duckdb::Equals.Operation(const interval_t &,const interval_t &) 4 Call - s8 c0 - 8001 - static clang +duckdb::Equals.Operation(const interval_t &,const interval_t &) 5 Read s1 - c0 - 8018 - - clang +duckdb::Equals.Operation(const interval_t &,const interval_t &) 6 Read s3 - c0 - 8024 - - clang +duckdb::Equals.Operation(const interval_t &,const interval_t &) 7 ScopeExit s0 - c0 - 7900 - - walk +duckdb::Equals.Operation(const string_t &,const string_t &) 0 ScopeEnter s0 - c0 - 7463 - - walk +duckdb::Equals.Operation(const string_t &,const string_t &) 1 Param s1 - c0 - 7505 - s4 clang +duckdb::Equals.Operation(const string_t &,const string_t &) 2 Param s3 - c0 - 7527 - s4 clang +duckdb::Equals.Operation(const string_t &,const string_t &) 3 Return - - c0 - 7553 - - walk +duckdb::Equals.Operation(const string_t &,const string_t &) 4 Call - s5 c0 - 7560 - member clang +duckdb::Equals.Operation(const string_t &,const string_t &) 5 Read s1 - c0 - 7560 - - clang +duckdb::Equals.Operation(const string_t &,const string_t &) 6 Read s3 - c0 - 7568 - - clang +duckdb::Equals.Operation(const string_t &,const string_t &) 7 ScopeExit s0 - c0 - 7463 - - walk +duckdb::GreaterThan.Operation(const bool &,const bool &) 0 ScopeEnter s0 - c0 - 7149 - - walk +duckdb::GreaterThan.Operation(const bool &,const bool &) 1 Param s1 - c0 - 7196 - s2 clang +duckdb::GreaterThan.Operation(const bool &,const bool &) 2 Param s3 - c0 - 7214 - s2 clang +duckdb::GreaterThan.Operation(const bool &,const bool &) 3 Return - - c0 - 7236 - - walk +duckdb::GreaterThan.Operation(const bool &,const bool &) 4 Read s3 - c0 - 7244 - - clang +duckdb::GreaterThan.Operation(const bool &,const bool &) 5 Read s1 - c0 - 7253 - - clang +duckdb::GreaterThan.Operation(const bool &,const bool &) 6 ScopeExit s0 - c0 - 7149 - - walk +duckdb::GreaterThan.Operation(const interval_t &,const interval_t &) 0 ScopeEnter s0 - c0 - 8034 - - walk +duckdb::GreaterThan.Operation(const interval_t &,const interval_t &) 1 Param s1 - c0 - 8081 - s7 clang +duckdb::GreaterThan.Operation(const interval_t &,const interval_t &) 2 Param s3 - c0 - 8105 - s7 clang +duckdb::GreaterThan.Operation(const interval_t &,const interval_t &) 3 Return - - c0 - 8133 - - walk +duckdb::GreaterThan.Operation(const interval_t &,const interval_t &) 4 Call - s9 c0 - 8140 - static clang +duckdb::GreaterThan.Operation(const interval_t &,const interval_t &) 5 Read s1 - c0 - 8162 - - clang +duckdb::GreaterThan.Operation(const interval_t &,const interval_t &) 6 Read s3 - c0 - 8168 - - clang +duckdb::GreaterThan.Operation(const interval_t &,const interval_t &) 7 ScopeExit s0 - c0 - 8034 - - walk +duckdb::GreaterThan.Operation(const string_t &,const string_t &) 0 ScopeEnter s0 - c0 - 7578 - - walk +duckdb::GreaterThan.Operation(const string_t &,const string_t &) 1 Param s1 - c0 - 7625 - s4 clang +duckdb::GreaterThan.Operation(const string_t &,const string_t &) 2 Param s3 - c0 - 7647 - s4 clang +duckdb::GreaterThan.Operation(const string_t &,const string_t &) 3 Return - - c0 - 7673 - - walk +duckdb::GreaterThan.Operation(const string_t &,const string_t &) 4 Call - s6 c0 - 7680 - member clang +duckdb::GreaterThan.Operation(const string_t &,const string_t &) 5 Read s1 - c0 - 7680 - - clang +duckdb::GreaterThan.Operation(const string_t &,const string_t &) 6 Read s3 - c0 - 7687 - - clang +duckdb::GreaterThan.Operation(const string_t &,const string_t &) 7 ScopeExit s0 - c0 - 7578 - - walk diff --git a/.claude/harvest/duckdb-headers/ore/common_operator_comparison_operators/methods.tsv b/.claude/harvest/duckdb-headers/ore/common_operator_comparison_operators/methods.tsv new file mode 100644 index 000000000..bb894d900 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_operator_comparison_operators/methods.tsv @@ -0,0 +1,5 @@ +duckdb::Equals.Operation(const interval_t &,const interval_t &) /home/user/adaworldapi/duckdb/src/include/duckdb/common/operator/comparison_operators.hpp duckdb::Equals 8 1 Empty 0 0 0 0 0 0 1 0 0 method public 2 - +duckdb::Equals.Operation(const string_t &,const string_t &) /home/user/adaworldapi/duckdb/src/include/duckdb/common/operator/comparison_operators.hpp duckdb::Equals 8 1 Empty 0 0 0 0 0 0 1 0 0 method public 2 - +duckdb::GreaterThan.Operation(const bool &,const bool &) /home/user/adaworldapi/duckdb/src/include/duckdb/common/operator/comparison_operators.hpp duckdb::GreaterThan 7 1 Empty 0 0 0 0 0 0 1 0 0 method public 2 - +duckdb::GreaterThan.Operation(const interval_t &,const interval_t &) /home/user/adaworldapi/duckdb/src/include/duckdb/common/operator/comparison_operators.hpp duckdb::GreaterThan 8 1 Empty 0 0 0 0 0 0 1 0 0 method public 2 - +duckdb::GreaterThan.Operation(const string_t &,const string_t &) /home/user/adaworldapi/duckdb/src/include/duckdb/common/operator/comparison_operators.hpp duckdb::GreaterThan 8 1 Empty 0 0 0 0 0 0 1 0 0 method public 2 - diff --git a/.claude/harvest/duckdb-headers/ore/common_operator_comparison_operators/scopes.tsv b/.claude/harvest/duckdb-headers/ore/common_operator_comparison_operators/scopes.tsv new file mode 100644 index 000000000..19a6696c2 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_operator_comparison_operators/scopes.tsv @@ -0,0 +1,5 @@ +duckdb::Equals.Operation(const interval_t &,const interval_t &) c0 - Function 0 0 7 +duckdb::Equals.Operation(const string_t &,const string_t &) c0 - Function 0 0 7 +duckdb::GreaterThan.Operation(const bool &,const bool &) c0 - Function 0 0 6 +duckdb::GreaterThan.Operation(const interval_t &,const interval_t &) c0 - Function 0 0 7 +duckdb::GreaterThan.Operation(const string_t &,const string_t &) c0 - Function 0 0 7 diff --git a/.claude/harvest/duckdb-headers/ore/common_operator_comparison_operators/symbols.tsv b/.claude/harvest/duckdb-headers/ore/common_operator_comparison_operators/symbols.tsv new file mode 100644 index 000000000..ff7feaa09 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_operator_comparison_operators/symbols.tsv @@ -0,0 +1,10 @@ +s0 scope_kind - Function walk +s1 param param left clang +s2 type - const bool & clang +s3 param param right clang +s4 type - const string_t & clang +s5 callee this operator== clang +s6 callee this operator> clang +s7 type - const interval_t & clang +s8 callee this Equals clang +s9 callee this GreaterThan clang diff --git a/.claude/harvest/duckdb-headers/ore/common_operator_constant_operators/events.tsv b/.claude/harvest/duckdb-headers/ore/common_operator_constant_operators/events.tsv new file mode 100644 index 000000000..e69de29bb diff --git a/.claude/harvest/duckdb-headers/ore/common_operator_constant_operators/methods.tsv b/.claude/harvest/duckdb-headers/ore/common_operator_constant_operators/methods.tsv new file mode 100644 index 000000000..e69de29bb diff --git a/.claude/harvest/duckdb-headers/ore/common_operator_constant_operators/scopes.tsv b/.claude/harvest/duckdb-headers/ore/common_operator_constant_operators/scopes.tsv new file mode 100644 index 000000000..e69de29bb diff --git a/.claude/harvest/duckdb-headers/ore/common_operator_constant_operators/symbols.tsv b/.claude/harvest/duckdb-headers/ore/common_operator_constant_operators/symbols.tsv new file mode 100644 index 000000000..e69de29bb diff --git a/.claude/harvest/duckdb-headers/ore/common_row_operations_row_matcher/events.tsv b/.claude/harvest/duckdb-headers/ore/common_row_operations_row_matcher/events.tsv new file mode 100644 index 000000000..e69de29bb diff --git a/.claude/harvest/duckdb-headers/ore/common_row_operations_row_matcher/methods.tsv b/.claude/harvest/duckdb-headers/ore/common_row_operations_row_matcher/methods.tsv new file mode 100644 index 000000000..e69de29bb diff --git a/.claude/harvest/duckdb-headers/ore/common_row_operations_row_matcher/scopes.tsv b/.claude/harvest/duckdb-headers/ore/common_row_operations_row_matcher/scopes.tsv new file mode 100644 index 000000000..e69de29bb diff --git a/.claude/harvest/duckdb-headers/ore/common_row_operations_row_matcher/symbols.tsv b/.claude/harvest/duckdb-headers/ore/common_row_operations_row_matcher/symbols.tsv new file mode 100644 index 000000000..e69de29bb diff --git a/.claude/harvest/duckdb-headers/ore/common_types_selection_vector/events.tsv b/.claude/harvest/duckdb-headers/ore/common_types_selection_vector/events.tsv new file mode 100644 index 000000000..b973fb569 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_types_selection_vector/events.tsv @@ -0,0 +1,311 @@ +duckdb::SelectionVector.Capacity() const 0 ScopeEnter s0 - c0 - 4937 - - walk +duckdb::SelectionVector.Capacity() const 1 Return - - c0 - 4964 - - walk +duckdb::SelectionVector.Capacity() const 2 Read s2 - c0 - 4971 - - walk +duckdb::SelectionVector.Capacity() const 3 ScopeExit s0 - c0 - 4937 - - walk +duckdb::SelectionVector.Incremental(idx_t) 0 ScopeEnter s0 - c0 - 2306 - - walk +duckdb::SelectionVector.Incremental(idx_t) 1 Param s8 - c0 - 2341 - s6 clang +duckdb::SelectionVector.Incremental(idx_t) 2 Return - - c0 - 2358 - - walk +duckdb::SelectionVector.Incremental(idx_t) 3 Call - s32 c0 - 2365 - - walk +duckdb::SelectionVector.Incremental(idx_t) 4 Call - s33 c0 - 2365 - static clang +duckdb::SelectionVector.Incremental(idx_t) 5 Read s8 - c0 - 2383 - - clang +duckdb::SelectionVector.Incremental(idx_t) 6 ScopeExit s0 - c0 - 2306 - - walk +duckdb::SelectionVector.Incremental(idx_t,idx_t) 0 ScopeEnter s0 - c0 - 1992 - - walk +duckdb::SelectionVector.Incremental(idx_t,idx_t) 1 Param s9 - c0 - 2027 - s6 clang +duckdb::SelectionVector.Incremental(idx_t,idx_t) 2 Param s8 - c0 - 2040 - s6 clang +duckdb::SelectionVector.Incremental(idx_t,idx_t) 3 Decl s27 - c0 - 2057 - s28 clang +duckdb::SelectionVector.Incremental(idx_t,idx_t) 4 Call - s29 c0 - 2073 - ctor clang +duckdb::SelectionVector.Incremental(idx_t,idx_t) 5 Call - s10 c0 - 2080 - free clang +duckdb::SelectionVector.Incremental(idx_t,idx_t) 6 Read s8 - c0 - 2096 - - clang +duckdb::SelectionVector.Incremental(idx_t,idx_t) 7 ScopeEnter s11 - c1 c0 2129 - - walk +duckdb::SelectionVector.Incremental(idx_t,idx_t) 8 Decl s12 - c1 c0 2134 for_init s6 clang +duckdb::SelectionVector.Incremental(idx_t,idx_t) 9 Read s12 - c1 c0 2147 for_cond - clang +duckdb::SelectionVector.Incremental(idx_t,idx_t) 10 Read s8 - c1 c0 2151 for_cond - clang +duckdb::SelectionVector.Incremental(idx_t,idx_t) 11 ReadWrite s12 - c1 c0 2158 for_inc - clang +duckdb::SelectionVector.Incremental(idx_t,idx_t) 12 Condition - - c1 c0 2129 for - walk +duckdb::SelectionVector.Incremental(idx_t,idx_t) 13 Call s30 s31 c1 c0 2168 - member clang +duckdb::SelectionVector.Incremental(idx_t,idx_t) 14 Read s27 - c1 c0 2168 - - clang +duckdb::SelectionVector.Incremental(idx_t,idx_t) 15 Read s12 - c1 c0 2185 - - clang +duckdb::SelectionVector.Incremental(idx_t,idx_t) 16 Read s9 - c1 c0 2188 - - clang +duckdb::SelectionVector.Incremental(idx_t,idx_t) 17 Read s12 - c1 c0 2196 - - clang +duckdb::SelectionVector.Incremental(idx_t,idx_t) 18 ScopeExit s11 - c1 c0 2129 back_edge - walk +duckdb::SelectionVector.Incremental(idx_t,idx_t) 19 Return - - c0 - 2206 - - walk +duckdb::SelectionVector.Incremental(idx_t,idx_t) 20 Call - s29 c0 - 2213 - ctor clang +duckdb::SelectionVector.Incremental(idx_t,idx_t) 21 Read s27 - c0 - 2213 - - clang +duckdb::SelectionVector.Incremental(idx_t,idx_t) 22 ScopeExit s0 - c0 - 1992 - - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 0 ScopeEnter s0 - c0 - 3325 - - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 1 Param s24 - c0 - 3341 - s25 clang +duckdb::SelectionVector.Initialize(buffer_ptr) 2 Call - s26 c0 - 3377 - member clang +duckdb::SelectionVector.Initialize(buffer_ptr) 3 Read s19 - c0 - 3377 - - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 4 Call - s21 c0 - 3394 - free clang +duckdb::SelectionVector.Initialize(buffer_ptr) 5 Read s24 - c0 - 3404 - - clang +duckdb::SelectionVector.Initialize(buffer_ptr) 6 ScopeEnter s40 - c1 c0 3413 - - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 7 Call s46 s53 c1 c0 3417 - member clang +duckdb::SelectionVector.Initialize(buffer_ptr) 8 Read s19 - c1 c0 3417 - - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 9 Condition - - c1 c0 3417 if - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 10 Branch - - c1 c0 3433 then - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 11 ScopeEnter s43 - c2 c1 3433 - - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 12 Write s1 - c2 c1 3438 - - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 13 Cast - - c2 c1 3451 - reinterpret walk +duckdb::SelectionVector.Initialize(buffer_ptr) 14 Call s49 s50 c2 c1 3477 - member clang +duckdb::SelectionVector.Initialize(buffer_ptr) 15 Read s51 - c2 c1 3477 - - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 16 Call - s52 c2 c1 3477 - member clang +duckdb::SelectionVector.Initialize(buffer_ptr) 17 Read s19 - c2 c1 3477 - - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 18 Write s2 - c2 c1 3515 - - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 19 Call s49 s54 c2 c1 3526 - member clang +duckdb::SelectionVector.Initialize(buffer_ptr) 20 Read s51 - c2 c1 3526 - - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 21 Call - s52 c2 c1 3526 - member clang +duckdb::SelectionVector.Initialize(buffer_ptr) 22 Read s19 - c2 c1 3526 - - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 23 ScopeExit s43 - c2 c1 3433 - - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 24 Branch - - c1 c0 3589 else - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 25 ScopeEnter s55 - c3 c1 3589 - - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 26 Write s1 - c3 c1 3594 - - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 27 Write s2 - c3 c1 3619 - - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 28 ScopeExit s55 - c3 c1 3589 - - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 29 ScopeExit s40 - c1 c0 3413 - - walk +duckdb::SelectionVector.Initialize(buffer_ptr) 30 ScopeExit s0 - c0 - 3325 - - walk +duckdb::SelectionVector.Initialize(const SelectionVector &) 0 ScopeEnter s0 - c0 - 3644 - - walk +duckdb::SelectionVector.Initialize(const SelectionVector &) 1 Param s16 - c0 - 3660 - s15 clang +duckdb::SelectionVector.Initialize(const SelectionVector &) 2 Call - s26 c0 - 3694 - member clang +duckdb::SelectionVector.Initialize(const SelectionVector &) 3 Read s19 - c0 - 3694 - - walk +duckdb::SelectionVector.Initialize(const SelectionVector &) 4 Read s22 - c0 - 3711 - - walk +duckdb::SelectionVector.Initialize(const SelectionVector &) 5 Read s16 - c0 - 3711 - - clang +duckdb::SelectionVector.Initialize(const SelectionVector &) 6 Write s1 - c0 - 3735 - - walk +duckdb::SelectionVector.Initialize(const SelectionVector &) 7 Read s18 - c0 - 3748 - - walk +duckdb::SelectionVector.Initialize(const SelectionVector &) 8 Read s16 - c0 - 3748 - - clang +duckdb::SelectionVector.Initialize(const SelectionVector &) 9 Write s2 - c0 - 3768 - - walk +duckdb::SelectionVector.Initialize(const SelectionVector &) 10 Read s23 - c0 - 3779 - - walk +duckdb::SelectionVector.Initialize(const SelectionVector &) 11 Read s16 - c0 - 3779 - - clang +duckdb::SelectionVector.Initialize(const SelectionVector &) 12 ScopeExit s0 - c0 - 3644 - - walk +duckdb::SelectionVector.Initialize(idx_t) 0 ScopeEnter s0 - c0 - 3113 - - walk +duckdb::SelectionVector.Initialize(idx_t) 1 Param s8 - c0 - 3129 - s6 clang +duckdb::SelectionVector.Initialize(idx_t) 2 Call - s26 c0 - 3169 - member clang +duckdb::SelectionVector.Initialize(idx_t) 3 Read s19 - c0 - 3169 - - walk +duckdb::SelectionVector.Initialize(idx_t) 4 Call - s48 c0 - 3186 - free clang +duckdb::SelectionVector.Initialize(idx_t) 5 Read s8 - c0 - 3217 - - clang +duckdb::SelectionVector.Initialize(idx_t) 6 Write s1 - c0 - 3227 - - walk +duckdb::SelectionVector.Initialize(idx_t) 7 Cast - - c0 - 3240 - reinterpret walk +duckdb::SelectionVector.Initialize(idx_t) 8 Call s49 s50 c0 - 3266 - member clang +duckdb::SelectionVector.Initialize(idx_t) 9 Read s51 - c0 - 3266 - - walk +duckdb::SelectionVector.Initialize(idx_t) 10 Call - s52 c0 - 3266 - member clang +duckdb::SelectionVector.Initialize(idx_t) 11 Read s19 - c0 - 3266 - - walk +duckdb::SelectionVector.Initialize(idx_t) 12 Write s2 - c0 - 3303 - - walk +duckdb::SelectionVector.Initialize(idx_t) 13 Read s8 - c0 - 3314 - - clang +duckdb::SelectionVector.Initialize(idx_t) 14 ScopeExit s0 - c0 - 3113 - - walk +duckdb::SelectionVector.Initialize(sel_t *,idx_t) 0 ScopeEnter s0 - c0 - 2869 - - walk +duckdb::SelectionVector.Initialize(sel_t *,idx_t) 1 Param s3 - c0 - 2885 - s4 clang +duckdb::SelectionVector.Initialize(sel_t *,idx_t) 2 Param s45 - c0 - 2897 - s6 clang +duckdb::SelectionVector.Initialize(sel_t *,idx_t) 3 Call s46 s47 c0 - 3040 - member clang +duckdb::SelectionVector.Initialize(sel_t *,idx_t) 4 Read s19 - c0 - 3040 - - walk +duckdb::SelectionVector.Initialize(sel_t *,idx_t) 5 Write s1 - c0 - 3066 - - walk +duckdb::SelectionVector.Initialize(sel_t *,idx_t) 6 Read s3 - c0 - 3079 - - clang +duckdb::SelectionVector.Initialize(sel_t *,idx_t) 7 Write s2 - c0 - 3086 - - walk +duckdb::SelectionVector.Initialize(sel_t *,idx_t) 8 Read s45 - c0 - 3097 - - clang +duckdb::SelectionVector.Initialize(sel_t *,idx_t) 9 ScopeExit s0 - c0 - 2869 - - walk +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 0 ScopeEnter s0 - c0 - 2395 - - walk +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 1 Param s34 - c0 - 2417 - s15 clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 2 Param s35 - c0 - 2445 - s36 clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 3 Param s37 - c0 - 2467 - s6 clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 4 Param s8 - c0 - 2486 - s6 clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 5 Decl s38 - c0 - 2503 - s6 clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 6 Decl s39 - c0 - 2524 - s6 clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 7 ScopeEnter s11 - c1 c0 2545 - - walk +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 8 Decl s12 - c1 c0 2550 for_init s6 clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 9 Read s12 - c1 c0 2563 for_cond - clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 10 Read s8 - c1 c0 2567 for_cond - clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 11 ReadWrite s12 - c1 c0 2574 for_inc - clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 12 Condition - - c1 c0 2545 for - walk +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 13 ScopeEnter s40 - c2 c1 2584 - - walk +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 14 Read s38 - c2 c1 2588 - - clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 15 Read s37 - c2 c1 2598 - - clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 16 Call s41 s42 c2 c1 2613 - member clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 17 Read s34 - c2 c1 2613 - - clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 18 Read s38 - c2 c1 2627 - - clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 19 Read s12 - c2 c1 2639 - - clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 20 Condition - - c2 c1 2588 if - walk +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 21 Branch - - c2 c1 2642 then - walk +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 22 ScopeEnter s43 - c3 c2 2642 - - walk +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 23 ReadWrite s38 - c3 c2 2648 - - clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 24 Continue - - c3 c2 2720 - - walk +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 25 ScopeExit s43 - c3 c2 2642 - - walk +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 26 ScopeExit s40 - c2 c1 2584 - - walk +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 27 Call s44 s31 c1 c0 2813 - member clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 28 Read s35 - c1 c0 2813 - - clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 29 ReadWrite s39 - c1 c0 2827 - - clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 30 Read s12 - c1 c0 2838 - - clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 31 ScopeExit s11 - c1 c0 2545 back_edge - walk +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 32 Return - - c0 - 2848 - - walk +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 33 Read s39 - c0 - 2855 - - clang +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) 34 ScopeExit s0 - c0 - 2395 - - walk +duckdb::SelectionVector.IsSet() const 0 ScopeEnter s0 - c0 - 5423 - - walk +duckdb::SelectionVector.IsSet() const 1 Return - - c0 - 5453 - - walk +duckdb::SelectionVector.IsSet() const 2 Read s1 - c0 - 5460 - - walk +duckdb::SelectionVector.IsSet() const 3 ScopeExit s0 - c0 - 5423 - - walk +duckdb::SelectionVector.SelectionVector() 0 ScopeEnter s0 - c0 - 905 - - walk +duckdb::SelectionVector.SelectionVector() 1 CtorInit s1 - c0 - 925 - - clang +duckdb::SelectionVector.SelectionVector() 2 CtorInit s2 - c0 - 946 - - clang +duckdb::SelectionVector.SelectionVector() 3 ScopeExit s0 - c0 - 905 - - walk +duckdb::SelectionVector.SelectionVector(SelectionVector &&) 0 ScopeEnter s0 - c0 - 1378 - - walk +duckdb::SelectionVector.SelectionVector(SelectionVector &&) 1 Param s16 - c0 - 1394 - s17 clang +duckdb::SelectionVector.SelectionVector(SelectionVector &&) 2 CtorInit s1 - c0 - 1435 - - clang +duckdb::SelectionVector.SelectionVector(SelectionVector &&) 3 Read s18 - c0 - 1446 - - walk +duckdb::SelectionVector.SelectionVector(SelectionVector &&) 4 Read s16 - c0 - 1446 - - clang +duckdb::SelectionVector.SelectionVector(SelectionVector &&) 5 CtorInit s19 - c0 - 1465 - - clang +duckdb::SelectionVector.SelectionVector(SelectionVector &&) 6 Call - s20 c0 - 1465 - ctor clang +duckdb::SelectionVector.SelectionVector(SelectionVector &&) 7 Call - s21 c0 - 1480 - free clang +duckdb::SelectionVector.SelectionVector(SelectionVector &&) 8 Read s22 - c0 - 1490 - - walk +duckdb::SelectionVector.SelectionVector(SelectionVector &&) 9 Read s16 - c0 - 1490 - - clang +duckdb::SelectionVector.SelectionVector(SelectionVector &&) 10 CtorInit s2 - c0 - 1514 - - clang +duckdb::SelectionVector.SelectionVector(SelectionVector &&) 11 Read s23 - c0 - 1523 - - walk +duckdb::SelectionVector.SelectionVector(SelectionVector &&) 12 Read s16 - c0 - 1523 - - clang +duckdb::SelectionVector.SelectionVector(SelectionVector &&) 13 Write s1 - c0 - 1543 - - clang +duckdb::SelectionVector.SelectionVector(SelectionVector &&) 14 Read s16 - c0 - 1543 - - clang +duckdb::SelectionVector.SelectionVector(SelectionVector &&) 15 ScopeExit s0 - c0 - 1378 - - walk +duckdb::SelectionVector.SelectionVector(buffer_ptr &&) 0 ScopeEnter s0 - c0 - 1575 - - walk +duckdb::SelectionVector.SelectionVector(buffer_ptr &&) 1 Param s24 - c0 - 1600 - s25 clang +duckdb::SelectionVector.SelectionVector(buffer_ptr &&) 2 Call - s7 c0 - 1638 - member clang +duckdb::SelectionVector.SelectionVector(buffer_ptr &&) 3 Call - s20 c0 - 1649 - ctor clang +duckdb::SelectionVector.SelectionVector(buffer_ptr &&) 4 Call - s21 c0 - 1649 - free clang +duckdb::SelectionVector.SelectionVector(buffer_ptr &&) 5 Read s24 - c0 - 1659 - - clang +duckdb::SelectionVector.SelectionVector(buffer_ptr &&) 6 ScopeExit s0 - c0 - 1575 - - walk +duckdb::SelectionVector.SelectionVector(const SelectionVector &) 0 ScopeEnter s0 - c0 - 1295 - - walk +duckdb::SelectionVector.SelectionVector(const SelectionVector &) 1 Param s14 - c0 - 1311 - s15 clang +duckdb::SelectionVector.SelectionVector(const SelectionVector &) 2 Call - s7 c0 - 1350 - member clang +duckdb::SelectionVector.SelectionVector(const SelectionVector &) 3 Read s14 - c0 - 1361 - - clang +duckdb::SelectionVector.SelectionVector(const SelectionVector &) 4 ScopeExit s0 - c0 - 1295 - - walk +duckdb::SelectionVector.SelectionVector(idx_t) 0 ScopeEnter s0 - c0 - 1052 - - walk +duckdb::SelectionVector.SelectionVector(idx_t) 1 Param s8 - c0 - 1077 - s6 clang +duckdb::SelectionVector.SelectionVector(idx_t) 2 Call - s7 c0 - 1094 - member clang +duckdb::SelectionVector.SelectionVector(idx_t) 3 Read s8 - c0 - 1105 - - clang +duckdb::SelectionVector.SelectionVector(idx_t) 4 ScopeExit s0 - c0 - 1052 - - walk +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) 0 ScopeEnter s0 - c0 - 1117 - - walk +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) 1 Param s9 - c0 - 1133 - s6 clang +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) 2 Param s8 - c0 - 1146 - s6 clang +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) 3 Call - s7 c0 - 1163 - member clang +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) 4 Call - s10 c0 - 1174 - free clang +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) 5 Read s8 - c0 - 1190 - - clang +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) 6 ScopeEnter s11 - c1 c0 1223 - - walk +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) 7 Decl s12 - c1 c0 1228 for_init s6 clang +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) 8 Read s12 - c1 c0 1241 for_cond - clang +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) 9 Read s8 - c1 c0 1245 for_cond - clang +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) 10 ReadWrite s12 - c1 c0 1252 for_inc - clang +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) 11 Condition - - c1 c0 1223 for - walk +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) 12 Call - s13 c1 c0 1262 - member clang +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) 13 Read s12 - c1 c0 1272 - - clang +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) 14 Read s9 - c1 c0 1275 - - clang +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) 15 Read s12 - c1 c0 1283 - - clang +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) 16 ScopeExit s11 - c1 c0 1223 back_edge - walk +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) 17 ScopeExit s0 - c0 - 1117 - - walk +duckdb::SelectionVector.SelectionVector(sel_t *,idx_t) 0 ScopeEnter s0 - c0 - 964 - - walk +duckdb::SelectionVector.SelectionVector(sel_t *,idx_t) 1 Param s3 - c0 - 989 - s4 clang +duckdb::SelectionVector.SelectionVector(sel_t *,idx_t) 2 Param s5 - c0 - 1001 - s6 clang +duckdb::SelectionVector.SelectionVector(sel_t *,idx_t) 3 Call - s7 c0 - 1021 - member clang +duckdb::SelectionVector.SelectionVector(sel_t *,idx_t) 4 Read s3 - c0 - 1032 - - clang +duckdb::SelectionVector.SelectionVector(sel_t *,idx_t) 5 Read s5 - c0 - 1037 - - clang +duckdb::SelectionVector.SelectionVector(sel_t *,idx_t) 6 ScopeExit s0 - c0 - 964 - - walk +duckdb::SelectionVector.data() 0 ScopeEnter s0 - c0 - 4639 - - walk +duckdb::SelectionVector.data() 1 Return - - c0 - 4700 - - walk +duckdb::SelectionVector.data() 2 Read s1 - c0 - 4707 - - walk +duckdb::SelectionVector.data() 3 ScopeExit s0 - c0 - 4639 - - walk +duckdb::SelectionVector.data() const 0 ScopeEnter s0 - c0 - 4723 - - walk +duckdb::SelectionVector.data() const 1 Return - - c0 - 4796 - - walk +duckdb::SelectionVector.data() const 2 Read s1 - c0 - 4803 - - walk +duckdb::SelectionVector.data() const 3 ScopeExit s0 - c0 - 4723 - - walk +duckdb::SelectionVector.get_index(idx_t) const 0 ScopeEnter s0 - c0 - 4349 - - walk +duckdb::SelectionVector.get_index(idx_t) const 1 Param s56 - c0 - 4372 - s6 clang +duckdb::SelectionVector.get_index(idx_t) const 2 Return - - c0 - 4436 - - walk +duckdb::SelectionVector.get_index(idx_t) const 3 Read s1 - c0 - 4443 - - walk +duckdb::SelectionVector.get_index(idx_t) const 4 Call - s64 c0 - 4456 - member clang +duckdb::SelectionVector.get_index(idx_t) const 5 Read s56 - c0 - 4473 - - clang +duckdb::SelectionVector.get_index(idx_t) const 6 Read s56 - c0 - 4480 - - clang +duckdb::SelectionVector.get_index(idx_t) const 7 ScopeExit s0 - c0 - 4349 - - walk +duckdb::SelectionVector.get_index_unsafe(idx_t) const 0 ScopeEnter s0 - c0 - 4489 - - walk +duckdb::SelectionVector.get_index_unsafe(idx_t) const 1 Param s56 - c0 - 4519 - s6 clang +duckdb::SelectionVector.get_index_unsafe(idx_t) const 2 Cast - - c0 - 4583 - static walk +duckdb::SelectionVector.get_index_unsafe(idx_t) const 3 Read s56 - c0 - 4592 - - clang +duckdb::SelectionVector.get_index_unsafe(idx_t) const 4 Read s2 - c0 - 4598 - - walk +duckdb::SelectionVector.get_index_unsafe(idx_t) const 5 Cast - - c0 - 4583 - functional walk +duckdb::SelectionVector.get_index_unsafe(idx_t) const 6 Call - s58 c0 - 4583 - free clang +duckdb::SelectionVector.get_index_unsafe(idx_t) const 7 Return - - c0 - 4611 - - walk +duckdb::SelectionVector.get_index_unsafe(idx_t) const 8 Read s1 - c0 - 4618 - - walk +duckdb::SelectionVector.get_index_unsafe(idx_t) const 9 Read s56 - c0 - 4629 - - clang +duckdb::SelectionVector.get_index_unsafe(idx_t) const 10 ScopeExit s0 - c0 - 4489 - - walk +duckdb::SelectionVector.operator=(SelectionVector &&) 0 ScopeEnter s0 - c0 - 1671 - - walk +duckdb::SelectionVector.operator=(SelectionVector &&) 1 Param s16 - c0 - 1698 - s17 clang +duckdb::SelectionVector.operator=(SelectionVector &&) 2 Write s1 - c0 - 1736 - - walk +duckdb::SelectionVector.operator=(SelectionVector &&) 3 Read s18 - c0 - 1749 - - walk +duckdb::SelectionVector.operator=(SelectionVector &&) 4 Read s16 - c0 - 1749 - - clang +duckdb::SelectionVector.operator=(SelectionVector &&) 5 Write s1 - c0 - 1769 - - clang +duckdb::SelectionVector.operator=(SelectionVector &&) 6 Read s16 - c0 - 1769 - - clang +duckdb::SelectionVector.operator=(SelectionVector &&) 7 Call - s26 c0 - 1799 - member clang +duckdb::SelectionVector.operator=(SelectionVector &&) 8 Read s19 - c0 - 1799 - - walk +duckdb::SelectionVector.operator=(SelectionVector &&) 9 Call - s21 c0 - 1816 - free clang +duckdb::SelectionVector.operator=(SelectionVector &&) 10 Read s22 - c0 - 1826 - - walk +duckdb::SelectionVector.operator=(SelectionVector &&) 11 Read s16 - c0 - 1826 - - clang +duckdb::SelectionVector.operator=(SelectionVector &&) 12 Write s2 - c0 - 1851 - - walk +duckdb::SelectionVector.operator=(SelectionVector &&) 13 Read s23 - c0 - 1862 - - walk +duckdb::SelectionVector.operator=(SelectionVector &&) 14 Read s16 - c0 - 1862 - - clang +duckdb::SelectionVector.operator=(SelectionVector &&) 15 Return - - c0 - 1880 - - walk +duckdb::SelectionVector.operator=(SelectionVector &&) 16 ScopeExit s0 - c0 - 1671 - - walk +duckdb::SelectionVector.operator[](idx_t) 0 ScopeEnter s0 - c0 - 5321 - - walk +duckdb::SelectionVector.operator[](idx_t) 1 Param s65 - c0 - 5346 - s6 clang +duckdb::SelectionVector.operator[](idx_t) 2 Cast - - c0 - 5363 - static walk +duckdb::SelectionVector.operator[](idx_t) 3 Read s65 - c0 - 5372 - - clang +duckdb::SelectionVector.operator[](idx_t) 4 Read s2 - c0 - 5380 - - walk +duckdb::SelectionVector.operator[](idx_t) 5 Cast - - c0 - 5363 - functional walk +duckdb::SelectionVector.operator[](idx_t) 6 Call - s58 c0 - 5363 - free clang +duckdb::SelectionVector.operator[](idx_t) 7 Return - - c0 - 5393 - - walk +duckdb::SelectionVector.operator[](idx_t) 8 Read s1 - c0 - 5400 - - walk +duckdb::SelectionVector.operator[](idx_t) 9 Read s65 - c0 - 5411 - - clang +duckdb::SelectionVector.operator[](idx_t) 10 ScopeExit s0 - c0 - 5321 - - walk +duckdb::SelectionVector.operator[](idx_t) const 0 ScopeEnter s0 - c0 - 5207 - - walk +duckdb::SelectionVector.operator[](idx_t) const 1 Param s65 - c0 - 5238 - s6 clang +duckdb::SelectionVector.operator[](idx_t) const 2 Cast - - c0 - 5261 - static walk +duckdb::SelectionVector.operator[](idx_t) const 3 Read s65 - c0 - 5270 - - clang +duckdb::SelectionVector.operator[](idx_t) const 4 Read s2 - c0 - 5278 - - walk +duckdb::SelectionVector.operator[](idx_t) const 5 Cast - - c0 - 5261 - functional walk +duckdb::SelectionVector.operator[](idx_t) const 6 Call - s58 c0 - 5261 - free clang +duckdb::SelectionVector.operator[](idx_t) const 7 Return - - c0 - 5291 - - walk +duckdb::SelectionVector.operator[](idx_t) const 8 Read s1 - c0 - 5298 - - walk +duckdb::SelectionVector.operator[](idx_t) const 9 Read s65 - c0 - 5309 - - clang +duckdb::SelectionVector.operator[](idx_t) const 10 ScopeExit s0 - c0 - 5207 - - walk +duckdb::SelectionVector.sel_data() 0 ScopeEnter s0 - c0 - 4819 - - walk +duckdb::SelectionVector.sel_data() 1 Return - - c0 - 4910 - - walk +duckdb::SelectionVector.sel_data() 2 Read s19 - c0 - 4917 - - walk +duckdb::SelectionVector.sel_data() 3 ScopeExit s0 - c0 - 4819 - - walk +duckdb::SelectionVector.set_index(idx_t,idx_t) 0 ScopeEnter s0 - c0 - 3800 - - walk +duckdb::SelectionVector.set_index(idx_t,idx_t) 1 Param s56 - c0 - 3822 - s6 clang +duckdb::SelectionVector.set_index(idx_t,idx_t) 2 Param s57 - c0 - 3833 - s6 clang +duckdb::SelectionVector.set_index(idx_t,idx_t) 3 Cast - - c0 - 3891 - static walk +duckdb::SelectionVector.set_index(idx_t,idx_t) 4 Read s56 - c0 - 3900 - - clang +duckdb::SelectionVector.set_index(idx_t,idx_t) 5 Read s2 - c0 - 3906 - - walk +duckdb::SelectionVector.set_index(idx_t,idx_t) 6 Cast - - c0 - 3891 - functional walk +duckdb::SelectionVector.set_index(idx_t,idx_t) 7 Call - s58 c0 - 3891 - free clang +duckdb::SelectionVector.set_index(idx_t,idx_t) 8 Write s1 - c0 - 3919 - - walk +duckdb::SelectionVector.set_index(idx_t,idx_t) 9 Read s1 - c0 - 3919 - - walk +duckdb::SelectionVector.set_index(idx_t,idx_t) 10 Read s56 - c0 - 3930 - - clang +duckdb::SelectionVector.set_index(idx_t,idx_t) 11 Call - s59 c0 - 3937 - free clang +duckdb::SelectionVector.set_index(idx_t,idx_t) 12 Read s57 - c0 - 3962 - - clang +duckdb::SelectionVector.set_index(idx_t,idx_t) 13 ScopeExit s0 - c0 - 3800 - - walk +duckdb::SelectionVector.swap(idx_t,idx_t) 0 ScopeEnter s0 - c0 - 4138 - - walk +duckdb::SelectionVector.swap(idx_t,idx_t) 1 Param s60 - c0 - 4155 - s6 clang +duckdb::SelectionVector.swap(idx_t,idx_t) 2 Param s61 - c0 - 4164 - s6 clang +duckdb::SelectionVector.swap(idx_t,idx_t) 3 Cast - - c0 - 4220 - static walk +duckdb::SelectionVector.swap(idx_t,idx_t) 4 Read s60 - c0 - 4229 - - clang +duckdb::SelectionVector.swap(idx_t,idx_t) 5 Read s2 - c0 - 4233 - - walk +duckdb::SelectionVector.swap(idx_t,idx_t) 6 Read s61 - c0 - 4245 - - clang +duckdb::SelectionVector.swap(idx_t,idx_t) 7 Read s2 - c0 - 4249 - - walk +duckdb::SelectionVector.swap(idx_t,idx_t) 8 Cast - - c0 - 4220 - functional walk +duckdb::SelectionVector.swap(idx_t,idx_t) 9 Call - s58 c0 - 4220 - free clang +duckdb::SelectionVector.swap(idx_t,idx_t) 10 Decl s62 - c0 - 4262 - s63 clang +duckdb::SelectionVector.swap(idx_t,idx_t) 11 Read s1 - c0 - 4274 - - walk +duckdb::SelectionVector.swap(idx_t,idx_t) 12 Read s60 - c0 - 4285 - - clang +duckdb::SelectionVector.swap(idx_t,idx_t) 13 Write s1 - c0 - 4291 - - walk +duckdb::SelectionVector.swap(idx_t,idx_t) 14 Read s1 - c0 - 4291 - - walk +duckdb::SelectionVector.swap(idx_t,idx_t) 15 Read s60 - c0 - 4302 - - clang +duckdb::SelectionVector.swap(idx_t,idx_t) 16 Read s1 - c0 - 4307 - - walk +duckdb::SelectionVector.swap(idx_t,idx_t) 17 Read s61 - c0 - 4318 - - clang +duckdb::SelectionVector.swap(idx_t,idx_t) 18 Write s1 - c0 - 4324 - - walk +duckdb::SelectionVector.swap(idx_t,idx_t) 19 Read s1 - c0 - 4324 - - walk +duckdb::SelectionVector.swap(idx_t,idx_t) 20 Read s61 - c0 - 4335 - - clang +duckdb::SelectionVector.swap(idx_t,idx_t) 21 Read s62 - c0 - 4340 - - clang +duckdb::SelectionVector.swap(idx_t,idx_t) 22 ScopeExit s0 - c0 - 4138 - - walk diff --git a/.claude/harvest/duckdb-headers/ore/common_types_selection_vector/methods.tsv b/.claude/harvest/duckdb-headers/ore/common_types_selection_vector/methods.tsv new file mode 100644 index 000000000..826e8469b --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_types_selection_vector/methods.tsv @@ -0,0 +1,26 @@ +duckdb::SelectionVector.Capacity() const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 4 1 Observe 1 0 0 0 0 1 0 0 0 method public 0 - +duckdb::SelectionVector.Incremental(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 7 1 Empty 0 0 0 0 0 0 1 0 0 method public 1 - +duckdb::SelectionVector.Incremental(idx_t,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 23 2 Empty 0 0 0 0 0 0 1 0 0 method public 2 - +duckdb::SelectionVector.Initialize(buffer_ptr) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 31 4 Compute 1 3 0 0 0 0 0 0 0 method public 1 - +duckdb::SelectionVector.Initialize(const SelectionVector &) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 13 1 Compute 0 3 0 0 0 0 0 0 0 method public 1 - +duckdb::SelectionVector.Initialize(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 15 1 Compute 1 3 0 0 0 0 0 0 0 method public 1 - +duckdb::SelectionVector.Initialize(sel_t *,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 10 1 Compute 1 2 0 0 0 0 0 0 0 method public 2 - +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 35 4 Empty 0 0 0 0 0 0 1 0 0 method public 4 - +duckdb::SelectionVector.IsSet() const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 4 1 Observe 1 0 0 0 0 1 0 0 0 method public 0 - +duckdb::SelectionVector.SelectionVector() /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 4 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 0 - +duckdb::SelectionVector.SelectionVector(SelectionVector &&) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 16 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 1 - +duckdb::SelectionVector.SelectionVector(buffer_ptr &&) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 7 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 1 - +duckdb::SelectionVector.SelectionVector(const SelectionVector &) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 5 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 1 - +duckdb::SelectionVector.SelectionVector(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 5 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 1 - +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 18 2 Empty 0 0 0 0 0 0 0 0 0 ctor public 2 - +duckdb::SelectionVector.SelectionVector(sel_t *,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 7 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 2 - +duckdb::SelectionVector.data() /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 4 1 Observe 1 0 0 0 0 0 0 0 0 method public 0 - +duckdb::SelectionVector.data() const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 4 1 Observe 1 0 0 0 0 1 0 0 0 method public 0 - +duckdb::SelectionVector.get_index(idx_t) const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 8 1 Observe 1 0 0 0 0 1 0 0 0 method public 1 - +duckdb::SelectionVector.get_index_unsafe(idx_t) const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 11 1 Observe 2 0 0 0 0 1 0 0 0 method public 1 - +duckdb::SelectionVector.operator=(SelectionVector &&) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 17 1 Compute 0 3 0 0 0 0 0 0 0 operator public 1 - +duckdb::SelectionVector.operator[](idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 11 1 Observe 2 0 0 0 0 0 0 0 0 operator public 1 - +duckdb::SelectionVector.operator[](idx_t) const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 11 1 Observe 2 0 0 0 0 1 0 0 0 operator public 1 - +duckdb::SelectionVector.sel_data() /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 4 1 Observe 1 0 0 0 0 0 0 0 0 method public 0 - +duckdb::SelectionVector.set_index(idx_t,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 14 1 Compute 1 1 0 0 0 0 0 0 0 method public 2 - +duckdb::SelectionVector.swap(idx_t,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/selection_vector.hpp duckdb::SelectionVector 23 1 Normalize 2 1 0 0 0 0 0 0 0 method public 2 - diff --git a/.claude/harvest/duckdb-headers/ore/common_types_selection_vector/scopes.tsv b/.claude/harvest/duckdb-headers/ore/common_types_selection_vector/scopes.tsv new file mode 100644 index 000000000..ba913cd49 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_types_selection_vector/scopes.tsv @@ -0,0 +1,34 @@ +duckdb::SelectionVector.Capacity() const c0 - Function 0 0 3 +duckdb::SelectionVector.Incremental(idx_t) c0 - Function 0 0 6 +duckdb::SelectionVector.Incremental(idx_t,idx_t) c0 - Function 0 0 22 +duckdb::SelectionVector.Incremental(idx_t,idx_t) c1 c0 For 1 7 18 +duckdb::SelectionVector.Initialize(buffer_ptr) c0 - Function 0 0 30 +duckdb::SelectionVector.Initialize(buffer_ptr) c1 c0 If 1 6 29 +duckdb::SelectionVector.Initialize(buffer_ptr) c2 c1 Then 2 11 23 +duckdb::SelectionVector.Initialize(buffer_ptr) c3 c1 Else 2 25 28 +duckdb::SelectionVector.Initialize(const SelectionVector &) c0 - Function 0 0 12 +duckdb::SelectionVector.Initialize(idx_t) c0 - Function 0 0 14 +duckdb::SelectionVector.Initialize(sel_t *,idx_t) c0 - Function 0 0 9 +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) c0 - Function 0 0 34 +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) c1 c0 For 1 7 31 +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) c2 c1 If 2 13 26 +duckdb::SelectionVector.Inverted(const SelectionVector &,SelectionVector &,idx_t,idx_t) c3 c2 Then 3 22 25 +duckdb::SelectionVector.IsSet() const c0 - Function 0 0 3 +duckdb::SelectionVector.SelectionVector() c0 - Function 0 0 3 +duckdb::SelectionVector.SelectionVector(SelectionVector &&) c0 - Function 0 0 15 +duckdb::SelectionVector.SelectionVector(buffer_ptr &&) c0 - Function 0 0 6 +duckdb::SelectionVector.SelectionVector(const SelectionVector &) c0 - Function 0 0 4 +duckdb::SelectionVector.SelectionVector(idx_t) c0 - Function 0 0 4 +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) c0 - Function 0 0 17 +duckdb::SelectionVector.SelectionVector(idx_t,idx_t) c1 c0 For 1 6 16 +duckdb::SelectionVector.SelectionVector(sel_t *,idx_t) c0 - Function 0 0 6 +duckdb::SelectionVector.data() c0 - Function 0 0 3 +duckdb::SelectionVector.data() const c0 - Function 0 0 3 +duckdb::SelectionVector.get_index(idx_t) const c0 - Function 0 0 7 +duckdb::SelectionVector.get_index_unsafe(idx_t) const c0 - Function 0 0 10 +duckdb::SelectionVector.operator=(SelectionVector &&) c0 - Function 0 0 16 +duckdb::SelectionVector.operator[](idx_t) c0 - Function 0 0 10 +duckdb::SelectionVector.operator[](idx_t) const c0 - Function 0 0 10 +duckdb::SelectionVector.sel_data() c0 - Function 0 0 3 +duckdb::SelectionVector.set_index(idx_t,idx_t) c0 - Function 0 0 13 +duckdb::SelectionVector.swap(idx_t,idx_t) c0 - Function 0 0 22 diff --git a/.claude/harvest/duckdb-headers/ore/common_types_selection_vector/symbols.tsv b/.claude/harvest/duckdb-headers/ore/common_types_selection_vector/symbols.tsv new file mode 100644 index 000000000..ba7638ef5 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_types_selection_vector/symbols.tsv @@ -0,0 +1,66 @@ +s0 scope_kind - Function walk +s1 member own sel_vector clang +s2 member own capacity clang +s3 param param sel clang +s4 type - sel_t * clang +s5 param param capacity clang +s6 type - idx_t clang +s7 callee this Initialize clang +s8 param param count clang +s9 param param start clang +s10 callee this MaxValue clang +s11 scope_kind - For walk +s12 local local i clang +s13 callee this set_index clang +s14 param param sel_vector clang +s15 type - const SelectionVector & clang +s16 param param other clang +s17 type - SelectionVector && clang +s18 member ext sel_vector walk +s19 member own selection_data clang +s20 callee this shared_ptr clang +s21 callee this move clang +s22 member ext selection_data walk +s23 member ext capacity walk +s24 param param data clang +s25 type - buffer_ptr clang +s26 callee this operator= clang +s27 local local result clang +s28 type - SelectionVector clang +s29 callee this SelectionVector clang +s30 callee ext result walk +s31 callee ext set_index clang +s32 callee this walk +s33 callee this Incremental clang +s34 param param src clang +s35 param param dst clang +s36 type - SelectionVector & clang +s37 param param source_size clang +s38 local local src_idx clang +s39 local local dst_idx clang +s40 scope_kind - If walk +s41 callee ext src walk +s42 callee ext get_index clang +s43 scope_kind - Then walk +s44 callee ext dst walk +s45 param param capacity_p clang +s46 callee ext selection_data walk +s47 callee ext reset clang +s48 callee this make_shared_ptr clang +s49 callee ext owned_data walk +s50 callee ext get clang +s51 member ext owned_data walk +s52 callee this operator-> clang +s53 callee ext operator bool clang +s54 callee ext GetSize clang +s55 scope_kind - Else walk +s56 param param idx clang +s57 param param loc clang +s58 callee this __assert_fail clang +s59 callee this UnsafeNumericCast clang +s60 param param i clang +s61 param param j clang +s62 local local tmp clang +s63 type - sel_t clang +s64 callee this get_index_unsafe clang +s65 param param index clang diff --git a/.claude/harvest/duckdb-headers/ore/common_types_validity_mask/events.tsv b/.claude/harvest/duckdb-headers/ore/common_types_validity_mask/events.tsv new file mode 100644 index 000000000..e04f6ddd0 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_types_validity_mask/events.tsv @@ -0,0 +1,836 @@ +duckdb::TemplatedValidityData.EntryCount(idx_t) 0 ScopeEnter s0 - c0 - 1306 - - walk +duckdb::TemplatedValidityData.EntryCount(idx_t) 1 Param s1 - c0 - 1337 - s2 clang +duckdb::TemplatedValidityData.EntryCount(idx_t) 2 Return - - c0 - 1354 - - walk +duckdb::TemplatedValidityData.EntryCount(idx_t) 3 Read s1 - c0 - 1362 - - clang +duckdb::TemplatedValidityData.EntryCount(idx_t) 4 Read s12 - c0 - 1371 - - clang +duckdb::TemplatedValidityData.EntryCount(idx_t) 5 Read s12 - c0 - 1394 - - clang +duckdb::TemplatedValidityData.EntryCount(idx_t) 6 ScopeExit s0 - c0 - 1306 - - walk +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 0 ScopeEnter s0 - c0 - 927 - - walk +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 1 Param s10 - c0 - 956 - s11 clang +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 2 Param s1 - c0 - 980 - s2 clang +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 3 Cast - - c0 - 997 - static walk +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 4 Read s10 - c0 - 1006 - - clang +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 5 Cast - - c0 - 997 - functional walk +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 6 Call - s6 c0 - 997 - - walk +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 7 Decl s3 - c0 - 1024 - s2 clang +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 8 Call - s4 c0 - 1043 - static clang +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 9 Read s1 - c0 - 1054 - - clang +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 10 Write s5 - c0 - 1064 - - walk +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 11 Call - s6 c0 - 1077 - - walk +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 12 Read s3 - c0 - 1117 - - clang +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 13 ScopeEnter s7 - c1 c0 1133 - - walk +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 14 Decl s8 - c1 c0 1138 for_init s2 clang +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 15 Read s8 - c1 c0 1159 for_cond - clang +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 16 Read s3 - c1 c0 1171 for_cond - clang +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 17 ReadWrite s8 - c1 c0 1184 for_inc - clang +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 18 Condition - - c1 c0 1133 for - walk +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 19 Write s5 - c1 c0 1202 - - walk +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 20 Read s5 - c1 c0 1202 - - walk +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 21 Read s8 - c1 c0 1213 - - clang +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 22 Read s10 - c1 c0 1226 - - clang +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 23 Read s8 - c1 c0 1240 - - clang +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 24 ScopeExit s7 - c1 c0 1133 back_edge - walk +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) 25 ScopeExit s0 - c0 - 927 - - walk +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 0 ScopeEnter s0 - c0 - 651 - - walk +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 1 Param s1 - c0 - 689 - s2 clang +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 2 Decl s3 - c0 - 706 - s2 clang +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 3 Call - s4 c0 - 725 - static clang +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 4 Read s1 - c0 - 736 - - clang +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 5 Write s5 - c0 - 746 - - walk +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 6 Call - s6 c0 - 759 - - walk +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 7 Read s3 - c0 - 799 - - clang +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 8 ScopeEnter s7 - c1 c0 815 - - walk +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 9 Decl s8 - c1 c0 820 for_init s2 clang +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 10 Read s8 - c1 c0 841 for_cond - clang +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 11 Read s3 - c1 c0 853 for_cond - clang +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 12 ReadWrite s8 - c1 c0 866 for_inc - clang +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 13 Condition - - c1 c0 815 for - walk +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 14 Write s5 - c1 c0 884 - - walk +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 15 Read s5 - c1 c0 884 - - walk +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 16 Read s8 - c1 c0 895 - - clang +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 17 Read s9 - c1 c0 908 - - clang +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 18 ScopeExit s7 - c1 c0 815 back_edge - walk +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) 19 ScopeExit s0 - c0 - 651 - - walk +duckdb::TemplatedValidityMask.AllValid() const 0 ScopeEnter s0 - c0 - 2856 - - walk +duckdb::TemplatedValidityMask.AllValid() const 1 Return - - c0 - 2889 - - walk +duckdb::TemplatedValidityMask.AllValid() const 2 Call - s22 c0 - 2896 - member clang +duckdb::TemplatedValidityMask.AllValid() const 3 ScopeExit s0 - c0 - 2856 - - walk +duckdb::TemplatedValidityMask.AllValid(V) 0 ScopeEnter s0 - c0 - 4661 - - walk +duckdb::TemplatedValidityMask.AllValid(V) 1 Param s44 - c0 - 4689 - s45 clang +duckdb::TemplatedValidityMask.AllValid(V) 2 Return - - c0 - 4785 - - walk +duckdb::TemplatedValidityMask.AllValid(V) 3 Call - s6 c0 - 4792 - - walk +duckdb::TemplatedValidityMask.AllValid(V) 4 Read s44 - c0 - 4792 - - clang +duckdb::TemplatedValidityMask.AllValid(V) 5 ScopeExit s0 - c0 - 4661 - - walk +duckdb::TemplatedValidityMask.CanHaveNull() const 0 ScopeEnter s0 - c0 - 2700 - - walk +duckdb::TemplatedValidityMask.CanHaveNull() const 1 Return - - c0 - 2736 - - walk +duckdb::TemplatedValidityMask.CanHaveNull() const 2 Read s13 - c0 - 2743 - - walk +duckdb::TemplatedValidityMask.CanHaveNull() const 3 ScopeExit s0 - c0 - 2700 - - walk +duckdb::TemplatedValidityMask.CannotHaveNull() const 0 ScopeEnter s0 - c0 - 2634 - - walk +duckdb::TemplatedValidityMask.CannotHaveNull() const 1 Return - - c0 - 2673 - - walk +duckdb::TemplatedValidityMask.CannotHaveNull() const 2 Read s13 - c0 - 2681 - - walk +duckdb::TemplatedValidityMask.CannotHaveNull() const 3 ScopeExit s0 - c0 - 2634 - - walk +duckdb::TemplatedValidityMask.CheckAllInvalid(idx_t) const 0 ScopeEnter s0 - c0 - 3006 - - walk +duckdb::TemplatedValidityMask.CheckAllInvalid(idx_t) const 1 Param s1 - c0 - 3034 - s2 clang +duckdb::TemplatedValidityMask.CheckAllInvalid(idx_t) const 2 Return - - c0 - 3057 - - walk +duckdb::TemplatedValidityMask.CheckAllInvalid(idx_t) const 3 Call - s6 c0 - 3064 - - walk +duckdb::TemplatedValidityMask.CheckAllInvalid(idx_t) const 4 Call - s23 c0 - 3064 - member clang +duckdb::TemplatedValidityMask.CheckAllInvalid(idx_t) const 5 Read s1 - c0 - 3075 - - clang +duckdb::TemplatedValidityMask.CheckAllInvalid(idx_t) const 6 ScopeExit s0 - c0 - 3006 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t) const 0 ScopeEnter s0 - c0 - 2918 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t) const 1 Param s1 - c0 - 2944 - s2 clang +duckdb::TemplatedValidityMask.CheckAllValid(idx_t) const 2 Return - - c0 - 2967 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t) const 3 Call - s6 c0 - 2974 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t) const 4 Call - s23 c0 - 2974 - member clang +duckdb::TemplatedValidityMask.CheckAllValid(idx_t) const 5 Read s1 - c0 - 2985 - - clang +duckdb::TemplatedValidityMask.CheckAllValid(idx_t) const 6 Read s1 - c0 - 2995 - - clang +duckdb::TemplatedValidityMask.CheckAllValid(idx_t) const 7 ScopeExit s0 - c0 - 2918 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 0 ScopeEnter s0 - c0 - 3093 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 1 Param s24 - c0 - 3119 - s2 clang +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 2 Param s25 - c0 - 3129 - s2 clang +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 3 ScopeEnter s26 - c1 c0 3151 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 4 Call - s22 c1 c0 3155 - member clang +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 5 Condition - - c1 c0 3155 if - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 6 Branch - - c1 c0 3173 then - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 7 ScopeEnter s27 - c2 c1 3173 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 8 Return - - c2 c1 3178 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 9 ScopeExit s27 - c2 c1 3173 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 10 ScopeExit s26 - c1 c0 3151 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 11 ScopeEnter s7 - c3 c0 3197 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 12 Decl s28 - c3 c0 3202 for_init s2 clang +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 13 Read s25 - c3 c0 3212 for_init - clang +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 14 Read s28 - c3 c0 3218 for_cond - clang +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 15 Read s24 - c3 c0 3222 for_cond - clang +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 16 ReadWrite s28 - c3 c0 3226 for_inc - clang +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 17 Condition - - c3 c0 3197 for - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 18 ScopeEnter s26 - c4 c3 3236 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 19 Call - s6 c4 c3 3241 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 20 Read s29 - c4 c3 3241 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 21 Read s28 - c4 c3 3252 - - clang +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 22 Condition - - c4 c3 3240 if - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 23 Branch - - c4 c3 3256 then - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 24 ScopeEnter s27 - c5 c4 3256 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 25 Return - - c5 c4 3262 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 26 ScopeExit s27 - c5 c4 3256 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 27 ScopeExit s26 - c4 c3 3236 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 28 ScopeExit s7 - c3 c0 3197 back_edge - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 29 Return - - c0 - 3287 - - walk +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const 30 ScopeExit s0 - c0 - 3093 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 0 ScopeEnter s0 - c0 - 10625 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 1 Param s69 - c0 - 10642 - s20 clang +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 2 Param s1 - c0 - 10678 - s2 clang +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 3 Write s14 - c0 - 10695 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 4 Read s1 - c0 - 10706 - - clang +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 5 ScopeEnter s26 - c1 c0 10715 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 6 Call - s6 c1 c0 10719 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 7 Read s29 - c1 c0 10719 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 8 Read s69 - c1 c0 10719 - - clang +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 9 Condition - - c1 c0 10719 if - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 10 Branch - - c1 c0 10743 then - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 11 ScopeEnter s27 - c2 c1 10743 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 12 Write s41 - c2 c1 10748 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 13 Write s13 - c2 c1 10776 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 14 ScopeExit s27 - c2 c1 10743 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 15 Branch - - c1 c0 10810 else - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 16 ScopeEnter s38 - c3 c1 10810 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 17 Write s41 - c3 c1 10815 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 18 Call - s6 c3 c1 10831 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 19 Read s29 - c3 c1 10859 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 20 Read s69 - c3 c1 10859 - - clang +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 21 Read s1 - c3 c1 10880 - - clang +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 22 Write s13 - c3 c1 10891 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 23 Call - s6 c3 c1 10907 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 24 Read s29 - c3 c1 10907 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 25 Read s29 - c3 c1 10907 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 26 Read s41 - c3 c1 10907 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 27 ScopeExit s38 - c3 c1 10810 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 28 ScopeExit s26 - c1 c0 10715 - - walk +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) 29 ScopeExit s0 - c0 - 10625 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 0 ScopeEnter s0 - c0 - 3305 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 1 Param s1 - c0 - 3322 - s30 clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 2 ScopeEnter s26 - c1 c0 3351 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 3 Call - s22 c1 c0 3355 - member clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 4 Read s1 - c1 c0 3375 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 5 Condition - - c1 c0 3355 if - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 6 Branch - - c1 c0 3387 then - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 7 ScopeEnter s27 - c2 c1 3387 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 8 Return - - c2 c1 3392 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 9 Read s1 - c2 c1 3399 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 10 ScopeExit s27 - c2 c1 3387 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 11 ScopeExit s26 - c1 c0 3351 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 12 Decl s31 - c0 - 3413 - s2 clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 13 Decl s3 - c0 - 3432 - s30 clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 14 Call - s4 c0 - 3457 - static clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 15 Read s1 - c0 - 3468 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 16 ScopeEnter s7 - c3 c0 3478 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 17 Decl s8 - c3 c0 3483 for_init s2 clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 18 Read s8 - c3 c0 3504 for_cond - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 19 Read s3 - c3 c0 3516 for_cond - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 20 Condition - - c3 c0 3478 for - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 21 Decl s32 - c3 c0 3535 - s33 clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 22 Call - s34 c3 c0 3548 - member clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 23 ReadWrite s8 - c3 c0 3565 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 24 ScopeEnter s26 - c4 c3 3650 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 25 Read s8 - c4 c3 3654 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 26 Read s3 - c4 c3 3667 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 27 Read s1 - c4 c3 3682 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 28 Read s12 - c4 c3 3690 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 29 Condition - - c4 c3 3654 if - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 30 Branch - - c4 c3 3711 then - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 31 ScopeEnter s27 - c5 c4 3711 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 32 Decl s35 - c5 c4 3717 - s30 clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 33 Read s12 - c5 c4 3736 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 34 Read s1 - c5 c4 3754 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 35 Read s12 - c5 c4 3762 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 36 Decl s36 - c5 c4 3783 - s37 clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 37 Read s29 - c5 c4 3801 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 38 Read s35 - c5 c4 3830 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 39 ReadWrite s32 - c5 c4 3841 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 40 Read s36 - c5 c4 3850 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 41 ScopeExit s27 - c5 c4 3711 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 42 Branch - - c4 c3 3866 else - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 43 ScopeEnter s38 - c6 c4 3866 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 44 ScopeEnter s26 - c7 c6 3866 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 45 Call - s6 c7 c6 3870 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 46 Read s29 - c7 c6 3870 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 47 Read s32 - c7 c6 3879 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 48 Condition - - c7 c6 3870 if - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 49 Branch - - c7 c6 3887 then - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 50 ScopeEnter s27 - c8 c7 3887 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 51 ReadWrite s31 - c8 c7 3915 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 52 Read s12 - c8 c7 3924 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 53 Continue - - c8 c7 3944 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 54 ScopeExit s27 - c8 c7 3887 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 55 ScopeExit s26 - c7 c6 3866 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 56 ScopeExit s38 - c6 c4 3866 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 57 ScopeExit s26 - c4 c3 3650 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 58 ScopeEnter s39 - c9 c3 4013 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 59 Read s32 - c9 c3 4020 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 60 Condition - - c9 c3 4013 while - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 61 ReadWrite s32 - c9 c3 4033 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 62 Read s32 - c9 c3 4043 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 63 ReadWrite s31 - c9 c3 4061 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 64 ScopeExit s39 - c9 c3 4013 back_edge - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 65 ScopeExit s7 - c3 c0 3478 back_edge - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 66 Return - - c0 - 4080 - - walk +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 67 Read s31 - c0 - 4087 - - clang +duckdb::TemplatedValidityMask.CountValid(const idx_t) const 68 ScopeExit s0 - c0 - 3305 - - walk +duckdb::TemplatedValidityMask.EnsureWritable() 0 ScopeEnter s0 - c0 - 8270 - - walk +duckdb::TemplatedValidityMask.EnsureWritable() 1 ScopeEnter s26 - c1 c0 8303 - - walk +duckdb::TemplatedValidityMask.EnsureWritable() 2 Read s13 - c1 c0 8308 - - walk +duckdb::TemplatedValidityMask.EnsureWritable() 3 Condition - - c1 c0 8307 if - walk +duckdb::TemplatedValidityMask.EnsureWritable() 4 Branch - - c1 c0 8323 then - walk +duckdb::TemplatedValidityMask.EnsureWritable() 5 ScopeEnter s27 - c2 c1 8323 - - walk +duckdb::TemplatedValidityMask.EnsureWritable() 6 Call - s6 c2 c1 8328 - - walk +duckdb::TemplatedValidityMask.EnsureWritable() 7 Read s29 - c2 c1 8328 - - walk +duckdb::TemplatedValidityMask.EnsureWritable() 8 ScopeExit s27 - c2 c1 8323 - - walk +duckdb::TemplatedValidityMask.EnsureWritable() 9 ScopeExit s26 - c1 c0 8303 - - walk +duckdb::TemplatedValidityMask.EnsureWritable() 10 ScopeExit s0 - c0 - 8270 - - walk +duckdb::TemplatedValidityMask.EntryCount(idx_t) 0 ScopeEnter s0 - c0 - 4306 - - walk +duckdb::TemplatedValidityMask.EntryCount(idx_t) 1 Param s1 - c0 - 4337 - s2 clang +duckdb::TemplatedValidityMask.EntryCount(idx_t) 2 Return - - c0 - 4354 - - walk +duckdb::TemplatedValidityMask.EntryCount(idx_t) 3 Call - s6 c0 - 4361 - - walk +duckdb::TemplatedValidityMask.EntryCount(idx_t) 4 Read s1 - c0 - 4388 - - clang +duckdb::TemplatedValidityMask.EntryCount(idx_t) 5 ScopeExit s0 - c0 - 4306 - - walk +duckdb::TemplatedValidityMask.EntryWithValidBits(idx_t) 0 ScopeEnter s0 - c0 - 5273 - - walk +duckdb::TemplatedValidityMask.EntryWithValidBits(idx_t) 1 Param s51 - c0 - 5308 - s2 clang +duckdb::TemplatedValidityMask.EntryWithValidBits(idx_t) 2 ScopeEnter s26 - c1 c0 5321 - - walk +duckdb::TemplatedValidityMask.EntryWithValidBits(idx_t) 3 Read s51 - c1 c0 5325 - - clang +duckdb::TemplatedValidityMask.EntryWithValidBits(idx_t) 4 Condition - - c1 c0 5325 if - walk +duckdb::TemplatedValidityMask.EntryWithValidBits(idx_t) 5 Branch - - c1 c0 5333 then - walk +duckdb::TemplatedValidityMask.EntryWithValidBits(idx_t) 6 ScopeEnter s27 - c2 c1 5333 - - walk +duckdb::TemplatedValidityMask.EntryWithValidBits(idx_t) 7 Return - - c2 c1 5338 - - walk +duckdb::TemplatedValidityMask.EntryWithValidBits(idx_t) 8 Call - s6 c2 c1 5345 - - walk +duckdb::TemplatedValidityMask.EntryWithValidBits(idx_t) 9 ScopeExit s27 - c2 c1 5333 - - walk +duckdb::TemplatedValidityMask.EntryWithValidBits(idx_t) 10 ScopeExit s26 - c1 c0 5321 - - walk +duckdb::TemplatedValidityMask.EntryWithValidBits(idx_t) 11 Return - - c0 - 5357 - - walk +duckdb::TemplatedValidityMask.EntryWithValidBits(idx_t) 12 Read s12 - c0 - 5394 - - clang +duckdb::TemplatedValidityMask.EntryWithValidBits(idx_t) 13 Read s51 - c0 - 5411 - - clang +duckdb::TemplatedValidityMask.EntryWithValidBits(idx_t) 14 ScopeExit s0 - c0 - 5273 - - walk +duckdb::TemplatedValidityMask.GetAllocationSize() const 0 ScopeEnter s0 - c0 - 9949 - - walk +duckdb::TemplatedValidityMask.GetAllocationSize() const 1 ScopeEnter s26 - c1 c0 9985 - - walk +duckdb::TemplatedValidityMask.GetAllocationSize() const 2 Read s13 - c1 c0 9990 - - walk +duckdb::TemplatedValidityMask.GetAllocationSize() const 3 Condition - - c1 c0 9989 if - walk +duckdb::TemplatedValidityMask.GetAllocationSize() const 4 Branch - - c1 c0 10005 then - walk +duckdb::TemplatedValidityMask.GetAllocationSize() const 5 ScopeEnter s27 - c2 c1 10005 - - walk +duckdb::TemplatedValidityMask.GetAllocationSize() const 6 Return - - c2 c1 10010 - - walk +duckdb::TemplatedValidityMask.GetAllocationSize() const 7 ScopeExit s27 - c2 c1 10005 - - walk +duckdb::TemplatedValidityMask.GetAllocationSize() const 8 ScopeExit s26 - c1 c0 9985 - - walk +duckdb::TemplatedValidityMask.GetAllocationSize() const 9 Return - - c0 - 10026 - - walk +duckdb::TemplatedValidityMask.GetAllocationSize() const 10 Call - s4 c0 - 10033 - static clang +duckdb::TemplatedValidityMask.GetAllocationSize() const 11 Read s14 - c0 - 10044 - - walk +duckdb::TemplatedValidityMask.GetAllocationSize() const 12 ScopeExit s0 - c0 - 9949 - - walk +duckdb::TemplatedValidityMask.GetData() const 0 ScopeEnter s0 - c0 - 4099 - - walk +duckdb::TemplatedValidityMask.GetData() const 1 Return - - c0 - 4129 - - walk +duckdb::TemplatedValidityMask.GetData() const 2 Read s13 - c0 - 4136 - - walk +duckdb::TemplatedValidityMask.GetData() const 3 ScopeExit s0 - c0 - 4099 - - walk +duckdb::TemplatedValidityMask.GetEntryIndex(idx_t,idx_t &,idx_t &) 0 ScopeEnter s0 - c0 - 5020 - - walk +duckdb::TemplatedValidityMask.GetEntryIndex(idx_t,idx_t &,idx_t &) 1 Param s49 - c0 - 5053 - s2 clang +duckdb::TemplatedValidityMask.GetEntryIndex(idx_t,idx_t &,idx_t &) 2 Param s42 - c0 - 5068 - s50 clang +duckdb::TemplatedValidityMask.GetEntryIndex(idx_t,idx_t &,idx_t &) 3 Param s47 - c0 - 5086 - s50 clang +duckdb::TemplatedValidityMask.GetEntryIndex(idx_t,idx_t &,idx_t &) 4 Write s42 - c0 - 5111 - - clang +duckdb::TemplatedValidityMask.GetEntryIndex(idx_t,idx_t &,idx_t &) 5 Read s49 - c0 - 5123 - - clang +duckdb::TemplatedValidityMask.GetEntryIndex(idx_t,idx_t &,idx_t &) 6 Read s12 - c0 - 5133 - - clang +duckdb::TemplatedValidityMask.GetEntryIndex(idx_t,idx_t &,idx_t &) 7 Write s47 - c0 - 5151 - - clang +duckdb::TemplatedValidityMask.GetEntryIndex(idx_t,idx_t &,idx_t &) 8 Read s49 - c0 - 5166 - - clang +duckdb::TemplatedValidityMask.GetEntryIndex(idx_t,idx_t &,idx_t &) 9 Read s12 - c0 - 5176 - - clang +duckdb::TemplatedValidityMask.GetEntryIndex(idx_t,idx_t &,idx_t &) 10 ScopeExit s0 - c0 - 5020 - - walk +duckdb::TemplatedValidityMask.GetValidityEntry(idx_t) const 0 ScopeEnter s0 - c0 - 4400 - - walk +duckdb::TemplatedValidityMask.GetValidityEntry(idx_t) const 1 Param s42 - c0 - 4426 - s2 clang +duckdb::TemplatedValidityMask.GetValidityEntry(idx_t) const 2 ScopeEnter s26 - c1 c0 4453 - - walk +duckdb::TemplatedValidityMask.GetValidityEntry(idx_t) const 3 Read s13 - c1 c0 4458 - - walk +duckdb::TemplatedValidityMask.GetValidityEntry(idx_t) const 4 Condition - - c1 c0 4457 if - walk +duckdb::TemplatedValidityMask.GetValidityEntry(idx_t) const 5 Branch - - c1 c0 4473 then - walk +duckdb::TemplatedValidityMask.GetValidityEntry(idx_t) const 6 ScopeEnter s27 - c2 c1 4473 - - walk +duckdb::TemplatedValidityMask.GetValidityEntry(idx_t) const 7 Return - - c2 c1 4478 - - walk +duckdb::TemplatedValidityMask.GetValidityEntry(idx_t) const 8 Read s29 - c2 c1 4485 - - walk +duckdb::TemplatedValidityMask.GetValidityEntry(idx_t) const 9 ScopeExit s27 - c2 c1 4473 - - walk +duckdb::TemplatedValidityMask.GetValidityEntry(idx_t) const 10 ScopeExit s26 - c1 c0 4453 - - walk +duckdb::TemplatedValidityMask.GetValidityEntry(idx_t) const 11 Return - - c0 - 4518 - - walk +duckdb::TemplatedValidityMask.GetValidityEntry(idx_t) const 12 Call - s43 c0 - 4525 - member clang +duckdb::TemplatedValidityMask.GetValidityEntry(idx_t) const 13 Read s42 - c0 - 4548 - - clang +duckdb::TemplatedValidityMask.GetValidityEntry(idx_t) const 14 ScopeExit s0 - c0 - 4400 - - walk +duckdb::TemplatedValidityMask.GetValidityEntryUnsafe(idx_t) const 0 ScopeEnter s0 - c0 - 4564 - - walk +duckdb::TemplatedValidityMask.GetValidityEntryUnsafe(idx_t) const 1 Param s42 - c0 - 4597 - s2 clang +duckdb::TemplatedValidityMask.GetValidityEntryUnsafe(idx_t) const 2 Return - - c0 - 4624 - - walk +duckdb::TemplatedValidityMask.GetValidityEntryUnsafe(idx_t) const 3 Read s13 - c0 - 4631 - - walk +duckdb::TemplatedValidityMask.GetValidityEntryUnsafe(idx_t) const 4 Read s42 - c0 - 4645 - - clang +duckdb::TemplatedValidityMask.GetValidityEntryUnsafe(idx_t) const 5 ScopeExit s0 - c0 - 4564 - - walk +duckdb::TemplatedValidityMask.Initialize() 0 ScopeEnter s0 - c0 - 10570 - - walk +duckdb::TemplatedValidityMask.Initialize() 1 Call - s6 c0 - 10599 - - walk +duckdb::TemplatedValidityMask.Initialize() 2 Read s29 - c0 - 10599 - - walk +duckdb::TemplatedValidityMask.Initialize() 3 Read s14 - c0 - 10610 - - walk +duckdb::TemplatedValidityMask.Initialize() 4 ScopeExit s0 - c0 - 10570 - - walk +duckdb::TemplatedValidityMask.Initialize(const TemplatedValidityMask &) 0 ScopeEnter s0 - c0 - 10231 - - walk +duckdb::TemplatedValidityMask.Initialize(const TemplatedValidityMask &) 1 Param s69 - c0 - 10254 - s20 clang +duckdb::TemplatedValidityMask.Initialize(const TemplatedValidityMask &) 2 Write s13 - c0 - 10294 - - walk +duckdb::TemplatedValidityMask.Initialize(const TemplatedValidityMask &) 3 Read s29 - c0 - 10310 - - walk +duckdb::TemplatedValidityMask.Initialize(const TemplatedValidityMask &) 4 Read s69 - c0 - 10310 - - clang +duckdb::TemplatedValidityMask.Initialize(const TemplatedValidityMask &) 5 Write s41 - c0 - 10333 - - walk +duckdb::TemplatedValidityMask.Initialize(const TemplatedValidityMask &) 6 Read s29 - c0 - 10349 - - walk +duckdb::TemplatedValidityMask.Initialize(const TemplatedValidityMask &) 7 Read s69 - c0 - 10349 - - clang +duckdb::TemplatedValidityMask.Initialize(const TemplatedValidityMask &) 8 Write s14 - c0 - 10372 - - walk +duckdb::TemplatedValidityMask.Initialize(const TemplatedValidityMask &) 9 Read s29 - c0 - 10383 - - walk +duckdb::TemplatedValidityMask.Initialize(const TemplatedValidityMask &) 10 Read s69 - c0 - 10383 - - clang +duckdb::TemplatedValidityMask.Initialize(const TemplatedValidityMask &) 11 ScopeExit s0 - c0 - 10231 - - walk +duckdb::TemplatedValidityMask.Initialize(idx_t) 0 ScopeEnter s0 - c0 - 10403 - - walk +duckdb::TemplatedValidityMask.Initialize(idx_t) 1 Param s1 - c0 - 10426 - s2 clang +duckdb::TemplatedValidityMask.Initialize(idx_t) 2 Write s14 - c0 - 10443 - - walk +duckdb::TemplatedValidityMask.Initialize(idx_t) 3 Read s1 - c0 - 10454 - - clang +duckdb::TemplatedValidityMask.Initialize(idx_t) 4 Write s41 - c0 - 10463 - - walk +duckdb::TemplatedValidityMask.Initialize(idx_t) 5 Call - s6 c0 - 10479 - - walk +duckdb::TemplatedValidityMask.Initialize(idx_t) 6 Read s1 - c0 - 10507 - - clang +duckdb::TemplatedValidityMask.Initialize(idx_t) 7 Write s13 - c0 - 10517 - - walk +duckdb::TemplatedValidityMask.Initialize(idx_t) 8 Call - s6 c0 - 10533 - - walk +duckdb::TemplatedValidityMask.Initialize(idx_t) 9 Read s29 - c0 - 10533 - - walk +duckdb::TemplatedValidityMask.Initialize(idx_t) 10 Read s29 - c0 - 10533 - - walk +duckdb::TemplatedValidityMask.Initialize(idx_t) 11 Read s41 - c0 - 10533 - - walk +duckdb::TemplatedValidityMask.Initialize(idx_t) 12 ScopeExit s0 - c0 - 10403 - - walk +duckdb::TemplatedValidityMask.Initialize(validity_t *,idx_t) 0 ScopeEnter s0 - c0 - 10080 - - walk +duckdb::TemplatedValidityMask.Initialize(validity_t *,idx_t) 1 Param s66 - c0 - 10103 - s67 clang +duckdb::TemplatedValidityMask.Initialize(validity_t *,idx_t) 2 Param s68 - c0 - 10125 - s2 clang +duckdb::TemplatedValidityMask.Initialize(validity_t *,idx_t) 3 Call - s6 c0 - 10149 - - walk +duckdb::TemplatedValidityMask.Initialize(validity_t *,idx_t) 4 Read s29 - c0 - 10149 - - walk +duckdb::TemplatedValidityMask.Initialize(validity_t *,idx_t) 5 Read s41 - c0 - 10149 - - walk +duckdb::TemplatedValidityMask.Initialize(validity_t *,idx_t) 6 Write s13 - c0 - 10174 - - walk +duckdb::TemplatedValidityMask.Initialize(validity_t *,idx_t) 7 Read s66 - c0 - 10190 - - clang +duckdb::TemplatedValidityMask.Initialize(validity_t *,idx_t) 8 Write s14 - c0 - 10202 - - walk +duckdb::TemplatedValidityMask.Initialize(validity_t *,idx_t) 9 Read s68 - c0 - 10213 - - clang +duckdb::TemplatedValidityMask.Initialize(validity_t *,idx_t) 10 ScopeExit s0 - c0 - 10080 - - walk +duckdb::TemplatedValidityMask.IsMaskSet() const 0 ScopeEnter s0 - c0 - 9853 - - walk +duckdb::TemplatedValidityMask.IsMaskSet() const 1 ScopeEnter s26 - c1 c0 9887 - - walk +duckdb::TemplatedValidityMask.IsMaskSet() const 2 Read s13 - c1 c0 9891 - - walk +duckdb::TemplatedValidityMask.IsMaskSet() const 3 Condition - - c1 c0 9891 if - walk +duckdb::TemplatedValidityMask.IsMaskSet() const 4 Branch - - c1 c0 9906 then - walk +duckdb::TemplatedValidityMask.IsMaskSet() const 5 ScopeEnter s27 - c2 c1 9906 - - walk +duckdb::TemplatedValidityMask.IsMaskSet() const 6 Return - - c2 c1 9911 - - walk +duckdb::TemplatedValidityMask.IsMaskSet() const 7 ScopeExit s27 - c2 c1 9906 - - walk +duckdb::TemplatedValidityMask.IsMaskSet() const 8 ScopeExit s26 - c1 c0 9887 - - walk +duckdb::TemplatedValidityMask.IsMaskSet() const 9 Return - - c0 - 9930 - - walk +duckdb::TemplatedValidityMask.IsMaskSet() const 10 ScopeExit s0 - c0 - 9853 - - walk +duckdb::TemplatedValidityMask.NoneValid(V) 0 ScopeEnter s0 - c0 - 4832 - - walk +duckdb::TemplatedValidityMask.NoneValid(V) 1 Param s44 - c0 - 4861 - s45 clang +duckdb::TemplatedValidityMask.NoneValid(V) 2 Return - - c0 - 4874 - - walk +duckdb::TemplatedValidityMask.NoneValid(V) 3 Call - s6 c0 - 4881 - - walk +duckdb::TemplatedValidityMask.NoneValid(V) 4 Read s44 - c0 - 4881 - - clang +duckdb::TemplatedValidityMask.NoneValid(V) 5 ScopeExit s0 - c0 - 4832 - - walk +duckdb::TemplatedValidityMask.Reset(idx_t) 0 ScopeEnter s0 - c0 - 4155 - - walk +duckdb::TemplatedValidityMask.Reset(idx_t) 1 Param s40 - c0 - 4173 - s2 clang +duckdb::TemplatedValidityMask.Reset(idx_t) 2 Write s13 - c0 - 4222 - - walk +duckdb::TemplatedValidityMask.Reset(idx_t) 3 Call - s6 c0 - 4249 - - walk +duckdb::TemplatedValidityMask.Reset(idx_t) 4 Read s29 - c0 - 4249 - - walk +duckdb::TemplatedValidityMask.Reset(idx_t) 5 Read s41 - c0 - 4249 - - walk +duckdb::TemplatedValidityMask.Reset(idx_t) 6 Write s14 - c0 - 4274 - - walk +duckdb::TemplatedValidityMask.Reset(idx_t) 7 Read s40 - c0 - 4285 - - clang +duckdb::TemplatedValidityMask.Reset(idx_t) 8 ScopeExit s0 - c0 - 4155 - - walk +duckdb::TemplatedValidityMask.RowIsValid(const V &,const idx_t &) 0 ScopeEnter s0 - c0 - 4897 - - walk +duckdb::TemplatedValidityMask.RowIsValid(const V &,const idx_t &) 1 Param s44 - c0 - 4927 - s46 clang +duckdb::TemplatedValidityMask.RowIsValid(const V &,const idx_t &) 2 Param s47 - c0 - 4943 - s48 clang +duckdb::TemplatedValidityMask.RowIsValid(const V &,const idx_t &) 3 Return - - c0 - 4974 - - walk +duckdb::TemplatedValidityMask.RowIsValid(const V &,const idx_t &) 4 Read s44 - c0 - 4981 - - clang +duckdb::TemplatedValidityMask.RowIsValid(const V &,const idx_t &) 5 Call - s6 c0 - 4990 - - walk +duckdb::TemplatedValidityMask.RowIsValid(const V &,const idx_t &) 6 Call - s6 c0 - 4990 - - walk +duckdb::TemplatedValidityMask.RowIsValid(const V &,const idx_t &) 7 Call - s6 c0 - 4998 - - walk +duckdb::TemplatedValidityMask.RowIsValid(const V &,const idx_t &) 8 Read s47 - c0 - 5000 - - clang +duckdb::TemplatedValidityMask.RowIsValid(const V &,const idx_t &) 9 ScopeExit s0 - c0 - 4897 - - walk +duckdb::TemplatedValidityMask.RowIsValid(idx_t) const 0 ScopeEnter s0 - c0 - 5987 - - walk +duckdb::TemplatedValidityMask.RowIsValid(idx_t) const 1 Param s49 - c0 - 6010 - s2 clang +duckdb::TemplatedValidityMask.RowIsValid(idx_t) const 2 ScopeEnter s26 - c1 c0 6247 - - walk +duckdb::TemplatedValidityMask.RowIsValid(idx_t) const 3 Read s13 - c1 c0 6252 - - walk +duckdb::TemplatedValidityMask.RowIsValid(idx_t) const 4 Condition - - c1 c0 6251 if - walk +duckdb::TemplatedValidityMask.RowIsValid(idx_t) const 5 Branch - - c1 c0 6267 then - walk +duckdb::TemplatedValidityMask.RowIsValid(idx_t) const 6 ScopeEnter s27 - c2 c1 6267 - - walk +duckdb::TemplatedValidityMask.RowIsValid(idx_t) const 7 Return - - c2 c1 6272 - - walk +duckdb::TemplatedValidityMask.RowIsValid(idx_t) const 8 ScopeExit s27 - c2 c1 6267 - - walk +duckdb::TemplatedValidityMask.RowIsValid(idx_t) const 9 ScopeExit s26 - c1 c0 6247 - - walk +duckdb::TemplatedValidityMask.RowIsValid(idx_t) const 10 Return - - c0 - 6291 - - walk +duckdb::TemplatedValidityMask.RowIsValid(idx_t) const 11 Call - s54 c0 - 6298 - member clang +duckdb::TemplatedValidityMask.RowIsValid(idx_t) const 12 Read s49 - c0 - 6315 - - clang +duckdb::TemplatedValidityMask.RowIsValid(idx_t) const 13 ScopeExit s0 - c0 - 5987 - - walk +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 0 ScopeEnter s0 - c0 - 5658 - - walk +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 1 Param s49 - c0 - 5687 - s2 clang +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 2 Cast - - c0 - 5712 - static walk +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 3 Read s13 - c0 - 5721 - - walk +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 4 Cast - - c0 - 5712 - functional walk +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 5 Call - s6 c0 - 5712 - - walk +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 6 Decl s8 - c0 - 5739 - s2 clang +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 7 Decl s52 - c0 - 5756 - s2 clang +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 8 Call - s53 c0 - 5772 - static clang +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 9 Read s49 - c0 - 5786 - - clang +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 10 Read s8 - c0 - 5795 - - clang +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 11 Read s52 - c0 - 5806 - - clang +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 12 Decl s32 - c0 - 5823 - s33 clang +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 13 Call - s43 c0 - 5836 - member clang +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 14 Read s8 - c0 - 5859 - - clang +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 15 Return - - c0 - 5873 - - walk +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 16 Call - s6 c0 - 5880 - - walk +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 17 Read s29 - c0 - 5880 - - walk +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 18 Read s32 - c0 - 5891 - - clang +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 19 Read s52 - c0 - 5898 - - clang +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const 20 ScopeExit s0 - c0 - 5658 - - walk +duckdb::TemplatedValidityMask.Set(idx_t,bool) 0 ScopeEnter s0 - c0 - 8059 - - walk +duckdb::TemplatedValidityMask.Set(idx_t,bool) 1 Param s49 - c0 - 8075 - s2 clang +duckdb::TemplatedValidityMask.Set(idx_t,bool) 2 Param s56 - c0 - 8090 - s57 clang +duckdb::TemplatedValidityMask.Set(idx_t,bool) 3 ScopeEnter s26 - c1 c0 8106 - - walk +duckdb::TemplatedValidityMask.Set(idx_t,bool) 4 Read s56 - c1 c0 8110 - - clang +duckdb::TemplatedValidityMask.Set(idx_t,bool) 5 Condition - - c1 c0 8110 if - walk +duckdb::TemplatedValidityMask.Set(idx_t,bool) 6 Branch - - c1 c0 8117 then - walk +duckdb::TemplatedValidityMask.Set(idx_t,bool) 7 ScopeEnter s27 - c2 c1 8117 - - walk +duckdb::TemplatedValidityMask.Set(idx_t,bool) 8 Call - s58 c2 c1 8122 - member clang +duckdb::TemplatedValidityMask.Set(idx_t,bool) 9 Read s49 - c2 c1 8131 - - clang +duckdb::TemplatedValidityMask.Set(idx_t,bool) 10 ScopeExit s27 - c2 c1 8117 - - walk +duckdb::TemplatedValidityMask.Set(idx_t,bool) 11 Branch - - c1 c0 8150 else - walk +duckdb::TemplatedValidityMask.Set(idx_t,bool) 12 ScopeEnter s38 - c3 c1 8150 - - walk +duckdb::TemplatedValidityMask.Set(idx_t,bool) 13 Call - s59 c3 c1 8155 - member clang +duckdb::TemplatedValidityMask.Set(idx_t,bool) 14 Read s49 - c3 c1 8166 - - clang +duckdb::TemplatedValidityMask.Set(idx_t,bool) 15 ScopeExit s38 - c3 c1 8150 - - walk +duckdb::TemplatedValidityMask.Set(idx_t,bool) 16 ScopeExit s26 - c1 c0 8106 - - walk +duckdb::TemplatedValidityMask.Set(idx_t,bool) 17 ScopeExit s0 - c0 - 8059 - - walk +duckdb::TemplatedValidityMask.SetAllInvalid(idx_t) 0 ScopeEnter s0 - c0 - 9134 - - walk +duckdb::TemplatedValidityMask.SetAllInvalid(idx_t) 1 Param s1 - c0 - 9160 - s2 clang +duckdb::TemplatedValidityMask.SetAllInvalid(idx_t) 2 Call - s65 c0 - 9177 - member clang +duckdb::TemplatedValidityMask.SetAllInvalid(idx_t) 3 Read s1 - c0 - 9193 - - clang +duckdb::TemplatedValidityMask.SetAllInvalid(idx_t) 4 Call - s4 c0 - 9203 - static clang +duckdb::TemplatedValidityMask.SetAllInvalid(idx_t) 5 Read s1 - c0 - 9214 - - clang +duckdb::TemplatedValidityMask.SetAllInvalid(idx_t) 6 ScopeExit s0 - c0 - 9134 - - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 0 ScopeEnter s0 - c0 - 9301 - - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 1 Param s1 - c0 - 9325 - s2 clang +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 2 Call - s62 c0 - 9342 - member clang +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 3 ScopeEnter s26 - c1 c0 9362 - - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 4 Read s1 - c1 c0 9366 - - clang +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 5 Condition - - c1 c0 9366 if - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 6 Branch - - c1 c0 9378 then - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 7 ScopeEnter s27 - c2 c1 9378 - - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 8 Return - - c2 c1 9383 - - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 9 ScopeExit s27 - c2 c1 9378 - - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 10 ScopeExit s26 - c1 c0 9362 - - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 11 Decl s63 - c0 - 9397 - s33 clang +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 12 Call - s6 c0 - 9421 - - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 13 Read s29 - c0 - 9421 - - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 14 Read s1 - c0 - 9448 - - clang +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 15 ScopeEnter s7 - c3 c0 9462 - - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 16 Decl s28 - c3 c0 9467 for_init s2 clang +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 17 Call - s6 c3 c0 9480 for_cond - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 18 Read s28 - c3 c0 9480 for_cond - clang +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 19 Read s63 - c3 c0 9484 for_cond - clang +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 20 ReadWrite s28 - c3 c0 9502 for_inc - clang +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 21 Condition - - c3 c0 9462 for - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 22 Write s13 - c3 c0 9512 - - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 23 Read s13 - c3 c0 9512 - - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 24 Read s28 - c3 c0 9526 - - clang +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 25 Read s29 - c3 c0 9531 - - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 26 ScopeExit s7 - c3 c0 9462 back_edge - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 27 Decl s64 - c0 - 9564 - s2 clang +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 28 Read s1 - c0 - 9587 - - clang +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 29 Read s12 - c0 - 9595 - - clang +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 30 ReadWrite s13 - c0 - 9613 - - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 31 Read s13 - c0 - 9613 - - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 32 Read s63 - c0 - 9627 - - clang +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 33 Read s64 - c0 - 9649 - - clang +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 34 Read s29 - c0 - 9714 - - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 35 Cast - - c0 - 9784 - static walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 36 Call - s6 c0 - 9799 - - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 37 Read s29 - c0 - 9799 - - walk +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 38 Read s64 - c0 - 9829 - - clang +duckdb::TemplatedValidityMask.SetAllValid(idx_t) 39 ScopeExit s0 - c0 - 9301 - - walk +duckdb::TemplatedValidityMask.SetInvalid(idx_t) 0 ScopeEnter s0 - c0 - 7631 - - walk +duckdb::TemplatedValidityMask.SetInvalid(idx_t) 1 Param s49 - c0 - 7654 - s2 clang +duckdb::TemplatedValidityMask.SetInvalid(idx_t) 2 ScopeEnter s26 - c1 c0 7885 - - walk +duckdb::TemplatedValidityMask.SetInvalid(idx_t) 3 Read s13 - c1 c0 7890 - - walk +duckdb::TemplatedValidityMask.SetInvalid(idx_t) 4 Condition - - c1 c0 7889 if - walk +duckdb::TemplatedValidityMask.SetInvalid(idx_t) 5 Branch - - c1 c0 7905 then - walk +duckdb::TemplatedValidityMask.SetInvalid(idx_t) 6 ScopeEnter s27 - c2 c1 7905 - - walk +duckdb::TemplatedValidityMask.SetInvalid(idx_t) 7 Call - s6 c2 c1 7910 - - walk +duckdb::TemplatedValidityMask.SetInvalid(idx_t) 8 Read s29 - c2 c1 7910 - - walk +duckdb::TemplatedValidityMask.SetInvalid(idx_t) 9 Read s14 - c2 c1 7921 - - walk +duckdb::TemplatedValidityMask.SetInvalid(idx_t) 10 ScopeExit s27 - c2 c1 7905 - - walk +duckdb::TemplatedValidityMask.SetInvalid(idx_t) 11 ScopeExit s26 - c1 c0 7885 - - walk +duckdb::TemplatedValidityMask.SetInvalid(idx_t) 12 Call - s6 c0 - 7938 - - walk +duckdb::TemplatedValidityMask.SetInvalid(idx_t) 13 Read s29 - c0 - 7938 - - walk +duckdb::TemplatedValidityMask.SetInvalid(idx_t) 14 Read s49 - c0 - 7955 - - clang +duckdb::TemplatedValidityMask.SetInvalid(idx_t) 15 ScopeExit s0 - c0 - 7631 - - walk +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t) 0 ScopeEnter s0 - c0 - 7380 - - walk +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t) 1 Param s49 - c0 - 7409 - s2 clang +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t) 2 Decl s8 - c0 - 7428 - s2 clang +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t) 3 Decl s52 - c0 - 7445 - s2 clang +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t) 4 Call - s53 c0 - 7461 - static clang +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t) 5 Read s49 - c0 - 7475 - - clang +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t) 6 Read s8 - c0 - 7484 - - clang +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t) 7 Read s52 - c0 - 7495 - - clang +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t) 8 Call - s6 c0 - 7512 - - walk +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t) 9 Read s29 - c0 - 7512 - - walk +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t) 10 Read s8 - c0 - 7529 - - clang +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t) 11 Read s52 - c0 - 7540 - - clang +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t) 12 ScopeExit s0 - c0 - 7380 - - walk +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t,idx_t) 0 ScopeEnter s0 - c0 - 7153 - - walk +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t,idx_t) 1 Param s42 - c0 - 7182 - s2 clang +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t,idx_t) 2 Param s47 - c0 - 7199 - s2 clang +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t,idx_t) 3 Cast - - c0 - 7223 - static walk +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t,idx_t) 4 Read s13 - c0 - 7232 - - walk +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t,idx_t) 5 Cast - - c0 - 7223 - functional walk +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t,idx_t) 6 Call - s6 c0 - 7223 - - walk +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t,idx_t) 7 ReadWrite s13 - c0 - 7250 - - walk +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t,idx_t) 8 Read s13 - c0 - 7250 - - walk +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t,idx_t) 9 Read s42 - c0 - 7264 - - clang +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t,idx_t) 10 Call - s6 c0 - 7280 - - walk +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t,idx_t) 11 Call - s6 c0 - 7280 - - walk +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t,idx_t) 12 Call - s6 c0 - 7288 - - walk +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t,idx_t) 13 Read s47 - c0 - 7290 - - clang +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t,idx_t) 14 ScopeExit s0 - c0 - 7153 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 0 ScopeEnter s0 - c0 - 8482 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 1 Param s1 - c0 - 8510 - s30 clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 2 Param s60 - c0 - 8529 - s30 clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 3 Param s61 - c0 - 8554 - s30 clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 4 Call - s62 c0 - 8581 - member clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 5 ScopeEnter s26 - c1 c0 8601 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 6 Read s1 - c1 c0 8605 - - clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 7 Condition - - c1 c0 8605 if - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 8 Branch - - c1 c0 8617 then - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 9 ScopeEnter s27 - c2 c1 8617 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 10 Return - - c2 c1 8622 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 11 ScopeExit s27 - c2 c1 8617 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 12 ScopeExit s26 - c1 c0 8601 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 13 Decl s63 - c0 - 8636 - s37 clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 14 Call - s6 c0 - 8666 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 15 Read s29 - c0 - 8666 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 16 Read s1 - c0 - 8693 - - clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 17 ScopeEnter s7 - c3 c0 8707 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 18 Decl s28 - c3 c0 8712 for_init s2 clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 19 Read s60 - c3 c0 8722 for_init - clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 20 Call - s6 c3 c0 8735 for_cond - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 21 Read s28 - c3 c0 8735 for_cond - clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 22 Call - s6 c3 c0 8739 for_cond - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 23 Read s63 - c3 c0 8748 for_cond - clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 24 Read s61 - c3 c0 8766 for_cond - clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 25 ReadWrite s28 - c3 c0 8778 for_inc - clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 26 Condition - - c3 c0 8707 for - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 27 Write s13 - c3 c0 8788 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 28 Read s13 - c3 c0 8788 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 29 Read s28 - c3 c0 8802 - - clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 30 ScopeExit s7 - c3 c0 8707 back_edge - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 31 ScopeEnter s26 - c4 c0 8816 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 32 Read s61 - c4 c0 8820 - - clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 33 Read s63 - c4 c0 8833 - - clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 34 Condition - - c4 c0 8820 if - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 35 Branch - - c4 c0 8851 then - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 36 ScopeEnter s27 - c5 c4 8851 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 37 Return - - c5 c4 8856 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 38 ScopeExit s27 - c5 c4 8851 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 39 ScopeExit s26 - c4 c0 8816 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 40 Decl s64 - c0 - 8870 - s30 clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 41 Read s1 - c0 - 8899 - - clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 42 Read s12 - c0 - 8907 - - clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 43 Write s13 - c0 - 8925 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 44 Read s13 - c0 - 8925 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 45 Read s63 - c0 - 8939 - - clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 46 Read s64 - c0 - 8966 - - clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 47 Cast - - c0 - 8994 - static walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 48 Call - s6 c0 - 9009 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 49 Read s29 - c0 - 9009 - - walk +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 50 Read s64 - c0 - 9039 - - clang +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) 51 ScopeExit s0 - c0 - 8482 - - walk +duckdb::TemplatedValidityMask.SetValid(idx_t) 0 ScopeEnter s0 - c0 - 6683 - - walk +duckdb::TemplatedValidityMask.SetValid(idx_t) 1 Param s49 - c0 - 6704 - s2 clang +duckdb::TemplatedValidityMask.SetValid(idx_t) 2 ScopeEnter s26 - c1 c0 6933 - - walk +duckdb::TemplatedValidityMask.SetValid(idx_t) 3 Read s13 - c1 c0 6938 - - walk +duckdb::TemplatedValidityMask.SetValid(idx_t) 4 Condition - - c1 c0 6937 if - walk +duckdb::TemplatedValidityMask.SetValid(idx_t) 5 Branch - - c1 c0 6953 then - walk +duckdb::TemplatedValidityMask.SetValid(idx_t) 6 ScopeEnter s27 - c2 c1 6953 - - walk +duckdb::TemplatedValidityMask.SetValid(idx_t) 7 Return - - c2 c1 7044 - - walk +duckdb::TemplatedValidityMask.SetValid(idx_t) 8 ScopeExit s27 - c2 c1 6953 - - walk +duckdb::TemplatedValidityMask.SetValid(idx_t) 9 ScopeExit s26 - c1 c0 6933 - - walk +duckdb::TemplatedValidityMask.SetValid(idx_t) 10 Call - s55 c0 - 7058 - member clang +duckdb::TemplatedValidityMask.SetValid(idx_t) 11 Read s49 - c0 - 7073 - - clang +duckdb::TemplatedValidityMask.SetValid(idx_t) 12 ScopeExit s0 - c0 - 6683 - - walk +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 0 ScopeEnter s0 - c0 - 6393 - - walk +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 1 Param s49 - c0 - 6420 - s2 clang +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 2 Cast - - c0 - 6439 - static walk +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 3 Read s13 - c0 - 6448 - - walk +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 4 Cast - - c0 - 6439 - functional walk +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 5 Call - s6 c0 - 6439 - - walk +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 6 Decl s8 - c0 - 6466 - s2 clang +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 7 Decl s52 - c0 - 6483 - s2 clang +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 8 Call - s53 c0 - 6499 - static clang +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 9 Read s49 - c0 - 6513 - - clang +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 10 Read s8 - c0 - 6522 - - clang +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 11 Read s52 - c0 - 6533 - - clang +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 12 ReadWrite s13 - c0 - 6550 - - walk +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 13 Read s13 - c0 - 6550 - - walk +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 14 Read s8 - c0 - 6564 - - clang +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 15 Call - s6 c0 - 6579 - - walk +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 16 Call - s6 c0 - 6579 - - walk +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 17 Call - s6 c0 - 6587 - - walk +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 18 Read s52 - c0 - 6589 - - clang +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) 19 ScopeExit s0 - c0 - 6393 - - walk +duckdb::TemplatedValidityMask.SizeInBytes(idx_t) 0 ScopeEnter s0 - c0 - 5419 - - walk +duckdb::TemplatedValidityMask.SizeInBytes(idx_t) 1 Param s51 - c0 - 5451 - s2 clang +duckdb::TemplatedValidityMask.SizeInBytes(idx_t) 2 Return - - c0 - 5464 - - walk +duckdb::TemplatedValidityMask.SizeInBytes(idx_t) 3 Read s51 - c0 - 5472 - - clang +duckdb::TemplatedValidityMask.SizeInBytes(idx_t) 4 Read s12 - c0 - 5476 - - clang +duckdb::TemplatedValidityMask.SizeInBytes(idx_t) 5 Read s12 - c0 - 5498 - - clang +duckdb::TemplatedValidityMask.SizeInBytes(idx_t) 6 ScopeExit s0 - c0 - 5419 - - walk +duckdb::TemplatedValidityMask.TemplatedValidityMask() 0 ScopeEnter s0 - c0 - 2070 - - walk +duckdb::TemplatedValidityMask.TemplatedValidityMask() 1 CtorInit s13 - c0 - 2103 - - clang +duckdb::TemplatedValidityMask.TemplatedValidityMask() 2 CtorInit s14 - c0 - 2127 - - clang +duckdb::TemplatedValidityMask.TemplatedValidityMask() 3 ScopeExit s0 - c0 - 2070 - - walk +duckdb::TemplatedValidityMask.TemplatedValidityMask(V *,idx_t) 0 ScopeEnter s0 - c0 - 2277 - - walk +duckdb::TemplatedValidityMask.TemplatedValidityMask(V *,idx_t) 1 Param s16 - c0 - 2315 - s17 clang +duckdb::TemplatedValidityMask.TemplatedValidityMask(V *,idx_t) 2 Param s18 - c0 - 2323 - s2 clang +duckdb::TemplatedValidityMask.TemplatedValidityMask(V *,idx_t) 3 CtorInit s13 - c0 - 2341 - - clang +duckdb::TemplatedValidityMask.TemplatedValidityMask(V *,idx_t) 4 Read s16 - c0 - 2355 - - clang +duckdb::TemplatedValidityMask.TemplatedValidityMask(V *,idx_t) 5 CtorInit s14 - c0 - 2361 - - clang +duckdb::TemplatedValidityMask.TemplatedValidityMask(V *,idx_t) 6 Read s18 - c0 - 2370 - - clang +duckdb::TemplatedValidityMask.TemplatedValidityMask(V *,idx_t) 7 ScopeExit s0 - c0 - 2277 - - walk +duckdb::TemplatedValidityMask.TemplatedValidityMask(const TemplatedValidityMask &,idx_t) 0 ScopeEnter s0 - c0 - 2386 - - walk +duckdb::TemplatedValidityMask.TemplatedValidityMask(const TemplatedValidityMask &,idx_t) 1 Param s19 - c0 - 2415 - s20 clang +duckdb::TemplatedValidityMask.TemplatedValidityMask(const TemplatedValidityMask &,idx_t) 2 Param s1 - c0 - 2454 - s2 clang +duckdb::TemplatedValidityMask.TemplatedValidityMask(const TemplatedValidityMask &,idx_t) 3 Call - s21 c0 - 2471 - member clang +duckdb::TemplatedValidityMask.TemplatedValidityMask(const TemplatedValidityMask &,idx_t) 4 Read s19 - c0 - 2476 - - clang +duckdb::TemplatedValidityMask.TemplatedValidityMask(const TemplatedValidityMask &,idx_t) 5 Read s1 - c0 - 2486 - - clang +duckdb::TemplatedValidityMask.TemplatedValidityMask(const TemplatedValidityMask &,idx_t) 6 ScopeExit s0 - c0 - 2386 - - walk +duckdb::TemplatedValidityMask.TemplatedValidityMask(idx_t) 0 ScopeEnter s0 - c0 - 2164 - - walk +duckdb::TemplatedValidityMask.TemplatedValidityMask(idx_t) 1 Param s15 - c0 - 2202 - s2 clang +duckdb::TemplatedValidityMask.TemplatedValidityMask(idx_t) 2 CtorInit s13 - c0 - 2224 - - clang +duckdb::TemplatedValidityMask.TemplatedValidityMask(idx_t) 3 CtorInit s14 - c0 - 2248 - - clang +duckdb::TemplatedValidityMask.TemplatedValidityMask(idx_t) 4 Read s15 - c0 - 2257 - - clang +duckdb::TemplatedValidityMask.TemplatedValidityMask(idx_t) 5 ScopeExit s0 - c0 - 2164 - - walk +duckdb::TemplatedValidityMask.ValidityMaskSize(idx_t) 0 ScopeEnter s0 - c0 - 2499 - - walk +duckdb::TemplatedValidityMask.ValidityMaskSize(idx_t) 1 Param s1 - c0 - 2536 - s2 clang +duckdb::TemplatedValidityMask.ValidityMaskSize(idx_t) 2 Return - - c0 - 2576 - - walk +duckdb::TemplatedValidityMask.ValidityMaskSize(idx_t) 3 Call - s6 c0 - 2583 - - walk +duckdb::TemplatedValidityMask.ValidityMaskSize(idx_t) 4 Read s1 - c0 - 2610 - - clang +duckdb::TemplatedValidityMask.ValidityMaskSize(idx_t) 5 ScopeExit s0 - c0 - 2499 - - walk +duckdb::ValidityArray.AllValid() const 0 ScopeEnter s0 - c0 - 12821 - - walk +duckdb::ValidityArray.AllValid() const 1 Return - - c0 - 12854 - - walk +duckdb::ValidityArray.AllValid() const 2 Call - s22 c0 - 12861 - member clang +duckdb::ValidityArray.AllValid() const 3 ScopeExit s0 - c0 - 12821 - - walk +duckdb::ValidityArray.CanHaveNull() const 0 ScopeEnter s0 - c0 - 12665 - - walk +duckdb::ValidityArray.CanHaveNull() const 1 Return - - c0 - 12701 - - walk +duckdb::ValidityArray.CanHaveNull() const 2 Read s13 - c0 - 12708 - - walk +duckdb::ValidityArray.CanHaveNull() const 3 ScopeExit s0 - c0 - 12665 - - walk +duckdb::ValidityArray.CannotHaveNull() const 0 ScopeEnter s0 - c0 - 12599 - - walk +duckdb::ValidityArray.CannotHaveNull() const 1 Return - - c0 - 12638 - - walk +duckdb::ValidityArray.CannotHaveNull() const 2 Read s13 - c0 - 12646 - - walk +duckdb::ValidityArray.CannotHaveNull() const 3 ScopeExit s0 - c0 - 12599 - - walk +duckdb::ValidityArray.Capacity() const 0 ScopeEnter s0 - c0 - 13185 - - walk +duckdb::ValidityArray.Capacity() const 1 Return - - c0 - 13212 - - walk +duckdb::ValidityArray.Capacity() const 2 Read s14 - c0 - 13219 - - walk +duckdb::ValidityArray.Capacity() const 3 ScopeExit s0 - c0 - 13185 - - walk +duckdb::ValidityArray.Initialize(idx_t,bool) 0 ScopeEnter s0 - c0 - 12884 - - walk +duckdb::ValidityArray.Initialize(idx_t,bool) 1 Param s1 - c0 - 12907 - s2 clang +duckdb::ValidityArray.Initialize(idx_t,bool) 2 Param s72 - c0 - 12920 - s57 clang +duckdb::ValidityArray.Initialize(idx_t,bool) 3 Write s14 - c0 - 12945 - - walk +duckdb::ValidityArray.Initialize(idx_t,bool) 4 Read s1 - c0 - 12956 - - clang +duckdb::ValidityArray.Initialize(idx_t,bool) 5 Call - s73 c0 - 12965 - member clang +duckdb::ValidityArray.Initialize(idx_t,bool) 6 Read s41 - c0 - 12965 - - walk +duckdb::ValidityArray.Initialize(idx_t,bool) 7 Call - s74 c0 - 12981 - free clang +duckdb::ValidityArray.Initialize(idx_t,bool) 8 Read s1 - c0 - 13010 - - clang +duckdb::ValidityArray.Initialize(idx_t,bool) 9 Write s13 - c0 - 13020 - - walk +duckdb::ValidityArray.Initialize(idx_t,bool) 10 Call s75 s76 c0 - 13036 - member clang +duckdb::ValidityArray.Initialize(idx_t,bool) 11 Read s41 - c0 - 13036 - - walk +duckdb::ValidityArray.Initialize(idx_t,bool) 12 Call - s77 c0 - 13059 - free clang +duckdb::ValidityArray.Initialize(idx_t,bool) 13 Read s13 - c0 - 13066 - - walk +duckdb::ValidityArray.Initialize(idx_t,bool) 14 Read s72 - c0 - 13081 - - clang +duckdb::ValidityArray.Initialize(idx_t,bool) 15 Read s1 - c0 - 13105 - - clang +duckdb::ValidityArray.Initialize(idx_t,bool) 16 ScopeExit s0 - c0 - 12884 - - walk +duckdb::ValidityArray.InitializeEmpty(idx_t) 0 ScopeEnter s0 - c0 - 13117 - - walk +duckdb::ValidityArray.InitializeEmpty(idx_t) 1 Param s1 - c0 - 13145 - s2 clang +duckdb::ValidityArray.InitializeEmpty(idx_t) 2 Write s14 - c0 - 13162 - - walk +duckdb::ValidityArray.InitializeEmpty(idx_t) 3 Read s1 - c0 - 13173 - - clang +duckdb::ValidityArray.InitializeEmpty(idx_t) 4 ScopeExit s0 - c0 - 13117 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 0 ScopeEnter s0 - c0 - 14553 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 1 Param s79 - c0 - 14570 - s80 clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 2 Param s1 - c0 - 14590 - s30 clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 3 ScopeEnter s26 - c1 c0 14619 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 4 Call - s22 c1 c0 14623 - member clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 5 Condition - - c1 c0 14623 if - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 6 Branch - - c1 c0 14641 then - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 7 ScopeEnter s27 - c2 c1 14641 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 8 Call s81 s82 c2 c1 14646 - member clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 9 Read s79 - c2 c1 14646 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 10 Read s1 - c2 c1 14657 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 11 Return - - c2 c1 14668 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 12 ScopeExit s27 - c2 c1 14641 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 13 ScopeExit s26 - c1 c0 14619 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 14 Call s81 s83 c0 - 14682 - member clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 15 Read s79 - c0 - 14682 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 16 Read s1 - c0 - 14698 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 17 Decl s84 - c0 - 14709 - s30 clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 18 Read s1 - c0 - 14737 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 19 Read s12 - c0 - 14745 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 20 Decl s85 - c0 - 14777 - s30 clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 21 Read s1 - c0 - 14797 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 22 Read s12 - c0 - 14805 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 23 Decl s86 - c0 - 14837 - s87 clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 24 Call s81 s88 c0 - 14849 - member clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 25 Read s79 - c0 - 14849 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 26 Decl s89 - c0 - 14867 - s2 clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 27 ScopeEnter s7 - c3 c0 14888 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 28 Decl s28 - c3 c0 14893 for_init s2 clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 29 Read s28 - c3 c0 14906 for_cond - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 30 Read s84 - c3 c0 14910 for_cond - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 31 ReadWrite s28 - c3 c0 14928 for_inc - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 32 Condition - - c3 c0 14888 for - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 33 Decl s32 - c3 c0 14936 - s90 clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 34 ScopeEnter s7 - c4 c3 14961 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 35 Decl s91 - c4 c3 14966 for_init s2 clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 36 Read s91 - c4 c3 14979 for_cond - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 37 Read s12 - c4 c3 14983 for_cond - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 38 ReadWrite s91 - c4 c3 15015 for_inc - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 39 Condition - - c4 c3 14961 for - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 40 ScopeEnter s26 - c5 c4 15024 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 41 Call - s54 c5 c4 15028 - member clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 42 ReadWrite s89 - c5 c4 15045 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 43 Condition - - c5 c4 15028 if - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 44 Branch - - c5 c4 15057 then - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 45 ScopeEnter s27 - c6 c5 15057 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 46 ReadWrite s32 - c6 c5 15064 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 47 Cast - - c6 c5 15073 - functional walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 48 Read s91 - c6 c5 15090 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 49 ScopeExit s27 - c6 c5 15057 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 50 ScopeExit s26 - c5 c4 15024 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 51 ScopeExit s7 - c4 c3 14961 back_edge - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 52 Write s92 - c3 c0 15107 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 53 ReadWrite s86 - c3 c0 15108 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 54 Read s32 - c3 c0 15117 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 55 ScopeExit s7 - c3 c0 14888 back_edge - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 56 ScopeEnter s26 - c7 c0 15130 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 57 Read s85 - c7 c0 15134 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 58 Condition - - c7 c0 15134 if - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 59 Branch - - c7 c0 15142 then - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 60 ScopeEnter s27 - c8 c7 15142 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 61 Decl s32 - c8 c7 15147 - s90 clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 62 ScopeEnter s7 - c9 c8 15172 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 63 Decl s91 - c9 c8 15177 for_init s2 clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 64 Read s91 - c9 c8 15190 for_cond - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 65 Read s85 - c9 c8 15194 for_cond - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 66 ReadWrite s91 - c9 c8 15204 for_inc - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 67 Condition - - c9 c8 15172 for - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 68 ScopeEnter s26 - c10 c9 15213 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 69 Call - s54 c10 c9 15217 - member clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 70 ReadWrite s89 - c10 c9 15234 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 71 Condition - - c10 c9 15217 if - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 72 Branch - - c10 c9 15246 then - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 73 ScopeEnter s27 - c11 c10 15246 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 74 ReadWrite s32 - c11 c10 15253 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 75 Cast - - c11 c10 15262 - functional walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 76 Read s91 - c11 c10 15279 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 77 ScopeExit s27 - c11 c10 15246 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 78 ScopeExit s26 - c10 c9 15213 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 79 ScopeExit s7 - c9 c8 15172 back_edge - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 80 Write s92 - c8 c7 15296 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 81 ReadWrite s86 - c8 c7 15297 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 82 Read s32 - c8 c7 15306 - - clang +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 83 ScopeExit s27 - c8 c7 15142 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 84 ScopeExit s26 - c7 c0 15130 - - walk +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const 85 ScopeExit s0 - c0 - 14553 - - walk +duckdb::ValidityArray.RowIsValid(idx_t) const 0 ScopeEnter s0 - c0 - 13559 - - walk +duckdb::ValidityArray.RowIsValid(idx_t) const 1 Param s49 - c0 - 13582 - s2 clang +duckdb::ValidityArray.RowIsValid(idx_t) const 2 ScopeEnter s26 - c1 c0 13819 - - walk +duckdb::ValidityArray.RowIsValid(idx_t) const 3 Read s13 - c1 c0 13824 - - walk +duckdb::ValidityArray.RowIsValid(idx_t) const 4 Condition - - c1 c0 13823 if - walk +duckdb::ValidityArray.RowIsValid(idx_t) const 5 Branch - - c1 c0 13839 then - walk +duckdb::ValidityArray.RowIsValid(idx_t) const 6 ScopeEnter s27 - c2 c1 13839 - - walk +duckdb::ValidityArray.RowIsValid(idx_t) const 7 Return - - c2 c1 13844 - - walk +duckdb::ValidityArray.RowIsValid(idx_t) const 8 ScopeExit s27 - c2 c1 13839 - - walk +duckdb::ValidityArray.RowIsValid(idx_t) const 9 ScopeExit s26 - c1 c0 13819 - - walk +duckdb::ValidityArray.RowIsValid(idx_t) const 10 Return - - c0 - 13863 - - walk +duckdb::ValidityArray.RowIsValid(idx_t) const 11 Call - s54 c0 - 13870 - member clang +duckdb::ValidityArray.RowIsValid(idx_t) const 12 Read s49 - c0 - 13887 - - clang +duckdb::ValidityArray.RowIsValid(idx_t) const 13 ScopeExit s0 - c0 - 13559 - - walk +duckdb::ValidityArray.RowIsValidUnsafe(idx_t) const 0 ScopeEnter s0 - c0 - 13373 - - walk +duckdb::ValidityArray.RowIsValidUnsafe(idx_t) const 1 Param s49 - c0 - 13402 - s2 clang +duckdb::ValidityArray.RowIsValidUnsafe(idx_t) const 2 Cast - - c0 - 13427 - static walk +duckdb::ValidityArray.RowIsValidUnsafe(idx_t) const 3 Read s13 - c0 - 13436 - - walk +duckdb::ValidityArray.RowIsValidUnsafe(idx_t) const 4 Cast - - c0 - 13427 - functional walk +duckdb::ValidityArray.RowIsValidUnsafe(idx_t) const 5 Call - s78 c0 - 13427 - free clang +duckdb::ValidityArray.RowIsValidUnsafe(idx_t) const 6 Return - - c0 - 13454 - - walk +duckdb::ValidityArray.RowIsValidUnsafe(idx_t) const 7 Read s13 - c0 - 13461 - - walk +duckdb::ValidityArray.RowIsValidUnsafe(idx_t) const 8 Read s49 - c0 - 13475 - - clang +duckdb::ValidityArray.RowIsValidUnsafe(idx_t) const 9 ScopeExit s0 - c0 - 13373 - - walk +duckdb::ValidityArray.SetValid(idx_t) 0 ScopeEnter s0 - c0 - 14147 - - walk +duckdb::ValidityArray.SetValid(idx_t) 1 Param s49 - c0 - 14168 - s2 clang +duckdb::ValidityArray.SetValid(idx_t) 2 ScopeEnter s26 - c1 c0 14397 - - walk +duckdb::ValidityArray.SetValid(idx_t) 3 Read s13 - c1 c0 14402 - - walk +duckdb::ValidityArray.SetValid(idx_t) 4 Condition - - c1 c0 14401 if - walk +duckdb::ValidityArray.SetValid(idx_t) 5 Branch - - c1 c0 14417 then - walk +duckdb::ValidityArray.SetValid(idx_t) 6 ScopeEnter s27 - c2 c1 14417 - - walk +duckdb::ValidityArray.SetValid(idx_t) 7 Return - - c2 c1 14508 - - walk +duckdb::ValidityArray.SetValid(idx_t) 8 ScopeExit s27 - c2 c1 14417 - - walk +duckdb::ValidityArray.SetValid(idx_t) 9 ScopeExit s26 - c1 c0 14397 - - walk +duckdb::ValidityArray.SetValid(idx_t) 10 Call - s55 c0 - 14523 - member clang +duckdb::ValidityArray.SetValid(idx_t) 11 Read s49 - c0 - 14538 - - clang +duckdb::ValidityArray.SetValid(idx_t) 12 ScopeExit s0 - c0 - 14147 - - walk +duckdb::ValidityArray.SetValidUnsafe(idx_t) 0 ScopeEnter s0 - c0 - 13965 - - walk +duckdb::ValidityArray.SetValidUnsafe(idx_t) 1 Param s49 - c0 - 13992 - s2 clang +duckdb::ValidityArray.SetValidUnsafe(idx_t) 2 Cast - - c0 - 14011 - static walk +duckdb::ValidityArray.SetValidUnsafe(idx_t) 3 Read s13 - c0 - 14020 - - walk +duckdb::ValidityArray.SetValidUnsafe(idx_t) 4 Cast - - c0 - 14011 - functional walk +duckdb::ValidityArray.SetValidUnsafe(idx_t) 5 Call - s78 c0 - 14011 - free clang +duckdb::ValidityArray.SetValidUnsafe(idx_t) 6 Write s13 - c0 - 14038 - - walk +duckdb::ValidityArray.SetValidUnsafe(idx_t) 7 Read s13 - c0 - 14038 - - walk +duckdb::ValidityArray.SetValidUnsafe(idx_t) 8 Read s49 - c0 - 14052 - - clang +duckdb::ValidityArray.SetValidUnsafe(idx_t) 9 ScopeExit s0 - c0 - 13965 - - walk +duckdb::ValidityArray.ValidityArray() 0 ScopeEnter s0 - c0 - 12569 - - walk +duckdb::ValidityArray.ValidityArray() 1 ScopeExit s0 - c0 - 12569 - - walk +duckdb::ValidityMask.ValidityMask() 0 ScopeEnter s0 - c0 - 11116 - - walk +duckdb::ValidityMask.ValidityMask() 1 Call - s70 c0 - 11140 - ctor clang +duckdb::ValidityMask.ValidityMask() 2 ScopeExit s0 - c0 - 11116 - - walk +duckdb::ValidityMask.ValidityMask(const ValidityMask &,idx_t) 0 ScopeEnter s0 - c0 - 11391 - - walk +duckdb::ValidityMask.ValidityMask(const ValidityMask &,idx_t) 1 Param s19 - c0 - 11411 - s71 clang +duckdb::ValidityMask.ValidityMask(const ValidityMask &,idx_t) 2 Param s1 - c0 - 11441 - s2 clang +duckdb::ValidityMask.ValidityMask(const ValidityMask &,idx_t) 3 Call - s70 c0 - 11456 - ctor clang +duckdb::ValidityMask.ValidityMask(const ValidityMask &,idx_t) 4 Read s19 - c0 - 11478 - - clang +duckdb::ValidityMask.ValidityMask(const ValidityMask &,idx_t) 5 Read s1 - c0 - 11488 - - clang +duckdb::ValidityMask.ValidityMask(const ValidityMask &,idx_t) 6 ScopeExit s0 - c0 - 11391 - - walk +duckdb::ValidityMask.ValidityMask(idx_t) 0 ScopeEnter s0 - c0 - 11199 - - walk +duckdb::ValidityMask.ValidityMask(idx_t) 1 Param s18 - c0 - 11228 - s2 clang +duckdb::ValidityMask.ValidityMask(idx_t) 2 Call - s70 c0 - 11246 - ctor clang +duckdb::ValidityMask.ValidityMask(idx_t) 3 Read s18 - c0 - 11268 - - clang +duckdb::ValidityMask.ValidityMask(idx_t) 4 ScopeExit s0 - c0 - 11199 - - walk +duckdb::ValidityMask.ValidityMask(validity_t *,idx_t) 0 ScopeEnter s0 - c0 - 11284 - - walk +duckdb::ValidityMask.ValidityMask(validity_t *,idx_t) 1 Param s16 - c0 - 11313 - s67 clang +duckdb::ValidityMask.ValidityMask(validity_t *,idx_t) 2 Param s18 - c0 - 11330 - s2 clang +duckdb::ValidityMask.ValidityMask(validity_t *,idx_t) 3 Call - s70 c0 - 11348 - ctor clang +duckdb::ValidityMask.ValidityMask(validity_t *,idx_t) 4 Read s16 - c0 - 11370 - - clang +duckdb::ValidityMask.ValidityMask(validity_t *,idx_t) 5 Read s18 - c0 - 11375 - - clang +duckdb::ValidityMask.ValidityMask(validity_t *,idx_t) 6 ScopeExit s0 - c0 - 11284 - - walk diff --git a/.claude/harvest/duckdb-headers/ore/common_types_validity_mask/methods.tsv b/.claude/harvest/duckdb-headers/ore/common_types_validity_mask/methods.tsv new file mode 100644 index 000000000..f00a658e1 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_types_validity_mask/methods.tsv @@ -0,0 +1,61 @@ +duckdb::TemplatedValidityData.EntryCount(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityData 7 1 Empty 0 0 0 0 0 0 1 0 0 method public 1 - +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityData 26 2 Compute 0 1 0 0 0 0 0 0 0 ctor public 2 - +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityData 20 2 Compute 0 1 0 0 0 0 0 0 0 ctor public 1 - +duckdb::TemplatedValidityMask.AllValid() const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 4 1 Empty 0 0 0 0 0 1 0 0 0 method public 0 - +duckdb::TemplatedValidityMask.AllValid(V) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 6 1 Empty 0 0 0 0 0 0 1 0 0 method public 1 - +duckdb::TemplatedValidityMask.CanHaveNull() const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 4 1 Observe 1 0 0 0 0 1 0 0 0 method public 0 - +duckdb::TemplatedValidityMask.CannotHaveNull() const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 4 1 Observe 1 0 0 0 0 1 0 0 0 method public 0 - +duckdb::TemplatedValidityMask.CheckAllInvalid(idx_t) const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 7 1 Empty 0 0 0 0 0 1 0 0 0 method public 1 - +duckdb::TemplatedValidityMask.CheckAllValid(idx_t) const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 8 1 Empty 0 0 0 0 0 1 0 0 0 method public 1 - +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 31 6 Empty 0 0 0 0 0 1 0 0 0 method public 2 - +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 30 4 Compute 1 3 0 0 0 0 0 0 0 method public 2 - +duckdb::TemplatedValidityMask.CountValid(const idx_t) const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 69 10 Empty 0 0 0 0 0 1 0 0 0 method public 1 - +duckdb::TemplatedValidityMask.EnsureWritable() /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 11 3 Observe 1 0 0 0 0 0 0 0 0 method public 0 - +duckdb::TemplatedValidityMask.EntryCount(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 6 1 Empty 0 0 0 0 0 0 1 0 0 method public 1 - +duckdb::TemplatedValidityMask.EntryWithValidBits(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 15 3 Empty 0 0 0 0 0 0 1 0 0 method public 1 - +duckdb::TemplatedValidityMask.GetAllocationSize() const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 13 3 Observe 2 0 0 0 0 1 0 0 0 method public 0 - +duckdb::TemplatedValidityMask.GetData() const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 4 1 Observe 1 0 0 0 0 1 0 0 0 method public 0 - +duckdb::TemplatedValidityMask.GetEntryIndex(idx_t,idx_t &,idx_t &) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 11 1 Empty 0 0 0 0 0 0 1 0 0 method public 3 - +duckdb::TemplatedValidityMask.GetValidityEntry(idx_t) const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 15 3 Observe 1 0 0 0 0 1 0 0 0 method public 1 - +duckdb::TemplatedValidityMask.GetValidityEntryUnsafe(idx_t) const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 6 1 Observe 1 0 0 0 0 1 0 0 0 method public 1 - +duckdb::TemplatedValidityMask.Initialize() /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 5 1 Observe 1 0 0 0 0 0 0 0 0 method public 0 - +duckdb::TemplatedValidityMask.Initialize(const TemplatedValidityMask &) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 12 1 Compute 0 3 0 0 0 0 0 0 0 method public 1 - +duckdb::TemplatedValidityMask.Initialize(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 13 1 Compute 1 3 0 0 0 0 0 0 0 method public 1 - +duckdb::TemplatedValidityMask.Initialize(validity_t *,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 11 1 Compute 1 2 0 0 0 0 0 0 0 method public 2 - +duckdb::TemplatedValidityMask.IsMaskSet() const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 11 3 Observe 1 0 0 0 0 1 0 0 0 method public 0 - +duckdb::TemplatedValidityMask.NoneValid(V) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 6 1 Empty 0 0 0 0 0 0 1 0 0 method public 1 - +duckdb::TemplatedValidityMask.Reset(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 9 1 Compute 1 2 0 0 0 0 0 0 0 method public 1 - +duckdb::TemplatedValidityMask.RowIsValid(const V &,const idx_t &) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 10 1 Empty 0 0 0 0 0 0 1 0 0 method public 2 - +duckdb::TemplatedValidityMask.RowIsValid(idx_t) const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 14 3 Observe 1 0 0 0 0 1 0 0 0 method public 1 - +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 21 1 Observe 1 0 0 0 0 1 0 0 0 method public 1 - +duckdb::TemplatedValidityMask.Set(idx_t,bool) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 18 4 Empty 0 0 0 0 0 0 0 0 0 method public 2 - +duckdb::TemplatedValidityMask.SetAllInvalid(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 7 1 Empty 0 0 0 0 0 0 0 0 0 method public 1 - +duckdb::TemplatedValidityMask.SetAllValid(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 40 4 Normalize 1 1 0 0 0 0 0 0 0 method public 1 - +duckdb::TemplatedValidityMask.SetInvalid(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 16 3 Observe 2 0 0 0 0 0 0 0 0 method public 1 - +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 13 1 Empty 0 0 0 0 0 0 0 0 0 method public 1 - +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 15 1 Normalize 1 1 0 0 0 0 0 0 0 method public 2 - +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 52 6 Compute 0 1 0 0 0 0 0 0 0 method public 3 - +duckdb::TemplatedValidityMask.SetValid(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 13 3 Observe 1 0 0 0 0 0 0 0 0 method public 1 - +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 20 1 Normalize 1 1 0 0 0 0 0 0 0 method public 1 - +duckdb::TemplatedValidityMask.SizeInBytes(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 7 1 Empty 0 0 0 0 0 0 1 0 0 method public 1 - +duckdb::TemplatedValidityMask.TemplatedValidityMask() /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 4 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 0 - +duckdb::TemplatedValidityMask.TemplatedValidityMask(V *,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 8 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 2 - +duckdb::TemplatedValidityMask.TemplatedValidityMask(const TemplatedValidityMask &,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 7 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 2 - +duckdb::TemplatedValidityMask.TemplatedValidityMask(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 6 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 1 - +duckdb::TemplatedValidityMask.ValidityMaskSize(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::TemplatedValidityMask 6 1 Empty 0 0 0 0 0 0 1 0 0 method public 1 - +duckdb::ValidityArray.AllValid() const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::ValidityArray 4 1 Empty 0 0 0 0 0 1 0 0 0 method public 0 - +duckdb::ValidityArray.CanHaveNull() const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::ValidityArray 4 1 Observe 1 0 0 0 0 1 0 0 0 method public 0 - +duckdb::ValidityArray.CannotHaveNull() const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::ValidityArray 4 1 Observe 1 0 0 0 0 1 0 0 0 method public 0 - +duckdb::ValidityArray.Capacity() const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::ValidityArray 4 1 Observe 1 0 0 0 0 1 0 0 0 method public 0 - +duckdb::ValidityArray.Initialize(idx_t,bool) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::ValidityArray 17 1 Compute 2 3 0 0 0 0 0 0 0 method public 2 - +duckdb::ValidityArray.InitializeEmpty(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::ValidityArray 5 1 Compute 0 1 0 0 0 0 0 0 0 method public 1 - +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::ValidityArray 86 12 Empty 0 0 0 0 0 1 0 0 0 method public 2 - +duckdb::ValidityArray.RowIsValid(idx_t) const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::ValidityArray 14 3 Observe 1 0 0 0 0 1 0 0 0 method public 1 - +duckdb::ValidityArray.RowIsValidUnsafe(idx_t) const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::ValidityArray 10 1 Observe 1 0 0 0 0 1 0 0 0 method public 1 - +duckdb::ValidityArray.SetValid(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::ValidityArray 13 3 Observe 1 0 0 0 0 0 0 0 0 method public 1 - +duckdb::ValidityArray.SetValidUnsafe(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::ValidityArray 10 1 Normalize 1 1 0 0 0 0 0 0 0 method public 1 - +duckdb::ValidityArray.ValidityArray() /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::ValidityArray 2 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 0 - +duckdb::ValidityMask.ValidityMask() /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::ValidityMask 3 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 0 - +duckdb::ValidityMask.ValidityMask(const ValidityMask &,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::ValidityMask 7 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 2 - +duckdb::ValidityMask.ValidityMask(idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::ValidityMask 5 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 1 - +duckdb::ValidityMask.ValidityMask(validity_t *,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/validity_mask.hpp duckdb::ValidityMask 7 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 2 - diff --git a/.claude/harvest/duckdb-headers/ore/common_types_validity_mask/scopes.tsv b/.claude/harvest/duckdb-headers/ore/common_types_validity_mask/scopes.tsv new file mode 100644 index 000000000..8828b32af --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_types_validity_mask/scopes.tsv @@ -0,0 +1,122 @@ +duckdb::TemplatedValidityData.EntryCount(idx_t) c0 - Function 0 0 6 +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) c0 - Function 0 0 25 +duckdb::TemplatedValidityData.TemplatedValidityData(const V *,idx_t) c1 c0 For 1 13 24 +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) c0 - Function 0 0 19 +duckdb::TemplatedValidityData.TemplatedValidityData(idx_t) c1 c0 For 1 8 18 +duckdb::TemplatedValidityMask.AllValid() const c0 - Function 0 0 3 +duckdb::TemplatedValidityMask.AllValid(V) c0 - Function 0 0 5 +duckdb::TemplatedValidityMask.CanHaveNull() const c0 - Function 0 0 3 +duckdb::TemplatedValidityMask.CannotHaveNull() const c0 - Function 0 0 3 +duckdb::TemplatedValidityMask.CheckAllInvalid(idx_t) const c0 - Function 0 0 6 +duckdb::TemplatedValidityMask.CheckAllValid(idx_t) const c0 - Function 0 0 7 +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const c0 - Function 0 0 30 +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const c1 c0 If 1 3 10 +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const c2 c1 Then 2 7 9 +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const c3 c0 For 1 11 28 +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const c4 c3 If 2 18 27 +duckdb::TemplatedValidityMask.CheckAllValid(idx_t,idx_t) const c5 c4 Then 3 24 26 +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) c0 - Function 0 0 29 +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) c1 c0 If 1 5 28 +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) c2 c1 Then 2 11 14 +duckdb::TemplatedValidityMask.Copy(const TemplatedValidityMask &,idx_t) c3 c1 Else 2 16 27 +duckdb::TemplatedValidityMask.CountValid(const idx_t) const c0 - Function 0 0 68 +duckdb::TemplatedValidityMask.CountValid(const idx_t) const c1 c0 If 1 2 11 +duckdb::TemplatedValidityMask.CountValid(const idx_t) const c2 c1 Then 2 7 10 +duckdb::TemplatedValidityMask.CountValid(const idx_t) const c3 c0 For 1 16 65 +duckdb::TemplatedValidityMask.CountValid(const idx_t) const c4 c3 If 2 24 57 +duckdb::TemplatedValidityMask.CountValid(const idx_t) const c5 c4 Then 3 31 41 +duckdb::TemplatedValidityMask.CountValid(const idx_t) const c6 c4 Else 3 43 56 +duckdb::TemplatedValidityMask.CountValid(const idx_t) const c7 c6 If 4 44 55 +duckdb::TemplatedValidityMask.CountValid(const idx_t) const c8 c7 Then 5 50 54 +duckdb::TemplatedValidityMask.CountValid(const idx_t) const c9 c3 While 2 58 64 +duckdb::TemplatedValidityMask.EnsureWritable() c0 - Function 0 0 10 +duckdb::TemplatedValidityMask.EnsureWritable() c1 c0 If 1 1 9 +duckdb::TemplatedValidityMask.EnsureWritable() c2 c1 Then 2 5 8 +duckdb::TemplatedValidityMask.EntryCount(idx_t) c0 - Function 0 0 5 +duckdb::TemplatedValidityMask.EntryWithValidBits(idx_t) c0 - Function 0 0 14 +duckdb::TemplatedValidityMask.EntryWithValidBits(idx_t) c1 c0 If 1 2 10 +duckdb::TemplatedValidityMask.EntryWithValidBits(idx_t) c2 c1 Then 2 6 9 +duckdb::TemplatedValidityMask.GetAllocationSize() const c0 - Function 0 0 12 +duckdb::TemplatedValidityMask.GetAllocationSize() const c1 c0 If 1 1 8 +duckdb::TemplatedValidityMask.GetAllocationSize() const c2 c1 Then 2 5 7 +duckdb::TemplatedValidityMask.GetData() const c0 - Function 0 0 3 +duckdb::TemplatedValidityMask.GetEntryIndex(idx_t,idx_t &,idx_t &) c0 - Function 0 0 10 +duckdb::TemplatedValidityMask.GetValidityEntry(idx_t) const c0 - Function 0 0 14 +duckdb::TemplatedValidityMask.GetValidityEntry(idx_t) const c1 c0 If 1 2 10 +duckdb::TemplatedValidityMask.GetValidityEntry(idx_t) const c2 c1 Then 2 6 9 +duckdb::TemplatedValidityMask.GetValidityEntryUnsafe(idx_t) const c0 - Function 0 0 5 +duckdb::TemplatedValidityMask.Initialize() c0 - Function 0 0 4 +duckdb::TemplatedValidityMask.Initialize(const TemplatedValidityMask &) c0 - Function 0 0 11 +duckdb::TemplatedValidityMask.Initialize(idx_t) c0 - Function 0 0 12 +duckdb::TemplatedValidityMask.Initialize(validity_t *,idx_t) c0 - Function 0 0 10 +duckdb::TemplatedValidityMask.IsMaskSet() const c0 - Function 0 0 10 +duckdb::TemplatedValidityMask.IsMaskSet() const c1 c0 If 1 1 8 +duckdb::TemplatedValidityMask.IsMaskSet() const c2 c1 Then 2 5 7 +duckdb::TemplatedValidityMask.NoneValid(V) c0 - Function 0 0 5 +duckdb::TemplatedValidityMask.Reset(idx_t) c0 - Function 0 0 8 +duckdb::TemplatedValidityMask.RowIsValid(const V &,const idx_t &) c0 - Function 0 0 9 +duckdb::TemplatedValidityMask.RowIsValid(idx_t) const c0 - Function 0 0 13 +duckdb::TemplatedValidityMask.RowIsValid(idx_t) const c1 c0 If 1 2 9 +duckdb::TemplatedValidityMask.RowIsValid(idx_t) const c2 c1 Then 2 6 8 +duckdb::TemplatedValidityMask.RowIsValidUnsafe(idx_t) const c0 - Function 0 0 20 +duckdb::TemplatedValidityMask.Set(idx_t,bool) c0 - Function 0 0 17 +duckdb::TemplatedValidityMask.Set(idx_t,bool) c1 c0 If 1 3 16 +duckdb::TemplatedValidityMask.Set(idx_t,bool) c2 c1 Then 2 7 10 +duckdb::TemplatedValidityMask.Set(idx_t,bool) c3 c1 Else 2 12 15 +duckdb::TemplatedValidityMask.SetAllInvalid(idx_t) c0 - Function 0 0 6 +duckdb::TemplatedValidityMask.SetAllValid(idx_t) c0 - Function 0 0 39 +duckdb::TemplatedValidityMask.SetAllValid(idx_t) c1 c0 If 1 3 10 +duckdb::TemplatedValidityMask.SetAllValid(idx_t) c2 c1 Then 2 7 9 +duckdb::TemplatedValidityMask.SetAllValid(idx_t) c3 c0 For 1 15 26 +duckdb::TemplatedValidityMask.SetInvalid(idx_t) c0 - Function 0 0 15 +duckdb::TemplatedValidityMask.SetInvalid(idx_t) c1 c0 If 1 2 11 +duckdb::TemplatedValidityMask.SetInvalid(idx_t) c2 c1 Then 2 6 10 +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t) c0 - Function 0 0 12 +duckdb::TemplatedValidityMask.SetInvalidUnsafe(idx_t,idx_t) c0 - Function 0 0 14 +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) c0 - Function 0 0 51 +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) c1 c0 If 1 5 12 +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) c2 c1 Then 2 9 11 +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) c3 c0 For 1 17 30 +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) c4 c0 If 1 31 39 +duckdb::TemplatedValidityMask.SetRangeInvalid(const idx_t,const idx_t,const idx_t) c5 c4 Then 2 36 38 +duckdb::TemplatedValidityMask.SetValid(idx_t) c0 - Function 0 0 12 +duckdb::TemplatedValidityMask.SetValid(idx_t) c1 c0 If 1 2 9 +duckdb::TemplatedValidityMask.SetValid(idx_t) c2 c1 Then 2 6 8 +duckdb::TemplatedValidityMask.SetValidUnsafe(idx_t) c0 - Function 0 0 19 +duckdb::TemplatedValidityMask.SizeInBytes(idx_t) c0 - Function 0 0 6 +duckdb::TemplatedValidityMask.TemplatedValidityMask() c0 - Function 0 0 3 +duckdb::TemplatedValidityMask.TemplatedValidityMask(V *,idx_t) c0 - Function 0 0 7 +duckdb::TemplatedValidityMask.TemplatedValidityMask(const TemplatedValidityMask &,idx_t) c0 - Function 0 0 6 +duckdb::TemplatedValidityMask.TemplatedValidityMask(idx_t) c0 - Function 0 0 5 +duckdb::TemplatedValidityMask.ValidityMaskSize(idx_t) c0 - Function 0 0 5 +duckdb::ValidityArray.AllValid() const c0 - Function 0 0 3 +duckdb::ValidityArray.CanHaveNull() const c0 - Function 0 0 3 +duckdb::ValidityArray.CannotHaveNull() const c0 - Function 0 0 3 +duckdb::ValidityArray.Capacity() const c0 - Function 0 0 3 +duckdb::ValidityArray.Initialize(idx_t,bool) c0 - Function 0 0 16 +duckdb::ValidityArray.InitializeEmpty(idx_t) c0 - Function 0 0 4 +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const c0 - Function 0 0 85 +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const c1 c0 If 1 3 13 +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const c2 c1 Then 2 7 12 +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const c3 c0 For 1 27 55 +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const c4 c3 For 2 34 51 +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const c5 c4 If 3 40 50 +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const c6 c5 Then 4 45 49 +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const c7 c0 If 1 56 84 +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const c8 c7 Then 2 60 83 +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const c9 c8 For 3 62 79 +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const c10 c9 If 4 68 78 +duckdb::ValidityArray.Pack(ValidityMask &,const idx_t) const c11 c10 Then 5 73 77 +duckdb::ValidityArray.RowIsValid(idx_t) const c0 - Function 0 0 13 +duckdb::ValidityArray.RowIsValid(idx_t) const c1 c0 If 1 2 9 +duckdb::ValidityArray.RowIsValid(idx_t) const c2 c1 Then 2 6 8 +duckdb::ValidityArray.RowIsValidUnsafe(idx_t) const c0 - Function 0 0 9 +duckdb::ValidityArray.SetValid(idx_t) c0 - Function 0 0 12 +duckdb::ValidityArray.SetValid(idx_t) c1 c0 If 1 2 9 +duckdb::ValidityArray.SetValid(idx_t) c2 c1 Then 2 6 8 +duckdb::ValidityArray.SetValidUnsafe(idx_t) c0 - Function 0 0 9 +duckdb::ValidityArray.ValidityArray() c0 - Function 0 0 1 +duckdb::ValidityMask.ValidityMask() c0 - Function 0 0 2 +duckdb::ValidityMask.ValidityMask(const ValidityMask &,idx_t) c0 - Function 0 0 6 +duckdb::ValidityMask.ValidityMask(idx_t) c0 - Function 0 0 4 +duckdb::ValidityMask.ValidityMask(validity_t *,idx_t) c0 - Function 0 0 6 diff --git a/.claude/harvest/duckdb-headers/ore/common_types_validity_mask/symbols.tsv b/.claude/harvest/duckdb-headers/ore/common_types_validity_mask/symbols.tsv new file mode 100644 index 000000000..92bf722ae --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_types_validity_mask/symbols.tsv @@ -0,0 +1,93 @@ +s0 scope_kind - Function walk +s1 param param count clang +s2 type - idx_t clang +s3 local local entry_count clang +s4 callee this EntryCount clang +s5 member own owned_data walk +s6 callee this walk +s7 scope_kind - For walk +s8 local local entry_idx clang +s9 local local MAX_ENTRY clang +s10 param param validity_mask clang +s11 type - const V * clang +s12 local local BITS_PER_VALUE clang +s13 member own validity_mask clang +s14 member own capacity clang +s15 param param target_count clang +s16 param param ptr clang +s17 type - V * clang +s18 param param capacity clang +s19 param param original clang +s20 type - const TemplatedValidityMask clang +s21 callee this Copy clang +s22 callee this CannotHaveNull clang +s23 callee this CountValid clang +s24 param param to clang +s25 param param from clang +s26 scope_kind - If walk +s27 scope_kind - Then walk +s28 local local i clang +s29 member ext walk +s30 type - const idx_t clang +s31 local local valid clang +s32 local local entry clang +s33 type - auto clang +s34 callee this GetValidityEntry clang +s35 local local shift clang +s36 local local mask clang +s37 type - const auto clang +s38 scope_kind - Else walk +s39 scope_kind - While walk +s40 param param target_count_p clang +s41 member own validity_data walk +s42 param param entry_idx clang +s43 callee this GetValidityEntryUnsafe clang +s44 param param entry clang +s45 type - V clang +s46 type - const V & clang +s47 param param idx_in_entry clang +s48 type - const idx_t & clang +s49 param param row_idx clang +s50 type - idx_t & clang +s51 param param n clang +s52 local local idx_in_entry clang +s53 callee this GetEntryIndex clang +s54 callee this RowIsValidUnsafe clang +s55 callee this SetValidUnsafe clang +s56 param param valid clang +s57 type - bool clang +s58 callee this SetValid clang +s59 callee this SetInvalid clang +s60 param param begin_entry clang +s61 param param end_entry clang +s62 callee this EnsureWritable clang +s63 local local last_entry_index clang +s64 local local last_entry_bits clang +s65 callee this SetRangeInvalid clang +s66 param param validity clang +s67 type - validity_t * clang +s68 param param new_capacity clang +s69 param param other clang +s70 callee this TemplatedValidityMask clang +s71 type - const ValidityMask & clang +s72 param param initial clang +s73 callee this operator= clang +s74 callee this make_unsafe_uniq_array clang +s75 callee ext validity_data walk +s76 callee ext get clang +s77 callee this memset clang +s78 callee this __assert_fail clang +s79 param param mask clang +s80 type - ValidityMask & clang +s81 callee ext mask walk +s82 callee ext Reset clang +s83 callee ext Initialize clang +s84 local local entire_entries clang +s85 local local ragged clang +s86 local local bits clang +s87 type - unsigned long * clang +s88 callee ext GetData clang +s89 local local row_idx clang +s90 type - validity_t clang +s91 local local j clang +s92 other unknown ? walk diff --git a/.claude/harvest/duckdb-headers/ore/common_types_vector/events.tsv b/.claude/harvest/duckdb-headers/ore/common_types_vector/events.tsv new file mode 100644 index 000000000..db06d5e5f --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_types_vector/events.tsv @@ -0,0 +1,42 @@ +duckdb::Vector.Buffer() const 0 ScopeEnter s0 - c0 - 9574 - - walk +duckdb::Vector.Buffer() const 1 Return - - c0 - 9620 - - walk +duckdb::Vector.Buffer() const 2 Call - s11 c0 - 9627 - member clang +duckdb::Vector.Buffer() const 3 Read s12 - c0 - 9628 - - walk +duckdb::Vector.Buffer() const 4 ScopeExit s0 - c0 - 9574 - - walk +duckdb::Vector.BufferMutable() 0 ScopeEnter s0 - c0 - 9513 - - walk +duckdb::Vector.BufferMutable() 1 Return - - c0 - 9554 - - walk +duckdb::Vector.BufferMutable() 2 Call - s11 c0 - 9561 - member clang +duckdb::Vector.BufferMutable() 3 Read s12 - c0 - 9562 - - walk +duckdb::Vector.BufferMutable() 4 ScopeExit s0 - c0 - 9513 - - walk +duckdb::Vector.GetBufferRef() const 0 ScopeEnter s0 - c0 - 9640 - - walk +duckdb::Vector.GetBufferRef() const 1 Return - - c0 - 9704 - - walk +duckdb::Vector.GetBufferRef() const 2 Read s12 - c0 - 9711 - - walk +duckdb::Vector.GetBufferRef() const 3 ScopeExit s0 - c0 - 9640 - - walk +duckdb::Vector.GetType() const 0 ScopeEnter s0 - c0 - 9450 - - walk +duckdb::Vector.GetType() const 1 Return - - c0 - 9496 - - walk +duckdb::Vector.GetType() const 2 Read s10 - c0 - 9503 - - walk +duckdb::Vector.GetType() const 3 ScopeExit s0 - c0 - 9450 - - walk +duckdb::Vector.GetVectorType() const 0 ScopeEnter s0 - c0 - 9269 - - walk +duckdb::Vector.GetVectorType() const 1 Decl s1 - c0 - 9313 - s2 clang +duckdb::Vector.GetVectorType() const 2 Call - s3 c0 - 9332 - member clang +duckdb::Vector.GetVectorType() const 3 ScopeEnter s4 - c1 c0 9350 - - walk +duckdb::Vector.GetVectorType() const 4 Call s5 s6 c1 c0 9355 - member clang +duckdb::Vector.GetVectorType() const 5 Read s1 - c1 c0 9355 - - clang +duckdb::Vector.GetVectorType() const 6 Condition - - c1 c0 9354 if - walk +duckdb::Vector.GetVectorType() const 7 Branch - - c1 c0 9367 then - walk +duckdb::Vector.GetVectorType() const 8 ScopeEnter s7 - c2 c1 9367 - - walk +duckdb::Vector.GetVectorType() const 9 Return - - c2 c1 9372 - - walk +duckdb::Vector.GetVectorType() const 10 ScopeExit s7 - c2 c1 9367 - - walk +duckdb::Vector.GetVectorType() const 11 ScopeExit s4 - c1 c0 9350 - - walk +duckdb::Vector.GetVectorType() const 12 Return - - c0 - 9410 - - walk +duckdb::Vector.GetVectorType() const 13 Call - s8 c0 - 9417 - member clang +duckdb::Vector.GetVectorType() const 14 Call - s9 c0 - 9417 - member clang +duckdb::Vector.GetVectorType() const 15 Read s1 - c0 - 9417 - - clang +duckdb::Vector.GetVectorType() const 16 ScopeExit s0 - c0 - 9269 - - walk +duckdb::Vector.SetBuffer(buffer_ptr) 0 ScopeEnter s0 - c0 - 9723 - - walk +duckdb::Vector.SetBuffer(buffer_ptr) 1 Param s13 - c0 - 9738 - s14 clang +duckdb::Vector.SetBuffer(buffer_ptr) 2 Call - s15 c0 - 9777 - member clang +duckdb::Vector.SetBuffer(buffer_ptr) 3 Read s12 - c0 - 9777 - - walk +duckdb::Vector.SetBuffer(buffer_ptr) 4 Call - s16 c0 - 9786 - free clang +duckdb::Vector.SetBuffer(buffer_ptr) 5 Read s13 - c0 - 9796 - - clang +duckdb::Vector.SetBuffer(buffer_ptr) 6 ScopeExit s0 - c0 - 9723 - - walk diff --git a/.claude/harvest/duckdb-headers/ore/common_types_vector/methods.tsv b/.claude/harvest/duckdb-headers/ore/common_types_vector/methods.tsv new file mode 100644 index 000000000..887b162fd --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_types_vector/methods.tsv @@ -0,0 +1,6 @@ +duckdb::Vector.Buffer() const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/vector.hpp duckdb::Vector 5 1 Observe 1 0 0 0 0 1 0 0 0 method public 0 - +duckdb::Vector.BufferMutable() /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/vector.hpp duckdb::Vector 5 1 Observe 1 0 0 0 0 0 0 0 0 method public 0 - +duckdb::Vector.GetBufferRef() const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/vector.hpp duckdb::Vector 4 1 Observe 1 0 0 0 0 1 0 0 0 method public 0 - +duckdb::Vector.GetType() const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/vector.hpp duckdb::Vector 4 1 Observe 1 0 0 0 0 1 0 0 0 method public 0 - +duckdb::Vector.GetVectorType() const /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/vector.hpp duckdb::Vector 17 3 Empty 0 0 0 0 0 1 0 0 0 method public 0 - +duckdb::Vector.SetBuffer(buffer_ptr) /home/user/adaworldapi/duckdb/src/include/duckdb/common/types/vector.hpp duckdb::Vector 7 1 Compute 0 1 0 0 0 0 0 0 0 method public 1 - diff --git a/.claude/harvest/duckdb-headers/ore/common_types_vector/scopes.tsv b/.claude/harvest/duckdb-headers/ore/common_types_vector/scopes.tsv new file mode 100644 index 000000000..85e8b4f2f --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_types_vector/scopes.tsv @@ -0,0 +1,8 @@ +duckdb::Vector.Buffer() const c0 - Function 0 0 4 +duckdb::Vector.BufferMutable() c0 - Function 0 0 4 +duckdb::Vector.GetBufferRef() const c0 - Function 0 0 3 +duckdb::Vector.GetType() const c0 - Function 0 0 3 +duckdb::Vector.GetVectorType() const c0 - Function 0 0 16 +duckdb::Vector.GetVectorType() const c1 c0 If 1 3 11 +duckdb::Vector.GetVectorType() const c2 c1 Then 2 8 10 +duckdb::Vector.SetBuffer(buffer_ptr) c0 - Function 0 0 6 diff --git a/.claude/harvest/duckdb-headers/ore/common_types_vector/symbols.tsv b/.claude/harvest/duckdb-headers/ore/common_types_vector/symbols.tsv new file mode 100644 index 000000000..9218f223e --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_types_vector/symbols.tsv @@ -0,0 +1,17 @@ +s0 scope_kind - Function walk +s1 local local buffer_ref clang +s2 type - const buffer_ptr clang +s3 callee this GetBufferRef clang +s4 scope_kind - If walk +s5 callee ext buffer_ref walk +s6 callee ext operator bool clang +s7 scope_kind - Then walk +s8 callee this GetVectorType clang +s9 callee this operator-> clang +s10 member own type walk +s11 callee this operator* clang +s12 member own buffer walk +s13 param param buffer_p clang +s14 type - buffer_ptr clang +s15 callee this operator= clang +s16 callee this move clang diff --git a/.claude/harvest/duckdb-headers/ore/common_vector_operations_scalar_executor/events.tsv b/.claude/harvest/duckdb-headers/ore/common_vector_operations_scalar_executor/events.tsv new file mode 100644 index 000000000..8db2c2072 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_vector_operations_scalar_executor/events.tsv @@ -0,0 +1,281 @@ +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 0 ScopeEnter s0 - c0 - 20827 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 1 Param s10 - c0 - 20846 - s11 clang +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 2 Param s12 - c0 - 20870 - s13 clang +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 3 ScopeEnter s14 - c1 c0 20893 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 4 Read s4 - c1 c0 20897 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 5 Condition - - c1 c0 20897 if - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 6 Branch - - c1 c0 20913 then - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 7 ScopeEnter s15 - c2 c1 20913 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 8 Call s29 s30 c2 c1 20919 - member clang +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 9 Read s4 - c2 c1 20919 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 10 Read s16 - c2 c1 20945 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 11 Read s12 - c2 c1 20957 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 12 ReadWrite s16 - c2 c1 20974 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 13 Read s10 - c2 c1 20988 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 14 ScopeExit s15 - c2 c1 20913 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 15 ScopeExit s14 - c1 c0 20893 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 16 ScopeEnter s14 - c3 c0 21015 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 17 Read s7 - c3 c0 21019 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 18 Condition - - c3 c0 21019 if - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 19 Branch - - c3 c0 21036 then - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 20 ScopeEnter s15 - c4 c3 21036 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 21 Call s31 s30 c4 c3 21042 - member clang +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 22 Read s7 - c4 c3 21042 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 23 Read s17 - c4 c3 21069 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 24 Read s12 - c4 c3 21082 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 25 ReadWrite s17 - c4 c3 21099 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 26 Read s10 - c4 c3 21115 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 27 ScopeExit s15 - c4 c3 21036 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 28 ScopeExit s14 - c3 c0 21015 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) 29 ScopeExit s0 - c0 - 20827 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 0 ScopeEnter s0 - c0 - 21146 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 1 Param s18 - c0 - 21177 - s19 clang +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 2 Param s20 - c0 - 21205 - s13 clang +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 3 Param s21 - c0 - 21218 - s13 clang +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 4 ScopeEnter s14 - c1 c0 21234 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 5 Read s7 - c1 c0 21238 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 6 Condition - - c1 c0 21238 if - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 7 Branch - - c1 c0 21255 then - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 8 ScopeEnter s15 - c2 c1 21255 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 9 ScopeEnter s22 - c3 c2 21261 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 10 Decl s23 - c3 c2 21266 for_init s13 clang +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 11 Read s20 - c3 c2 21278 for_init - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 12 Read s23 - c3 c2 21285 for_cond - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 13 Read s21 - c3 c2 21291 for_cond - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 14 ReadWrite s23 - c3 c2 21296 for_inc - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 15 Condition - - c3 c2 21261 for - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 16 Call s31 s30 c3 c2 21310 - member clang +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 17 Read s7 - c3 c2 21310 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 18 ReadWrite s17 - c3 c2 21337 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 19 Call s24 s25 c3 c2 21352 - member clang +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 20 Read s18 - c3 c2 21352 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 21 Read s23 - c3 c2 21366 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 22 ScopeExit s22 - c3 c2 21261 back_edge - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 23 ScopeExit s15 - c2 c1 21255 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 24 ScopeExit s14 - c1 c0 21234 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 25 ScopeExit s0 - c0 - 21146 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 0 ScopeEnter s0 - c0 - 21391 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 1 Param s10 - c0 - 21410 - s11 clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 2 Param s18 - c0 - 21434 - s19 clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 3 Param s26 - c0 - 21462 - s13 clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 4 ScopeEnter s14 - c1 c0 21480 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 5 Read s10 - c1 c0 21484 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 6 Condition - - c1 c0 21484 if - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 7 Branch - - c1 c0 21503 then - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 8 ScopeEnter s15 - c2 c1 21503 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 9 ScopeEnter s14 - c3 c2 21509 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 10 Read s4 - c3 c2 21513 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 11 Condition - - c3 c2 21513 if - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 12 Branch - - c3 c2 21529 then - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 13 ScopeEnter s15 - c4 c3 21529 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 14 ScopeEnter s22 - c5 c4 21536 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 15 Decl s23 - c5 c4 21541 for_init s13 clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 16 Read s23 - c5 c4 21556 for_cond - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 17 Read s26 - c5 c4 21562 for_cond - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 18 ReadWrite s23 - c5 c4 21569 for_inc - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 19 Condition - - c5 c4 21536 for - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 20 Call s29 s30 c5 c4 21584 - member clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 21 Read s4 - c5 c4 21584 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 22 Read s23 - c5 c4 21610 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 23 Call s24 s25 c5 c4 21615 - member clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 24 Read s18 - c5 c4 21615 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 25 Read s23 - c5 c4 21629 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 26 ScopeExit s22 - c5 c4 21536 back_edge - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 27 Write s16 - c4 c3 21648 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 28 Read s26 - c4 c3 21661 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 29 ScopeExit s15 - c4 c3 21529 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 30 ScopeExit s14 - c3 c2 21509 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 31 ScopeExit s15 - c2 c1 21503 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 32 Branch - - c1 c0 21684 else - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 33 ScopeEnter s27 - c6 c1 21684 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 34 ScopeEnter s14 - c7 c6 21684 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 35 Read s7 - c7 c6 21688 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 36 Condition - - c7 c6 21688 if - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 37 Branch - - c7 c6 21705 then - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 38 ScopeEnter s15 - c8 c7 21705 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 39 ScopeEnter s22 - c9 c8 21711 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 40 Decl s23 - c9 c8 21716 for_init s13 clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 41 Read s23 - c9 c8 21731 for_cond - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 42 Read s26 - c9 c8 21737 for_cond - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 43 ReadWrite s23 - c9 c8 21744 for_inc - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 44 Condition - - c9 c8 21711 for - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 45 Call s31 s30 c9 c8 21758 - member clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 46 Read s7 - c9 c8 21758 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 47 Read s23 - c9 c8 21785 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 48 Call s24 s25 c9 c8 21790 - member clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 49 Read s18 - c9 c8 21790 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 50 Read s23 - c9 c8 21804 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 51 ScopeExit s22 - c9 c8 21711 back_edge - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 52 Write s17 - c8 c7 21821 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 53 Read s26 - c8 c7 21835 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 54 ScopeExit s15 - c8 c7 21705 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 55 ScopeExit s14 - c7 c6 21684 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 56 ScopeExit s27 - c6 c1 21684 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 57 ScopeExit s14 - c1 c0 21480 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 58 Return - - c0 - 21850 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 59 Call - s28 c0 - 21857 - member clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 60 Read s26 - c0 - 21864 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 61 ScopeExit s0 - c0 - 21391 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Result(idx_t) const 0 ScopeEnter s0 - c0 - 21879 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Result(idx_t) const 1 Param s26 - c0 - 21899 - s13 clang +duckdb::ScalarExecutor::RuntimeSelectionSink.Result(idx_t) const 2 Return - - c0 - 21923 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Result(idx_t) const 3 Read s4 - c0 - 21930 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Result(idx_t) const 4 Read s16 - c0 - 21947 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Result(idx_t) const 5 Read s26 - c0 - 21960 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.Result(idx_t) const 6 Read s17 - c0 - 21968 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.Result(idx_t) const 7 ScopeExit s0 - c0 - 21879 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.RuntimeSelectionSink(SelectionVector *,SelectionVector *) 0 ScopeEnter s0 - c0 - 20649 - - walk +duckdb::ScalarExecutor::RuntimeSelectionSink.RuntimeSelectionSink(SelectionVector *,SelectionVector *) 1 Param s1 - c0 - 20670 - s2 clang +duckdb::ScalarExecutor::RuntimeSelectionSink.RuntimeSelectionSink(SelectionVector *,SelectionVector *) 2 Param s3 - c0 - 20705 - s2 clang +duckdb::ScalarExecutor::RuntimeSelectionSink.RuntimeSelectionSink(SelectionVector *,SelectionVector *) 3 CtorInit s4 - c0 - 20749 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.RuntimeSelectionSink(SelectionVector *,SelectionVector *) 4 Read s1 - c0 - 20764 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.RuntimeSelectionSink(SelectionVector *,SelectionVector *) 5 CtorInit s7 - c0 - 20783 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.RuntimeSelectionSink(SelectionVector *,SelectionVector *) 6 Read s3 - c0 - 20799 - - clang +duckdb::ScalarExecutor::RuntimeSelectionSink.RuntimeSelectionSink(SelectionVector *,SelectionVector *) 7 ScopeExit s0 - c0 - 20649 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 0 ScopeEnter s0 - c0 - 19165 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 1 Param s10 - c0 - 19184 - s11 clang +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 2 Param s12 - c0 - 19208 - s13 clang +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 3 ScopeEnter s14 - c1 c0 19231 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 4 Condition - - c1 c0 19245 if - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 5 Branch - - c1 c0 19265 then - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 6 ScopeEnter s15 - c2 c1 19265 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 7 Write s4 - c2 c1 19271 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 8 Read s4 - c2 c1 19271 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 9 Read s16 - c2 c1 19286 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 10 Read s12 - c2 c1 19325 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 11 ReadWrite s16 - c2 c1 19342 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 12 Read s10 - c2 c1 19356 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 13 ScopeExit s15 - c2 c1 19265 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 14 ScopeExit s14 - c1 c0 19231 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 15 ScopeEnter s14 - c3 c0 19383 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 16 Condition - - c3 c0 19397 if - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 17 Branch - - c3 c0 19418 then - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 18 ScopeEnter s15 - c4 c3 19418 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 19 Write s7 - c4 c3 19424 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 20 Read s7 - c4 c3 19424 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 21 Read s17 - c4 c3 19440 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 22 Read s12 - c4 c3 19480 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 23 ReadWrite s17 - c4 c3 19497 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 24 Read s10 - c4 c3 19513 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 25 ScopeExit s15 - c4 c3 19418 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 26 ScopeExit s14 - c3 c0 19383 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) 27 ScopeExit s0 - c0 - 19165 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 0 ScopeEnter s0 - c0 - 19544 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 1 Param s18 - c0 - 19575 - s19 clang +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 2 Param s20 - c0 - 19603 - s13 clang +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 3 Param s21 - c0 - 19616 - s13 clang +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 4 ScopeEnter s14 - c1 c0 19632 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 5 Condition - - c1 c0 19646 if - walk +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 6 Branch - - c1 c0 19667 then - walk +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 7 ScopeEnter s15 - c2 c1 19667 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 8 ScopeEnter s22 - c3 c2 19673 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 9 Decl s23 - c3 c2 19678 for_init s13 clang +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 10 Read s20 - c3 c2 19690 for_init - clang +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 11 Read s23 - c3 c2 19697 for_cond - clang +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 12 Read s21 - c3 c2 19703 for_cond - clang +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 13 ReadWrite s23 - c3 c2 19708 for_inc - clang +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 14 Condition - - c3 c2 19673 for - walk +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 15 Write s7 - c3 c2 19722 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 16 Read s7 - c3 c2 19722 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 17 ReadWrite s17 - c3 c2 19738 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 18 Call s24 s25 c3 c2 19780 - member clang +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 19 Read s18 - c3 c2 19780 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 20 Read s23 - c3 c2 19794 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 21 ScopeExit s22 - c3 c2 19673 back_edge - walk +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 22 ScopeExit s15 - c2 c1 19667 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 23 ScopeExit s14 - c1 c0 19632 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) 24 ScopeExit s0 - c0 - 19544 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 0 ScopeEnter s0 - c0 - 19819 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 1 Param s10 - c0 - 19838 - s11 clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 2 Param s18 - c0 - 19862 - s19 clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 3 Param s26 - c0 - 19890 - s13 clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 4 ScopeEnter s14 - c1 c0 19908 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 5 Read s10 - c1 c0 19912 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 6 Condition - - c1 c0 19912 if - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 7 Branch - - c1 c0 19931 then - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 8 ScopeEnter s15 - c2 c1 19931 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 9 ScopeEnter s14 - c3 c2 19937 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 10 Condition - - c3 c2 19951 if - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 11 Branch - - c3 c2 19971 then - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 12 ScopeEnter s15 - c4 c3 19971 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 13 ScopeEnter s22 - c5 c4 19978 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 14 Decl s23 - c5 c4 19983 for_init s13 clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 15 Read s23 - c5 c4 19998 for_cond - clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 16 Read s26 - c5 c4 20004 for_cond - clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 17 ReadWrite s23 - c5 c4 20011 for_inc - clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 18 Condition - - c5 c4 19978 for - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 19 Write s4 - c5 c4 20026 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 20 Read s4 - c5 c4 20026 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 21 Read s23 - c5 c4 20041 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 22 Call s24 s25 c5 c4 20073 - member clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 23 Read s18 - c5 c4 20073 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 24 Read s23 - c5 c4 20087 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 25 ScopeExit s22 - c5 c4 19978 back_edge - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 26 Write s16 - c4 c3 20106 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 27 Read s26 - c4 c3 20119 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 28 ScopeExit s15 - c4 c3 19971 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 29 ScopeExit s14 - c3 c2 19937 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 30 ScopeExit s15 - c2 c1 19931 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 31 Branch - - c1 c0 20142 else - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 32 ScopeEnter s27 - c6 c1 20142 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 33 ScopeEnter s14 - c7 c6 20142 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 34 Condition - - c7 c6 20156 if - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 35 Branch - - c7 c6 20177 then - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 36 ScopeEnter s15 - c8 c7 20177 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 37 ScopeEnter s22 - c9 c8 20183 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 38 Decl s23 - c9 c8 20188 for_init s13 clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 39 Read s23 - c9 c8 20203 for_cond - clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 40 Read s26 - c9 c8 20209 for_cond - clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 41 ReadWrite s23 - c9 c8 20216 for_inc - clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 42 Condition - - c9 c8 20183 for - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 43 Write s7 - c9 c8 20230 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 44 Read s7 - c9 c8 20230 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 45 Read s23 - c9 c8 20246 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 46 Call s24 s25 c9 c8 20278 - member clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 47 Read s18 - c9 c8 20278 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 48 Read s23 - c9 c8 20292 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 49 ScopeExit s22 - c9 c8 20183 back_edge - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 50 Write s17 - c8 c7 20309 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 51 Read s26 - c8 c7 20323 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 52 ScopeExit s15 - c8 c7 20177 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 53 ScopeExit s14 - c7 c6 20142 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 54 ScopeExit s27 - c6 c1 20142 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 55 ScopeExit s14 - c1 c0 19908 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 56 Return - - c0 - 20338 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 57 Call - s28 c0 - 20345 - member clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 58 Read s26 - c0 - 20352 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) 59 ScopeExit s0 - c0 - 19819 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Result(idx_t) const 0 ScopeEnter s0 - c0 - 20367 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Result(idx_t) const 1 Param s26 - c0 - 20387 - s13 clang +duckdb::ScalarExecutor::StaticSelectionSink.Result(idx_t) const 2 ScopeEnter s14 - c1 c0 20411 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Result(idx_t) const 3 Condition - - c1 c0 20425 if - walk +duckdb::ScalarExecutor::StaticSelectionSink.Result(idx_t) const 4 Branch - - c1 c0 20445 then - walk +duckdb::ScalarExecutor::StaticSelectionSink.Result(idx_t) const 5 ScopeEnter s15 - c2 c1 20445 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Result(idx_t) const 6 Return - - c2 c1 20451 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Result(idx_t) const 7 Read s16 - c2 c1 20458 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Result(idx_t) const 8 ScopeExit s15 - c2 c1 20445 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Result(idx_t) const 9 ScopeExit s14 - c1 c0 20411 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Result(idx_t) const 10 Return - - c0 - 20478 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Result(idx_t) const 11 Read s26 - c0 - 20485 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.Result(idx_t) const 12 Read s17 - c0 - 20493 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.Result(idx_t) const 13 ScopeExit s0 - c0 - 20367 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 0 ScopeEnter s0 - c0 - 18799 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 1 Param s1 - c0 - 18819 - s2 clang +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 2 Param s3 - c0 - 18854 - s2 clang +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 3 CtorInit s4 - c0 - 18898 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 4 Read s1 - c0 - 18913 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 5 Call s5 s6 c0 - 18932 - member clang +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 6 Read s1 - c0 - 18932 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 7 CtorInit s7 - c0 - 18977 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 8 Read s3 - c0 - 18993 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 9 Call s8 s6 c0 - 19013 - member clang +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 10 Read s3 - c0 - 19013 - - clang +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 11 Cast - - c0 - 19055 - static walk +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 12 Read s4 - c0 - 19087 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 13 Cast - - c0 - 19055 - functional walk +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 14 Call - s9 c0 - 19055 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 15 Cast - - c0 - 19107 - static walk +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 16 Read s7 - c0 - 19140 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 17 Cast - - c0 - 19107 - functional walk +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 18 Call - s9 c0 - 19107 - - walk +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) 19 ScopeExit s0 - c0 - 18799 - - walk diff --git a/.claude/harvest/duckdb-headers/ore/common_vector_operations_scalar_executor/methods.tsv b/.claude/harvest/duckdb-headers/ore/common_vector_operations_scalar_executor/methods.tsv new file mode 100644 index 000000000..e2a034bc9 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_vector_operations_scalar_executor/methods.tsv @@ -0,0 +1,10 @@ +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/vector_operations/scalar_executor.hpp duckdb::ScalarExecutor::RuntimeSelectionSink 30 5 Normalize 4 2 0 0 0 0 0 0 0 method public 2 - +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/vector_operations/scalar_executor.hpp duckdb::ScalarExecutor::RuntimeSelectionSink 26 4 Normalize 2 1 0 0 0 0 0 0 0 method public 3 - +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/vector_operations/scalar_executor.hpp duckdb::ScalarExecutor::RuntimeSelectionSink 62 10 Compute 2 2 0 0 0 0 0 0 0 method public 3 - +duckdb::ScalarExecutor::RuntimeSelectionSink.Result(idx_t) const /home/user/adaworldapi/duckdb/src/include/duckdb/common/vector_operations/scalar_executor.hpp duckdb::ScalarExecutor::RuntimeSelectionSink 8 1 Observe 3 0 0 0 0 1 0 0 0 method public 1 - +duckdb::ScalarExecutor::RuntimeSelectionSink.RuntimeSelectionSink(SelectionVector *,SelectionVector *) /home/user/adaworldapi/duckdb/src/include/duckdb/common/vector_operations/scalar_executor.hpp duckdb::ScalarExecutor::RuntimeSelectionSink 8 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 2 - +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/vector_operations/scalar_executor.hpp duckdb::ScalarExecutor::StaticSelectionSink 28 5 Compute 2 4 0 0 0 0 0 0 0 method public 2 - +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/vector_operations/scalar_executor.hpp duckdb::ScalarExecutor::StaticSelectionSink 25 4 Compute 1 2 0 0 0 0 0 0 0 method public 3 - +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) /home/user/adaworldapi/duckdb/src/include/duckdb/common/vector_operations/scalar_executor.hpp duckdb::ScalarExecutor::StaticSelectionSink 60 10 Compute 0 4 0 0 0 0 0 0 0 method public 3 - +duckdb::ScalarExecutor::StaticSelectionSink.Result(idx_t) const /home/user/adaworldapi/duckdb/src/include/duckdb/common/vector_operations/scalar_executor.hpp duckdb::ScalarExecutor::StaticSelectionSink 14 3 Observe 2 0 0 0 0 1 0 0 0 method public 1 - +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) /home/user/adaworldapi/duckdb/src/include/duckdb/common/vector_operations/scalar_executor.hpp duckdb::ScalarExecutor::StaticSelectionSink 20 1 Observe 2 0 0 0 0 0 0 0 0 ctor public 2 - diff --git a/.claude/harvest/duckdb-headers/ore/common_vector_operations_scalar_executor/scopes.tsv b/.claude/harvest/duckdb-headers/ore/common_vector_operations_scalar_executor/scopes.tsv new file mode 100644 index 000000000..e647cbf69 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_vector_operations_scalar_executor/scopes.tsv @@ -0,0 +1,44 @@ +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) c0 - Function 0 0 29 +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) c1 c0 If 1 3 15 +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) c2 c1 Then 2 7 14 +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) c3 c0 If 1 16 28 +duckdb::ScalarExecutor::RuntimeSelectionSink.Append(bool,idx_t) c4 c3 Then 2 20 27 +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) c0 - Function 0 0 25 +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) c1 c0 If 1 4 24 +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) c2 c1 Then 2 8 23 +duckdb::ScalarExecutor::RuntimeSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) c3 c2 For 3 9 22 +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c0 - Function 0 0 61 +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c1 c0 If 1 4 57 +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c2 c1 Then 2 8 31 +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c3 c2 If 3 9 30 +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c4 c3 Then 4 13 29 +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c5 c4 For 5 14 26 +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c6 c1 Else 2 33 56 +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c7 c6 If 3 34 55 +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c8 c7 Then 4 38 54 +duckdb::ScalarExecutor::RuntimeSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c9 c8 For 5 39 51 +duckdb::ScalarExecutor::RuntimeSelectionSink.Result(idx_t) const c0 - Function 0 0 7 +duckdb::ScalarExecutor::RuntimeSelectionSink.RuntimeSelectionSink(SelectionVector *,SelectionVector *) c0 - Function 0 0 7 +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) c0 - Function 0 0 27 +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) c1 c0 If 1 3 14 +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) c2 c1 Then 2 6 13 +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) c3 c0 If 1 15 26 +duckdb::ScalarExecutor::StaticSelectionSink.Append(bool,idx_t) c4 c3 Then 2 18 25 +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) c0 - Function 0 0 24 +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) c1 c0 If 1 4 23 +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) c2 c1 Then 2 7 22 +duckdb::ScalarExecutor::StaticSelectionSink.AppendInvalidRange(const SelectionVector &,idx_t,idx_t) c3 c2 For 3 8 21 +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c0 - Function 0 0 59 +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c1 c0 If 1 4 55 +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c2 c1 Then 2 8 30 +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c3 c2 If 3 9 29 +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c4 c3 Then 4 12 28 +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c5 c4 For 5 13 25 +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c6 c1 Else 2 32 54 +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c7 c6 If 3 33 53 +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c8 c7 Then 4 36 52 +duckdb::ScalarExecutor::StaticSelectionSink.FillConstant(bool,const SelectionVector &,idx_t) c9 c8 For 5 37 49 +duckdb::ScalarExecutor::StaticSelectionSink.Result(idx_t) const c0 - Function 0 0 13 +duckdb::ScalarExecutor::StaticSelectionSink.Result(idx_t) const c1 c0 If 1 2 9 +duckdb::ScalarExecutor::StaticSelectionSink.Result(idx_t) const c2 c1 Then 2 5 8 +duckdb::ScalarExecutor::StaticSelectionSink.StaticSelectionSink(SelectionVector *,SelectionVector *) c0 - Function 0 0 19 diff --git a/.claude/harvest/duckdb-headers/ore/common_vector_operations_scalar_executor/symbols.tsv b/.claude/harvest/duckdb-headers/ore/common_vector_operations_scalar_executor/symbols.tsv new file mode 100644 index 000000000..f066b7023 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_vector_operations_scalar_executor/symbols.tsv @@ -0,0 +1,32 @@ +s0 scope_kind - Function walk +s1 param param true_selection_p clang +s2 type - SelectionVector * clang +s3 param param false_selection_p clang +s4 member own true_selection clang +s5 callee ext true_selection_p walk +s6 callee ext data clang +s7 member own false_selection clang +s8 callee ext false_selection_p walk +s9 callee this walk +s10 param param comparison_result clang +s11 type - bool clang +s12 param param result_idx clang +s13 type - idx_t clang +s14 scope_kind - If walk +s15 scope_kind - Then walk +s16 member own true_count walk +s17 member own false_count walk +s18 param param sel clang +s19 type - const SelectionVector & clang +s20 param param start clang +s21 param param end clang +s22 scope_kind - For walk +s23 local local row clang +s24 callee ext sel walk +s25 callee ext get_index clang +s26 param param count clang +s27 scope_kind - Else walk +s28 callee this Result clang +s29 callee ext true_selection walk +s30 callee ext set_index clang +s31 callee ext false_selection walk diff --git a/.claude/harvest/duckdb-headers/ore/common_vector_unified_vector_format/events.tsv b/.claude/harvest/duckdb-headers/ore/common_vector_unified_vector_format/events.tsv new file mode 100644 index 000000000..e839a7e68 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_vector_unified_vector_format/events.tsv @@ -0,0 +1,7 @@ +duckdb::ConsecutiveChildListInfo.ConsecutiveChildListInfo() 0 ScopeEnter s0 - c0 - 3583 - - walk +duckdb::ConsecutiveChildListInfo.ConsecutiveChildListInfo() 1 CtorInit s1 - c0 - 3612 - - clang +duckdb::ConsecutiveChildListInfo.ConsecutiveChildListInfo() 2 CtorInit s2 - c0 - 3631 - - clang +duckdb::ConsecutiveChildListInfo.ConsecutiveChildListInfo() 3 CtorInit s3 - c0 - 3653 - - clang +duckdb::ConsecutiveChildListInfo.ConsecutiveChildListInfo() 4 Call - s4 c0 - 3653 - - walk +duckdb::ConsecutiveChildListInfo.ConsecutiveChildListInfo() 5 Call - s5 c0 - 3669 - ctor clang +duckdb::ConsecutiveChildListInfo.ConsecutiveChildListInfo() 6 ScopeExit s0 - c0 - 3583 - - walk diff --git a/.claude/harvest/duckdb-headers/ore/common_vector_unified_vector_format/methods.tsv b/.claude/harvest/duckdb-headers/ore/common_vector_unified_vector_format/methods.tsv new file mode 100644 index 000000000..2e99d9b1d --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_vector_unified_vector_format/methods.tsv @@ -0,0 +1 @@ +duckdb::ConsecutiveChildListInfo.ConsecutiveChildListInfo() /home/user/adaworldapi/duckdb/src/include/duckdb/common/vector/unified_vector_format.hpp duckdb::ConsecutiveChildListInfo 7 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 0 - diff --git a/.claude/harvest/duckdb-headers/ore/common_vector_unified_vector_format/scopes.tsv b/.claude/harvest/duckdb-headers/ore/common_vector_unified_vector_format/scopes.tsv new file mode 100644 index 000000000..11476d8fb --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_vector_unified_vector_format/scopes.tsv @@ -0,0 +1 @@ +duckdb::ConsecutiveChildListInfo.ConsecutiveChildListInfo() c0 - Function 0 0 6 diff --git a/.claude/harvest/duckdb-headers/ore/common_vector_unified_vector_format/symbols.tsv b/.claude/harvest/duckdb-headers/ore/common_vector_unified_vector_format/symbols.tsv new file mode 100644 index 000000000..58855ced7 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/common_vector_unified_vector_format/symbols.tsv @@ -0,0 +1,6 @@ +s0 scope_kind - Function walk +s1 member own is_constant clang +s2 member own needs_slicing clang +s3 member own child_list_info clang +s4 callee this walk +s5 callee this list_entry_t clang diff --git a/.claude/harvest/duckdb-headers/ore/execution_expression_executor_state/events.tsv b/.claude/harvest/duckdb-headers/ore/execution_expression_executor_state/events.tsv new file mode 100644 index 000000000..b8f14af7b --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/execution_expression_executor_state/events.tsv @@ -0,0 +1,12 @@ +duckdb::ExecuteFunctionState.GetFunctionState(ExpressionState &) 0 ScopeEnter s0 - c0 - 1679 - - walk +duckdb::ExecuteFunctionState.GetFunctionState(ExpressionState &) 1 Param s1 - c0 - 1736 - s2 clang +duckdb::ExecuteFunctionState.GetFunctionState(ExpressionState &) 2 Return - - c0 - 1764 - - walk +duckdb::ExecuteFunctionState.GetFunctionState(ExpressionState &) 3 Call - s3 c0 - 1764 - - walk +duckdb::ExecuteFunctionState.GetFunctionState(ExpressionState &) 4 Call - s4 c0 - 1771 - ctor clang +duckdb::ExecuteFunctionState.GetFunctionState(ExpressionState &) 5 Call s5 s6 c0 - 1771 - member clang +duckdb::ExecuteFunctionState.GetFunctionState(ExpressionState &) 6 Read s7 - c0 - 1771 - - walk +duckdb::ExecuteFunctionState.GetFunctionState(ExpressionState &) 7 Call s8 s9 c0 - 1771 - member clang +duckdb::ExecuteFunctionState.GetFunctionState(ExpressionState &) 8 Read s1 - c0 - 1771 - - clang +duckdb::ExecuteFunctionState.GetFunctionState(ExpressionState &) 9 ScopeExit s0 - c0 - 1679 - - walk +duckdb::ExpressionState.~ExpressionState() 0 ScopeEnter s0 - c0 - 647 - - walk +duckdb::ExpressionState.~ExpressionState() 1 ScopeExit s0 - c0 - 647 - - walk diff --git a/.claude/harvest/duckdb-headers/ore/execution_expression_executor_state/methods.tsv b/.claude/harvest/duckdb-headers/ore/execution_expression_executor_state/methods.tsv new file mode 100644 index 000000000..c728f5bd6 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/execution_expression_executor_state/methods.tsv @@ -0,0 +1,2 @@ +duckdb::ExecuteFunctionState.GetFunctionState(ExpressionState &) /home/user/adaworldapi/duckdb/src/include/duckdb/execution/expression_executor_state.hpp duckdb::ExecuteFunctionState 10 1 Empty 0 0 0 0 0 0 1 0 0 method public 1 - +duckdb::ExpressionState.~ExpressionState() /home/user/adaworldapi/duckdb/src/include/duckdb/execution/expression_executor_state.hpp duckdb::ExpressionState 2 1 Empty 0 0 0 0 0 0 0 1 0 dtor public 0 - diff --git a/.claude/harvest/duckdb-headers/ore/execution_expression_executor_state/scopes.tsv b/.claude/harvest/duckdb-headers/ore/execution_expression_executor_state/scopes.tsv new file mode 100644 index 000000000..81952611f --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/execution_expression_executor_state/scopes.tsv @@ -0,0 +1,2 @@ +duckdb::ExecuteFunctionState.GetFunctionState(ExpressionState &) c0 - Function 0 0 9 +duckdb::ExpressionState.~ExpressionState() c0 - Function 0 0 1 diff --git a/.claude/harvest/duckdb-headers/ore/execution_expression_executor_state/symbols.tsv b/.claude/harvest/duckdb-headers/ore/execution_expression_executor_state/symbols.tsv new file mode 100644 index 000000000..964f90a01 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/execution_expression_executor_state/symbols.tsv @@ -0,0 +1,10 @@ +s0 scope_kind - Function walk +s1 param param state clang +s2 type - ExpressionState & clang +s3 callee this walk +s4 callee this optional_ptr clang +s5 callee ext local_state walk +s6 callee ext get clang +s7 member ext local_state walk +s8 callee ext state walk +s9 callee ext Cast clang diff --git a/.claude/harvest/duckdb-headers/ore/execution_ht_entry/events.tsv b/.claude/harvest/duckdb-headers/ore/execution_ht_entry/events.tsv new file mode 100644 index 000000000..9324e8324 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/execution_ht_entry/events.tsv @@ -0,0 +1,92 @@ +duckdb.IncrementAndWrap(idx_t &,const uint64_t &) 0 ScopeEnter s0 - c0 - 3038 - - walk +duckdb.IncrementAndWrap(idx_t &,const uint64_t &) 1 Param s17 - c0 - 3067 - s18 clang +duckdb.IncrementAndWrap(idx_t &,const uint64_t &) 2 Param s19 - c0 - 3082 - s20 clang +duckdb.IncrementAndWrap(idx_t &,const uint64_t &) 3 ReadWrite s21 - c0 - 3116 - - walk +duckdb.IncrementAndWrap(idx_t &,const uint64_t &) 4 Read s17 - c0 - 3118 - - clang +duckdb.IncrementAndWrap(idx_t &,const uint64_t &) 5 Read s19 - c0 - 3128 - - clang +duckdb.IncrementAndWrap(idx_t &,const uint64_t &) 6 ScopeExit s0 - c0 - 3038 - - walk +duckdb::ht_entry_t.ExtractSalt(const hash_t &) 0 ScopeEnter s0 - c0 - 2376 - - walk +duckdb::ht_entry_t.ExtractSalt(const hash_t &) 1 Param s15 - c0 - 2409 - s5 clang +duckdb::ht_entry_t.ExtractSalt(const hash_t &) 2 Return - - c0 - 2433 - - walk +duckdb::ht_entry_t.ExtractSalt(const hash_t &) 3 Read s15 - c0 - 2440 - - clang +duckdb::ht_entry_t.ExtractSalt(const hash_t &) 4 Read s14 - c0 - 2447 - - clang +duckdb::ht_entry_t.ExtractSalt(const hash_t &) 5 ScopeExit s0 - c0 - 2376 - - walk +duckdb::ht_entry_t.GetPointer() const 0 ScopeEnter s0 - c0 - 1664 - - walk +duckdb::ht_entry_t.GetPointer() const 1 Cast - - c0 - 1705 - static walk +duckdb::ht_entry_t.GetPointer() const 2 Call - s10 c0 - 1714 - member clang +duckdb::ht_entry_t.GetPointer() const 3 Cast - - c0 - 1705 - functional walk +duckdb::ht_entry_t.GetPointer() const 4 Call - s11 c0 - 1705 - free clang +duckdb::ht_entry_t.GetPointer() const 5 Return - - c0 - 1731 - - walk +duckdb::ht_entry_t.GetPointer() const 6 Call - s12 c0 - 1738 - member clang +duckdb::ht_entry_t.GetPointer() const 7 ScopeExit s0 - c0 - 1664 - - walk +duckdb::ht_entry_t.GetPointerOrNull() const 0 ScopeEnter s0 - c0 - 1812 - - walk +duckdb::ht_entry_t.GetPointerOrNull() const 1 Return - - c0 - 1859 - - walk +duckdb::ht_entry_t.GetPointerOrNull() const 2 Call - s13 c0 - 1866 - free clang +duckdb::ht_entry_t.GetPointerOrNull() const 3 Read s1 - c0 - 1889 - - walk +duckdb::ht_entry_t.GetPointerOrNull() const 4 Read s14 - c0 - 1897 - - clang +duckdb::ht_entry_t.GetPointerOrNull() const 5 ScopeExit s0 - c0 - 1812 - - walk +duckdb::ht_entry_t.GetSalt() const 0 ScopeEnter s0 - c0 - 2466 - - walk +duckdb::ht_entry_t.GetSalt() const 1 Return - - c0 - 2500 - - walk +duckdb::ht_entry_t.GetSalt() const 2 Call - s16 c0 - 2507 - static clang +duckdb::ht_entry_t.GetSalt() const 3 Read s1 - c0 - 2519 - - walk +duckdb::ht_entry_t.GetSalt() const 4 ScopeExit s0 - c0 - 2466 - - walk +duckdb::ht_entry_t.GetSaltWithNulls() const 0 ScopeEnter s0 - c0 - 2532 - - walk +duckdb::ht_entry_t.GetSaltWithNulls() const 1 Return - - c0 - 2575 - - walk +duckdb::ht_entry_t.GetSaltWithNulls() const 2 Read s1 - c0 - 2582 - - walk +duckdb::ht_entry_t.GetSaltWithNulls() const 3 Read s9 - c0 - 2590 - - clang +duckdb::ht_entry_t.GetSaltWithNulls() const 4 ScopeExit s0 - c0 - 2532 - - walk +duckdb::ht_entry_t.IsOccupied() const 0 ScopeEnter s0 - c0 - 1522 - - walk +duckdb::ht_entry_t.IsOccupied() const 1 Return - - c0 - 1557 - - walk +duckdb::ht_entry_t.IsOccupied() const 2 Read s1 - c0 - 1564 - - walk +duckdb::ht_entry_t.IsOccupied() const 3 ScopeExit s0 - c0 - 1522 - - walk +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) 0 ScopeEnter s0 - c0 - 1917 - - walk +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) 1 Param s6 - c0 - 1940 - s7 clang +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) 2 Cast - - c0 - 2009 - static walk +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) 3 Call - s8 c0 - 2019 - free clang +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) 4 Read s6 - c0 - 2042 - - clang +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) 5 Read s9 - c0 - 2053 - - clang +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) 6 Cast - - c0 - 2009 - functional walk +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) 7 Call - s11 c0 - 2009 - free clang +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) 8 Cast - - c0 - 2124 - static walk +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) 9 Read s1 - c0 - 2134 - - walk +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) 10 Read s14 - c0 - 2142 - - clang +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) 11 Read s14 - c0 - 2159 - - clang +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) 12 Cast - - c0 - 2124 - functional walk +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) 13 Call - s11 c0 - 2124 - free clang +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) 14 ReadWrite s1 - c0 - 2237 - - walk +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) 15 Call - s8 c0 - 2246 - free clang +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) 16 Read s6 - c0 - 2269 - - clang +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) 17 Read s9 - c0 - 2280 - - clang +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) 18 ScopeExit s0 - c0 - 1917 - - walk +duckdb::ht_entry_t.SetSalt(const hash_t &) 0 ScopeEnter s0 - c0 - 2606 - - walk +duckdb::ht_entry_t.SetSalt(const hash_t &) 1 Param s4 - c0 - 2626 - s5 clang +duckdb::ht_entry_t.SetSalt(const hash_t &) 2 Cast - - c0 - 2694 - static walk +duckdb::ht_entry_t.SetSalt(const hash_t &) 3 Call - s10 c0 - 2704 - member clang +duckdb::ht_entry_t.SetSalt(const hash_t &) 4 Cast - - c0 - 2694 - functional walk +duckdb::ht_entry_t.SetSalt(const hash_t &) 5 Call - s11 c0 - 2694 - free clang +duckdb::ht_entry_t.SetSalt(const hash_t &) 6 Cast - - c0 - 2772 - static walk +duckdb::ht_entry_t.SetSalt(const hash_t &) 7 Read s4 - c0 - 2782 - - clang +duckdb::ht_entry_t.SetSalt(const hash_t &) 8 Read s14 - c0 - 2789 - - clang +duckdb::ht_entry_t.SetSalt(const hash_t &) 9 Read s14 - c0 - 2806 - - clang +duckdb::ht_entry_t.SetSalt(const hash_t &) 10 Cast - - c0 - 2772 - functional walk +duckdb::ht_entry_t.SetSalt(const hash_t &) 11 Call - s11 c0 - 2772 - free clang +duckdb::ht_entry_t.SetSalt(const hash_t &) 12 Write s1 - c0 - 2876 - - walk +duckdb::ht_entry_t.SetSalt(const hash_t &) 13 Read s4 - c0 - 2884 - - clang +duckdb::ht_entry_t.SetSalt(const hash_t &) 14 ScopeExit s0 - c0 - 2606 - - walk +duckdb::ht_entry_t.ht_entry_t() 0 ScopeEnter s0 - c0 - 1281 - - walk +duckdb::ht_entry_t.ht_entry_t() 1 CtorInit s1 - c0 - 1305 - - clang +duckdb::ht_entry_t.ht_entry_t() 2 ScopeExit s0 - c0 - 1281 - - walk +duckdb::ht_entry_t.ht_entry_t(const hash_t &,const data_ptr_t &) 0 ScopeEnter s0 - c0 - 1390 - - walk +duckdb::ht_entry_t.ht_entry_t(const hash_t &,const data_ptr_t &) 1 Param s4 - c0 - 1401 - s5 clang +duckdb::ht_entry_t.ht_entry_t(const hash_t &,const data_ptr_t &) 2 Param s6 - c0 - 1421 - s7 clang +duckdb::ht_entry_t.ht_entry_t(const hash_t &,const data_ptr_t &) 3 CtorInit s1 - c0 - 1455 - - clang +duckdb::ht_entry_t.ht_entry_t(const hash_t &,const data_ptr_t &) 4 Call - s8 c0 - 1461 - free clang +duckdb::ht_entry_t.ht_entry_t(const hash_t &,const data_ptr_t &) 5 Read s6 - c0 - 1484 - - clang +duckdb::ht_entry_t.ht_entry_t(const hash_t &,const data_ptr_t &) 6 Read s4 - c0 - 1496 - - clang +duckdb::ht_entry_t.ht_entry_t(const hash_t &,const data_ptr_t &) 7 Read s9 - c0 - 1503 - - clang +duckdb::ht_entry_t.ht_entry_t(const hash_t &,const data_ptr_t &) 8 ScopeExit s0 - c0 - 1390 - - walk +duckdb::ht_entry_t.ht_entry_t(hash_t) 0 ScopeEnter s0 - c0 - 1321 - - walk +duckdb::ht_entry_t.ht_entry_t(hash_t) 1 Param s2 - c0 - 1341 - s3 clang +duckdb::ht_entry_t.ht_entry_t(hash_t) 2 CtorInit s1 - c0 - 1368 - - clang +duckdb::ht_entry_t.ht_entry_t(hash_t) 3 Read s2 - c0 - 1374 - - clang +duckdb::ht_entry_t.ht_entry_t(hash_t) 4 ScopeExit s0 - c0 - 1321 - - walk diff --git a/.claude/harvest/duckdb-headers/ore/execution_ht_entry/methods.tsv b/.claude/harvest/duckdb-headers/ore/execution_ht_entry/methods.tsv new file mode 100644 index 000000000..4a673a1ee --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/execution_ht_entry/methods.tsv @@ -0,0 +1,12 @@ +duckdb.IncrementAndWrap(idx_t &,const uint64_t &) /home/user/adaworldapi/duckdb/src/include/duckdb/execution/ht_entry.hpp duckdb 7 1 Empty 0 0 0 0 0 0 0 0 0 method public 2 - +duckdb::ht_entry_t.ExtractSalt(const hash_t &) /home/user/adaworldapi/duckdb/src/include/duckdb/execution/ht_entry.hpp duckdb::ht_entry_t 6 1 Empty 0 0 0 0 0 0 1 0 0 method public 1 - +duckdb::ht_entry_t.GetPointer() const /home/user/adaworldapi/duckdb/src/include/duckdb/execution/ht_entry.hpp duckdb::ht_entry_t 8 1 Empty 0 0 0 0 0 1 0 0 0 method public 0 - +duckdb::ht_entry_t.GetPointerOrNull() const /home/user/adaworldapi/duckdb/src/include/duckdb/execution/ht_entry.hpp duckdb::ht_entry_t 6 1 Observe 1 0 0 0 0 1 0 0 0 method public 0 - +duckdb::ht_entry_t.GetSalt() const /home/user/adaworldapi/duckdb/src/include/duckdb/execution/ht_entry.hpp duckdb::ht_entry_t 5 1 Observe 1 0 0 0 0 1 0 0 0 method public 0 - +duckdb::ht_entry_t.GetSaltWithNulls() const /home/user/adaworldapi/duckdb/src/include/duckdb/execution/ht_entry.hpp duckdb::ht_entry_t 5 1 Observe 1 0 0 0 0 1 0 0 0 method public 0 - +duckdb::ht_entry_t.IsOccupied() const /home/user/adaworldapi/duckdb/src/include/duckdb/execution/ht_entry.hpp duckdb::ht_entry_t 4 1 Observe 1 0 0 0 0 1 0 0 0 method public 0 - +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) /home/user/adaworldapi/duckdb/src/include/duckdb/execution/ht_entry.hpp duckdb::ht_entry_t 19 1 Normalize 1 1 0 0 0 0 0 0 0 method public 1 - +duckdb::ht_entry_t.SetSalt(const hash_t &) /home/user/adaworldapi/duckdb/src/include/duckdb/execution/ht_entry.hpp duckdb::ht_entry_t 15 1 Compute 0 1 0 0 0 0 0 0 0 method public 1 - +duckdb::ht_entry_t.ht_entry_t() /home/user/adaworldapi/duckdb/src/include/duckdb/execution/ht_entry.hpp duckdb::ht_entry_t 3 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 0 - +duckdb::ht_entry_t.ht_entry_t(const hash_t &,const data_ptr_t &) /home/user/adaworldapi/duckdb/src/include/duckdb/execution/ht_entry.hpp duckdb::ht_entry_t 9 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 2 - +duckdb::ht_entry_t.ht_entry_t(hash_t) /home/user/adaworldapi/duckdb/src/include/duckdb/execution/ht_entry.hpp duckdb::ht_entry_t 5 1 Empty 0 0 0 0 0 0 0 0 0 ctor public 1 - diff --git a/.claude/harvest/duckdb-headers/ore/execution_ht_entry/scopes.tsv b/.claude/harvest/duckdb-headers/ore/execution_ht_entry/scopes.tsv new file mode 100644 index 000000000..bfb9079d6 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/execution_ht_entry/scopes.tsv @@ -0,0 +1,12 @@ +duckdb.IncrementAndWrap(idx_t &,const uint64_t &) c0 - Function 0 0 6 +duckdb::ht_entry_t.ExtractSalt(const hash_t &) c0 - Function 0 0 5 +duckdb::ht_entry_t.GetPointer() const c0 - Function 0 0 7 +duckdb::ht_entry_t.GetPointerOrNull() const c0 - Function 0 0 5 +duckdb::ht_entry_t.GetSalt() const c0 - Function 0 0 4 +duckdb::ht_entry_t.GetSaltWithNulls() const c0 - Function 0 0 4 +duckdb::ht_entry_t.IsOccupied() const c0 - Function 0 0 3 +duckdb::ht_entry_t.SetPointer(const data_ptr_t &) c0 - Function 0 0 18 +duckdb::ht_entry_t.SetSalt(const hash_t &) c0 - Function 0 0 14 +duckdb::ht_entry_t.ht_entry_t() c0 - Function 0 0 2 +duckdb::ht_entry_t.ht_entry_t(const hash_t &,const data_ptr_t &) c0 - Function 0 0 8 +duckdb::ht_entry_t.ht_entry_t(hash_t) c0 - Function 0 0 4 diff --git a/.claude/harvest/duckdb-headers/ore/execution_ht_entry/symbols.tsv b/.claude/harvest/duckdb-headers/ore/execution_ht_entry/symbols.tsv new file mode 100644 index 000000000..16f2ed602 --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/execution_ht_entry/symbols.tsv @@ -0,0 +1,22 @@ +s0 scope_kind - Function walk +s1 member own value clang +s2 param param value_p clang +s3 type - hash_t clang +s4 param param salt clang +s5 type - const hash_t & clang +s6 param param pointer clang +s7 type - const data_ptr_t & clang +s8 callee this cast_pointer_to_uint64 clang +s9 local local SALT_MASK clang +s10 callee this IsOccupied clang +s11 callee this __assert_fail clang +s12 callee this GetPointerOrNull clang +s13 callee this cast_uint64_to_pointer clang +s14 local local POINTER_MASK clang +s15 param param hash clang +s16 callee this ExtractSalt clang +s17 param param offset clang +s18 type - idx_t & clang +s19 param param capacity_mask clang +s20 type - const uint64_t & clang +s21 other unknown ? walk diff --git a/.claude/harvest/duckdb-headers/ore/per-header.tsv b/.claude/harvest/duckdb-headers/ore/per-header.tsv new file mode 100644 index 000000000..354fd30bc --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/per-header.tsv @@ -0,0 +1,12 @@ +header methods events +common_operator_comparison_operators 5 39 +common_operator_constant_operators 0 0 +common_row_operations_row_matcher 0 0 +common_types_selection_vector 26 311 +common_types_validity_mask 61 836 +common_types_vector 6 42 +common_vector_operations_scalar_executor 10 281 +common_vector_unified_vector_format 1 7 +execution_expression_executor_state 2 12 +execution_ht_entry 12 92 +TOTAL 123 1620 diff --git a/.claude/harvest/duckdb-headers/ore/provenance.txt b/.claude/harvest/duckdb-headers/ore/provenance.txt new file mode 100644 index 000000000..899be276e --- /dev/null +++ b/.claude/harvest/duckdb-headers/ore/provenance.txt @@ -0,0 +1,5 @@ +duckdb_src=/home/user/adaworldapi/duckdb +duckdb_head=48edc2adb83cadc84e1e52fc0e976f277f0c706f +duckdb_origin=https://github.com/AdaWorldAPI/duckdb +ruff_head=d8ec10e5e6d3deedd0dcd5c03022e61020c9e885 +clang=Ubuntu clang version 18.1.3 (1ubuntu1) diff --git a/.claude/harvest/duckdb-headers/run.sh b/.claude/harvest/duckdb-headers/run.sh new file mode 100755 index 000000000..5e2b85df6 --- /dev/null +++ b/.claude/harvest/duckdb-headers/run.sh @@ -0,0 +1,100 @@ +#!/usr/bin/env bash +# Reproducible DuckDB HEADER harvest — discharges §6 of +# `.claude/plans/duckdb-to-v3-translation-matrix-v1.md`. +# +# §6 recorded that the original 22-TU `.cpp` harvest yielded seven TUs at +# 100 % `Empty`, because DuckDB's execution is template-dispatched and lives in +# HEADERS. A header pass was then run (2026-09-14) and its counts written into +# this directory's README — but the TSVs, the args and the DuckDB source were +# all absent, so the README's own honesty note says the complaint was NOT +# discharged: "a README quoting counts from a TSV that is absent". +# +# This script is the discharge. Everything it needs is committed beside it: +# the header list, the clang args template, and (after a run) the TSVs. +# +# DUCKDB_SRC=/path/to/duckdb ./run.sh +# +# Defaults to the AdaWorldAPI fork's conventional read-clone path. The fork is +# the P0-correct source; upstream duckdb/duckdb is deliberately NOT used. +set -euo pipefail + +HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +DUCKDB_SRC="${DUCKDB_SRC:-/home/user/adaworldapi/duckdb}" +RUFF_SRC="${RUFF_SRC:-/home/user/ruff}" +OUT="${OUT:-$HERE/ore}" +LIBCLANG_PATH="${LIBCLANG_PATH:-/usr/lib/llvm-18/lib}" + +[ -d "$DUCKDB_SRC/src/include/duckdb" ] || { + echo "DUCKDB_SRC=$DUCKDB_SRC has no src/include/duckdb." >&2 + echo "Clone it: GIT_LFS_SKIP_SMUDGE=1 git clone --depth 1 \\" >&2 + echo " https://github.com/AdaWorldAPI/duckdb $DUCKDB_SRC" >&2 + exit 2 +} + +HARVESTER="$RUFF_SRC/target/release/examples/harvest_events" +[ -x "$HARVESTER" ] || { + echo "Building the harvester ..." >&2 + ( cd "$RUFF_SRC" && CARGO_PROFILE_DEV_DEBUG=0 cargo build -p ruff_cpp_spo \ + --features libclang --example harvest_events --release ) +} + +# The args file is GENERATED from the committed template, so the include paths +# follow DUCKDB_SRC rather than being pinned to one machine's checkout. +ARGS="$OUT/args.txt" +mkdir -p "$OUT" +sed "s|@DUCKDB_SRC@|$DUCKDB_SRC|g" "$HERE/args.txt.in" > "$ARGS" + +# Provenance: which DuckDB the counts below were read from. A count without +# its commit is an anecdote — the same rule the parity probes follow. +{ + echo "duckdb_src=$DUCKDB_SRC" + echo "duckdb_head=$(git -C "$DUCKDB_SRC" rev-parse HEAD 2>/dev/null || echo UNKNOWN)" + echo "duckdb_origin=$(git -C "$DUCKDB_SRC" remote get-url origin 2>/dev/null || echo UNKNOWN)" + echo "ruff_head=$(git -C "$RUFF_SRC" rev-parse HEAD 2>/dev/null || echo UNKNOWN)" + echo "clang=$(clang --version 2>/dev/null | head -1 || echo UNKNOWN)" +} > "$OUT/provenance.txt" + +total_methods=0 +total_events=0 +: > "$OUT/per-header.tsv" +printf 'header\tmethods\tevents\n' >> "$OUT/per-header.tsv" + +while read -r rel; do + [ -n "$rel" ] || continue + tag="${rel//\//_}" + hdr="$DUCKDB_SRC/src/include/duckdb/$rel.hpp" + [ -f "$hdr" ] || { echo "MISSING $hdr" >&2; exit 3; } + # The previous output for this header is REMOVED before the harvest, and a + # harvester failure ABORTS the run. + # + # ⊘ This line used to end `|| true`. Codex flagged it on lance-graph #1240 + # and was right: `OUT` defaults to the directory holding the ALREADY + # COMMITTED TSVs, so a failed harvest left the old files in place, the `wc` + # below counted them, and the run exited 0 — while `provenance.txt` had + # already been rewritten with the CURRENT DuckDB and ruff commits. The + # result is the exact failure this script exists to prevent: old + # measurements attributed to a new checkout, reported as a clean run. A + # harvest that cannot run is not a harvest that found nothing. + rm -rf "$OUT/$tag" + ORE_FILE="$hdr" ORE_ARGS_FILE="$ARGS" ORE_OUT="$OUT/$tag" \ + LIBCLANG_PATH="$LIBCLANG_PATH" "$HARVESTER" >/dev/null 2>&1 || { + echo "HARVEST FAILED for $rel -- rerun without the output redirect to see clang's error" >&2 + exit 4 + } + # NEITHER TSV carries a header row -- line 1 is already data, so the raw + # line count IS the count. An earlier version of this script subtracted a + # header row that does not exist and reported 115/1612 against the README's + # 123/1622, which read as the README being wrong. It was this script. The + # counting rule is asserted below rather than assumed. + m=0; e=0 + [ -f "$OUT/$tag/methods.tsv" ] && m=$(wc -l < "$OUT/$tag/methods.tsv") + [ -f "$OUT/$tag/events.tsv" ] && e=$(wc -l < "$OUT/$tag/events.tsv") + printf '%s\t%d\t%d\n' "$tag" "$m" "$e" >> "$OUT/per-header.tsv" + total_methods=$(( total_methods + m )) + total_events=$(( total_events + e )) +done < "$HERE/headers.txt" + +printf 'TOTAL\t%d\t%d\n' "$total_methods" "$total_events" >> "$OUT/per-header.tsv" +cat "$OUT/per-header.tsv" +echo +echo "provenance: $(sed -n 2p "$OUT/provenance.txt")" diff --git a/.claude/plans/lance-graph-as-the-modelgraph-v1.md b/.claude/plans/lance-graph-as-the-modelgraph-v1.md new file mode 100644 index 000000000..756140f64 --- /dev/null +++ b/.claude/plans/lance-graph-as-the-modelgraph-v1.md @@ -0,0 +1,1684 @@ +# lance-graph AS the ModelGraph — v1 + +> **Status:** PROPOSAL (operator-set endgame, 2026-09-16). No code yet; this +> document is the survey that makes the next wave a wiring job instead of a +> design job. +> +> **Operator:** *"endgame should be to wire lance-graph as ModelGraph"*, arrived +> at through: *"sql() polyfill is next then / doublecheck and work on +> quack<>duckdb parity / always use ruff cpp to analyze the duckdb code"*, +> *"ruff has at least 2 codegen arms"*, *"lance-graph-arm-discovery supports +> pandas like table > spo based on frequency and confidence"*. + +## The claim + +`ModelGraph` is today a **transient Rust object** — `ruff_spo_triplet::ir::ModelGraph` +is `{ namespace: String, models: Vec }`, built by a harvest, consumed by +a codegen pass, then dropped. The endgame is that it stops being transient and +**becomes addressed rows in lance-graph's V3 SoA**: one substrate that the +harvest mints into, that `arm-discovery` mines, that codegen projects from, and +that `sql()`/quack queries. + +The payoff is that these four stop being four pipelines over three formats and +become four readers of one addressed surface. + +## The direction constraint — this is what decides the design + +**No ruff crate may compile against lance-graph.** The edge is forbidden and the +tree takes real trouble to respect it: + +- `ruff_cpp_codegen` — *"names `lance_graph_contract` types as text, never + compiles against lance-graph"*; the rendered Rust is type-checked downstream + in the consumer repo. +- `ruff_spo_address` — mints a 16-byte facet *"layout-identical to + `lance_graph_contract::facet::FacetCascade`"*. Layout-identical, **not + imported**. + +Verified 2026-09-16: `grep -rn "lance.graph" ruff/crates/*/Cargo.toml` finds the +string only inside two `description =` fields. Zero dependency edges. + +So "wire lance-graph as ModelGraph" can only mean **lance-graph becomes the +HOME**, fed across a byte boundary — never ruff importing the spine. This also +matches `assembler-vs-storage-substrate.md`: OGAR assembles, lance-graph is the +spine, Lance calcifies. + +## The chain, and it is ALREADY BUILT except one step + +``` + C++ corpus (e.g. AdaWorldAPI/duckdb) + │ + ├─(A) ruff_cpp_spo::extract_tree ─────────► ModelGraph [ruff] + │ CppClass / CppFunction / CppEnum + │ has_function · inherits_from · virtually_overrides + │ + ├─(B) ruff_spo_address::mint ─────────────► Facet, 16 B [ruff, no dep] + │ part_of = has_field/has_function (hi chain, mereology) + │ is_a = inherits_from/rdf:type (lo chain, taxonomy) + │ byte-identical to FacetCascade, CascadeShape::G6D2 + │ + ├─(C) ogar-from-ruff::mint ───────────────► CompiledClass [OGAR] + │ THINK arm Class + DO arm ActionDef + the rail Facet + │ + ├─(D) ogar-from-ruff::lance_sink ─────────► NodeRow 512 B + │ compiled_class_to_facet (a reinterpret no-op) + │ compiled_class_to_noderow (CANON key|edges|value) + │ compiled_classes_to_le_bytes ──► as_le_bytes() + │ + ├─(E) ✗✗✗ THE ONE MISSING LINK: Dataset::write ✗✗✗ + │ lance_sink.rs names it out of scope BY DESIGN: + │ "stops at as_le_bytes(), exactly as network::to_facet stops at + │ the facet … that column write needs the lance engine / ractor + │ runtime." + │ + └─(F) the readers, once (E) exists + quack / sql() — query it + arm-discovery — mine it, write truth back as edges + ruff_cpp_codegen — project Rust manifests FROM it +``` + +**(A)–(D) are live, unstubbed code.** `lance_sink.rs` is 263 lines with zero +`todo!`/`unimplemented!`. The endgame is not a rewrite; it is **(E) plus +pointing (A) at a second corpus**. + +## What arm-discovery contributes, confirmed in source + +`lance-graph-arm-discovery` is the **table → SPO** arm, exactly as the operator +described. `translator.rs`, verbatim: + +- ARM **confidence** = `cooccur / antecedent_count` → NARS **frequency** +- ARM **evidence** `m = cooccur` → NARS **confidence** `c = m / (m + k)` +- canonical carrier is `TruthU8` (`frequency`/`confidence` as `u8`) — *"exactly + the `CausalEdge64` wire, float-free"*; the `f32` `NarsTruth` exists only as an + edge *"because the downstream `spo::truth::TruthValue` and + `ruff_spo_triplet::Triple` are themselves f32"*. + +That last clause matters: **arm-discovery already names `ruff_spo_triplet::Triple` +as its downstream.** The seam is half-acknowledged in code today. + +Its input is `Dataset { spec: FeatureSpec, rows: Vec> }` — a +categorical table, one code per feature per row. That is precisely the shape of +the harvest ore (`events.tsv`: method × ordinal × EventKind × scope × …), so +the DuckDB event ore can be mined without inventing a format. **The encoder +from ore-TSV to `Dataset` does not exist yet** and is the cheapest real +deliverable in this plan. + +## The codegen arms — two, and the second is not the obvious one + +| arm | in | does | +|---|---|---| +| `ruff_cpp_codegen` | ruff | ModelGraph → `ClassManifest` → **Rust source** (`MethodSig` targeting the OGAR Core), gated by a `decompile ∘ project` signature-plane round-trip | +| `ruff_spo_address` | ruff | SPO triples → **`(part_of:is_a)` rank-mint** → the 16-byte address. Its own doc: *"the one genuinely-new brick between the `ruff_*_spo` SPO harvest and the lance-graph `(part_of:is_a)` GUID SoA … the carrier is already there; this crate fills the mint."* | + +`ruff_python_codegen` is **not** one of these — it is upstream ruff's +`Generator`/`Stylist` (Python AST → source) and unrelated to the SPO path. + +## Honest gaps, in dependency order + +| # | gap | size | +|---|---|---| +| G-A | `extract_tree` has **never been run on DuckDB** — only the behavioural `harvest_events` arm has. The structural arm is what yields the operator class tree. | small: run it | +| G-B | No ore-TSV → `arm_discovery::Dataset` encoder. | small | +| G-C | **(E)** — no `Dataset::write`. Everything upstream stops at `as_le_bytes()`. | the real one | +| G-D | `sql()` does not exist on the Java surface. Per `lance-graph-java/CLAUDE.md` it is the whole consumer story, and it needs a substrate to query. | gated on G-C | +| G-E | **quack has no DuckDB in its loop at all** — zero dependency; every "DuckDB" in it is a doc comment, and its oracles are hand-written Rust. What is called parity today is quack ↔ its own oracle. Task #8's "DuckDB semantic differential fixtures" remains genuinely unstarted. | independent, real | + +## Wave order (proposed, not started) + +1. **W1 — structural harvest of DuckDB** (G-A). Run `extract_tree` over the + operator/expression headers; commit the triples beside the event ore, same + provenance discipline. Falsifier: the class tree must contain the types the + translation matrix reasoned about by hand (`Vector`, `SelectionVector`, + `ValidityMask`, `ht_entry_t`, the `ScalarExecutor` sinks) — if the harvest + misses them, the structural arm has DuckDB's template problem too and that + is the finding. +2. **W2 — ore → Dataset encoder** (G-B), then mine the DuckDB event ore and + read the rules. Falsifier: rules must be non-vacuous — a rule set whose + confidence is ~1.0 everywhere is measuring the harvester's own grammar, not + DuckDB. +3. **W3 — the write** (G-C). The single highest-value step; unblocks G-D and + makes every earlier stage durable instead of transient. +4. **W4 — real DuckDB differential** (G-E). Independent of 1–3 and honest to + start now: it is the only thing that makes the word "parity" true. + +## What this plan does NOT claim + +It does not claim (A)–(D) work on DuckDB — they are proven on the Tesseract/ +C# corpora, and DuckDB is template-heavy in a way that already defeated one +harvest arm (`duckdb-to-v3-translation-matrix-v1.md` §6: seven TUs at 100 % +`Empty`). W1's falsifier exists precisely because that may recur. + +It does not claim (E) is small. `lance_sink.rs` names the blocker in its own +words, and `symbiont`'s tombstone write is recorded BLOCKED for the same +reason. + +--- + +## The OLD ModelGraph sank to the WRONG place — and the reason names this plan's risk + +Operator, 2026-09-16: *"OLD ModelGraph was sinking to surrealql AST DLL arm by +mistake which later was deprecated and switched to ogar IR with a wrapper to +wire adapters and storage and Klickwege parity via askama in ERB redmine ERB +fieldview ergonomics."* + +Confirmed in primary sources, and the deprecation's own words are the point: + +> `OGAR/crates/ogar-adapter-surrealql/src/lib.rs:3` — +> **"⊘ DEPRECATED (operator ruling 2026-07-22 — a separation-of-concerns +> error)"**, and *"The reason is not primarily 'it doesn't work'."* + +`docs/SURREAL-AST-AS-ADAPTER.md` records what went wrong: the behavioural arm +(`ActionDef` + `ActionInvocation` + `KausalSpec` + lifecycle) has **no +equivalent vocabulary in DDL**, so encoding it there means *"hijacking `DEFINE +EVENT … WHEN … THEN …`"* — §0 calls this the **negative-beauty workaround**: +*"it works in a narrow sense and rots immediately."* + +**Why this is load-bearing for THIS plan rather than history.** The +corrected shape is exactly the chain in the diagram above — ModelGraph sinks to +**OGAR IR**, and a **wrapper** then wires three separate things that the DDL +sink had collapsed into one: + +| the wrapper wires | today | +|---|---| +| **adapters** | `ogar-adapter-*` (SurrealQL demoted to one membrane among several, never the spine) | +| **storage** | `ogar-from-ruff::lance_sink` → `NodeRow` → `as_le_bytes()` — this plan's G-C | +| **Klickwege parity** | askama fieldview — `ogar-render-askama::render_field_view`, consumed by `a2ui-rs`; the ERB/redmine lineage | + +So G-C is not merely "add a write". It is the storage leg of a **three-leg +wrapper whose whole reason for existing is that collapsing the legs was the +original error.** A G-C implementation that reached back into adapter or render +concerns would be the 2026-07-22 mistake with a different target, and the +`layer-boundary-warden` / `bbb-warden` cards are the gate. + +**Direct consequence for `sql()` (G-D):** the same trap in its Java clothes. +`sql()` is an ADAPTER leg. It must never become the place behaviour is +expressed — which is precisely what `lance-graph-java/CLAUDE.md`'s ruling +already says from the other side (*"behavior travels by ADDRESS … `onClick: +` in a component tree is the same hijack as `DEFINE EVENT` in DDL"*, +a2ui-rs T2). Two repos, two rulings, one error. + +## The THIRD codegen arm — `ruff_python_dto_check` + +Operator: *"ruff dto crate is meant to deduplicate routes and … also to propose +Separation of concern optimizations."* + +It exists and is substantial — `bundle`/`calibrate`/`codegen`/`config`/ +`contract`/`emit`/`extractors`/`matcher`/`observations`/`preflight`, its own +`bin`. Self-described as *"config-driven extractor over `ruff_python_parser` +that harvests structured DTO/route/handler facts … with a preflight subcommand +that proposes a config from the tree itself"*, and **additive** — it depends on +`ruff_python_parser`/`_ast`/`ruff_source_file` and modifies no other crate. + +So the count is **three**, not two, and the plan's table above is corrected: + +| arm | emits | +|---|---| +| `ruff_cpp_codegen` | Rust `MethodSig` manifests from a C++ ModelGraph | +| `ruff_spo_address` | the `(part_of:is_a)` rank-mint → 16-byte facet | +| **`ruff_python_dto_check::codegen`** | **handler + view template** — `codegen/{dto,columns,jinja,pipeline,target}.rs`, kind-generalized by `KindRecipe` so *"the other 10 kinds slot in by adding a recipe entry — not new Rust per kind"* | + +**`jinja.rs` is the same fieldview ergonomics leg** the wrapper wires as +Klickwege parity — the template side of the askama/ERB lineage, reached from +route/handler facts instead of from a `DocIr`. That is a convergence worth +probing, not assuming: two producers, one view-template surface. + +Its guardrail is already the right one and should be inherited by anything this +plan generates: *"Generated code goes to a draft directory; it is never wired +into a build and never emits `unimplemented!()`/`todo!()` into a compiled +production path (the PR #102 failure guardrail)."* + +**Route dedup + SoC proposals are the capability to reuse, not rebuild.** Note +what the pairing means: the SurrealQL sink was deprecated *as a +separation-of-concerns error*, and this crate's stated job includes *proposing +separation-of-concern optimizations*. The tool that proposes the fix and the +mistake it would have caught are the same concept at two ends of the arc — so +pointing it at a corpus is a cheap, direct check on whether a sink is +collapsing legs, rather than a new analysis to invent. + +**Scope honesty:** it is a **Python** extractor (`ruff_python_parser`). DuckDB +is C++, so it does not apply to W1 directly; its relevance here is (a) the +third codegen arm for the count, (b) the view-template convergence with +askama fieldview, and (c) route-dedup/SoC as an existing capability for the +Python-shaped consumers (odoo-rs, woa-rs, the `list_for_tenant`/`soft_delete` +recipes it already implements end-to-end against the woa-rs oracle). + +--- + +## ⊘ G-C's BLOCKER AS STATED IS STALE — ractor is not what the write needs + +Operator, 2026-09-16: *"ractor is replaced by the lance-graph soa_mailbox.rs and +lance-graph-supervisor kanban_actor.rs is the readonly monitoring version."* + +Confirmed in source, and it **removes an imaginary blocker from this plan**. +G-C above quotes `lance_sink.rs`: *"that column write needs the lance engine / +ractor runtime."* The ractor half of that sentence is out of date. + +**`kanban_actor.rs` says so in its own module doc** (tombstone dated +2026-08-05, `E-PROGRESSION-IS-EXISTENCE-NOT-COMMAND-1`): + +> *"Message-free kanban **visibility + pure helpers** — what remains of the +> retired actor surface."* … `KanbanActor` + `KanbanMsg::{Advance, MulAdvance, +> Tick}` and the RPC drivers are *"DELETED, not deprecated: a version tick was +> being read as permission to advance, and an ack-shaped RPC was being read as +> what makes the substrate progress."* + +And it names the model that replaced them: + +```text +think → seal → publish Lance version → next cycle reads the published version +``` + +> *"Nothing signals, acknowledges, or schedules that."* + +**The write discipline lives in `mailbox_soa.rs`** — `crates/cognitive-shader-driver/ +src/mailbox_soa.rs` (the operator's "soa_mailbox.rs", words swapped; searching +the filename alone finds nothing, which is why this was worth checking rather +than restating). It carries one-writer-per-mailbox as a *compile-time* property, +not a convention: rows are *"consumed in place by the owner (no emission)"*, +*"ownership is compile-proven"*, and the *"mutated only via the owner trait +invariant is compiler-enforced"* (E-CE64-MB-4). + +### What this changes, concretely + +| | before this note | after | +|---|---|---| +| G-C is | "build or adopt an actor runtime we don't have" | **publish a Lance version from an owned mailbox** | +| the shape | an ack-shaped RPC per write | `think → seal → publish`; progression is existence, not command | +| the risk | none stated | porting actor-per-write would re-add the exact architecture this repo DELETED | + +The last row is the one to carry into W3. `lance-graph-java/CLAUDE.md` already +states it as an inherited rule — *"actor/message-per-write is the architecture +lance-graph itself DELETED — never port it… per-owner `advance(owner)` RPCs are +exactly the deleted shape"* — and it applies with equal force here, on the +repo that did the deleting. + +**Residue, so it is not mistaken for the live model:** `ractor` still appears in +four `Cargo.toml` files — `cognitive-stack`, `symbiont`, `onebrc-probe`, +`lance-graph-supervisor` (the last two `optional = true`, and the supervisor's +`description` still advertises a *"ractor-supervised actor tree"*). `symbiont` +is operator-ruled no-go (`CLAUDE.md`: *"⊘ DEPRECATED 2026-08-18, operator +no-go"*). Those entries are leftovers; none of them is evidence that the write +path wants an actor. + +**Consequence for the wave order:** W3 gets cheaper and its acceptance gate gets +sharper. It is not "stand up a runtime"; it is "seal a `NodeRow` batch and +publish one version, written by the mailbox that owns those rows." The +falsifier follows directly — a W3 implementation that introduces a message, an +ack, a tick, or a per-owner `advance()` RPC has re-created the deleted shape and +fails on that ground regardless of whether the bytes land. + +--- + +## ⊘ SECOND CORRECTION — G-C IS NOT "no write". The writer EXISTS; the READ is the gap. + +Operator, 2026-09-16: *"lance-graph 879 + 908..912 949 (?) started to migrate it +accordingly to batchwriter."* Followed. The arc, and what it left: + +| PR | landed | +|---|---| +| #879 | D-MBX-A6-P4 cycle loop-closure driver — sparse seal/apply + MUL-gate thought seam | +| #908-910 | boot config at `.config//config.yaml`; `soa_config` unknown-key rejection + classid doc corrections | +| #911 | `graph/cycle_sink` — the concrete Lance-backed `WalSink` | +| **#912** | **Phase A: artifact-backed commits + THE SOLE OWNED LANCE WRITER** (supersedes #911's contract) | +| #949 | D-WXS-2a half A — row-major vs Morton KILL fires, no code change | + +**So `Dataset::write` is real and in-tree** — two call sites, under a module doc +saying the I/O *"is INTERNAL to this one writer"*: +`Dataset::write` at `crates/lance-graph/src/graph/cycle_sink.rs:675` (the Create +inside `LanceCycleWriter::bootstrap`) and `Dataset::write` at +`crates/lance-graph/src/graph/cycle_sink.rs:710` (the Create-or-Append inside +`LanceCycleWriter::raw_append`). The plan's G-C above — *"no `Dataset::write`"* — +was **wrong when written.** + +> ⊘ The first spelling of this citation was `…rs:675` followed by a bare +> `` `:710` ``, and the citation-decay gate correctly failed it: its anchor is the +> NEAREST backticked token, so `:710` — which is not a symbol and appears nowhere +> near line 675 — became the thing it went looking for. The fix the gate asks for +> is not a corrected number but an anchor that is an ADDRESS, so each citation now +> carries `Dataset::write` adjacent to it, and that string is literally on both +> cited lines. A shorthand second reference is cheap to write and costs a real +> gate failure. + +### `batch_writer.rs`'s own status note is ALSO stale + +It carries, dated 2026-07-27: *"`cast()` itself has **zero production call +sites**."* Measured 2026-09-16 — **three**, all production, none in `#[cfg(test)]`: + +| site | role | +|---|---| +| `cognitive-shader-driver/src/mailbox_soa.rs:764` | the **owner** casting its own moves (`writer: &mut BatchWriter

` in a production signature) | +| `lance-graph-planner/src/owner_adapter.rs:100` | **write-on-behalf** (`//! write-on-behalf to the BatchWriter`) | +| `lance-graph-supervisor/src/cycle_driver.rs:407` | **P4a (drain)** — *"Map the fleet's staged `BatchWriter` casts into `SweepSlot`s"* | + +(The ~17 other `.cast(` hits are ractor `ActorRef::cast(SupervisorMsg::…)` — a +different method entirely. Counting them would have inflated this.) + +### What IS still unwired — and it is the observation leg, not the write + +**`deinterlace` has zero production callers.** Every hit outside `temporal.rs` +is a doc comment; `witness_fabric.rs:510` cites the same 2026-07-27 note. So: + +``` +intent staged (BatchWriter::cast) ✓ wired, 3 sites +bytes written (cycle_sink Dataset::write) ✓ exists, #912 +durability READ (deinterlace) ✗ ZERO production callers +OGAR bytes → that writer ✗ lance_sink still stops at as_le_bytes() +``` + +**G-C therefore splits, and neither half is what the plan said:** + +- **G-C1 — connect `ogar-from-ruff::lance_sink` to the writer that already + exists.** Smaller than "build a write": both ends are built and they do not + meet. +- **G-C2 — wire the durability read.** `batch_writer.rs` states the ruling it + obeys (`E-ACK-ELIMINATED-1`, no confirmation bookkeeping — durability is the + row's own `LanceVersion` read through `temporal`) and then says that read has + no production implementor. **A write nothing reads back is not yet a loop.** + +> **Third stale blocker this session.** `lance_sink`'s "needs the ractor +> runtime", `batch_writer`'s "zero call sites", and this plan's own "no +> `Dataset::write`" were all true once and all false when I quoted them. The +> pattern is specific enough to name: **a STATUS note dated months back is a +> measurement, and this workspace's own rule is that a measurement without a +> re-run is an anecdote.** Re-measure before citing — three for three. + +## The Rubicon connection — why `revision.rs` and the missing read are ONE gap + +Operator: *"ogar-loco and revision.rs are 2 of the loose ends"* … *"revision.rs +is supposed to be the rubikon heckhausen last phase."* + +Heckhausen's Rubicon model runs **predecisional → preactional → actional → +postactional**, and the last phase is *evaluating the achieved outcome against +the original goal*. The model is genuinely wired here — `cognitive-compiler/ +src/lib.rs:18` carries *"The five Rubicon phases (Heckhausen). A trace records +which phase produced…"*, `lance-graph-contract/src/rubicon_witness.rs` maps the +phases and asks *"why a focus mask can falsify it"*, and `lib.rs:167` names +**D-ACR-8 — reading the Heckhausen crossing from the focus of attention**. + +`revision.rs` (in the CONTRACT, not the planner) says of itself: + +> *"models revision, not truth persistence, and still has **no production write +> capability** — the output types stop before actual-world mutation by design"*, +> closing a gap where `entropy-closure-causal-ground-v1` (#1057) names revision +> *"the only write-back"* and *"the court of appeal."* + +**These are the same gap seen from two ends.** The postactional phase cannot +evaluate an outcome it cannot observe; observation is `deinterlace`; the court +of appeal has no write-back because the durable read that would tell it what +actually happened is unwired. G-C2 is therefore not plumbing — **it is what +closes the last Rubicon phase**, and "revision has no write capability" is a +symptom rather than an independent item. + +## The kanban seam — planner ↔ ogar-loco ↔ ogar-r2il + +Operator: *"lance-graph-planner <> ogar-loco <> ogar-r2il has a lot of gaps to +wire the kanban."* Measured — and the gap is NARROWER and more specific than +"unwired". + +> ⊘ **I drafted "unwired in both directions" and it was FALSE.** Caught before +> commit by re-checking a citation I had just written, which is the same +> re-measure rule this document states three paragraphs up. The bridge crate +> EXISTS. + +**`lance-graph-ogar` IS the seam, and it is built.** A workspace member +(`Cargo.toml:96`) that depends on BOTH sides — `lance-graph-contract` by path +(`:86`, `:159`) and `ogar-loco` by git (`:137`) — for the stated reason that +neither may import the other: + +> `recipe_vocab.rs` — *"the 34 NARS recipes as `ogar-loco` ops above +> `DOMAIN_FLOOR`, with the kanban census as the awareness surface +> (`D-ACR-9`)"* … *"`ogar_loco` is zero-dep by design and +> `lance_graph_contract` is zero-dep by charter. **Neither may import the +> other** … A vocabulary needs both, so it lives in a consumer that already +> depends on both"* … *"**The ladder IS a program**: `recipe_dispatch::ladder` +> returns an ordered `Vec`; loco executes ordered +> `(function : value)` calls. That is mechanism, not analogy."* + +So the 34-recipe → loco-op unification and the kanban census surface are +**already written**. What is missing is one edge: + +- **The planner does not depend on `lance-graph-ogar`** (verified: no such line + in `lance-graph-planner/Cargo.toml`). The seam exists in a crate the planner + cannot see. +- **`ogar-loco` / `ogar-r2il` themselves: zero `kanban` hits.** Correct by + design — the zero-dep rule above means the kanban vocabulary belongs in the + bridge, not in loco. Their silence is conformance, not a gap. +- The planner-side references stay forward-looking doc comments + (`cognitive_palette.rs:77` *"Growth from here is `ogar-loco`, not this + table"*; `recipe_dispatch.rs:301` *"what an ogar-loco `FunctionBody` WILL + carry"*) because nothing has connected them to the bridge that now exists. + +> ⊘ **AND THE REMEDIATION I FIRST WROTE HERE — "add a planner → lance-graph-ogar +> dependency" — IS ALSO WRONG.** The operator pointed at `hotplug.rs`, and it +> names a different mechanism entirely. Second correction to this same section, +> both caught before commit. + +### The sanctioned mechanism is HOT-PLUG, and a Cargo edge is not it + +`lance-graph-contract/src/hotplug.rs` — *"Generic consumer hot-plug — the +plug-and-play pattern EVERY consumer migrates to (operator, 2026-07-07)"* — +three roles, three homes: + +| role | home | note | +|---|---|---| +| **socket** | `lance-graph-contract::hotplug` | `HotPlug` + `CapabilityAuthority`, **zero-dep**: *"No OGAR dep — the contract … MUST stay dependency-free (a path dep here breaks every CI cargo invocation at workspace-load time; learned 2026-07-07)"* | +| **authority** | OGAR-side | resolves classids → vocab rows, action defs, and the storage reading (`Activation::read_modes`); verifies registration | +| **consumer** | its own crate | declares **one `HotPlug` const**, calls `activate` in its own binary/tests | + +> *"The classid is the join key on BOTH sides … drift bangs once, **no pins, no +> serialization, no per-consumer plug crate**."* + +**The activation cascade** (operator, 2026-09-16): *"plug and play mints the +classid. and classid mints ogar-vocab which triggers ogar-loco vocabulary."* + +``` +HotPlug const (consumer) → activate() → classid minted + → ogar-vocab rows (Class + ActionDef) + → ogar-loco vocabulary (the palette / + recipe ops, landing in recipe_vocab.rs) +``` + +That is why `recipe_vocab.rs` can carry *"the 34 NARS recipes as `ogar-loco` +ops … with the kanban census as the awareness surface (`D-ACR-9`)"* without +either zero-dep crate importing the other: **the classid is the join, not a +dependency edge.** + +### Measured state of the hot-plug spine + +| piece | state | +|---|---| +| socket (`HotPlug`, `CapabilityAuthority`) | **built**, zero-dep, in the contract | +| authority (`impl … CapabilityAuthority for OgarAuthority`) | **built and PRODUCTION** — `lance-graph-ogar/src/lib.rs:524`; `#[cfg(test)]` does not begin until `:612` | +| consumer declarations | **all eight are TEST FIXTURES** (`:618`–`:831`, inside the two `cfg(test)` modules at `:612` and `:681`) — including `BLOCKLY` | +| **the planner's own `HotPlug`** | **ABSENT** — zero `HotPlug`/`hotplug` hits anywhere in `lance-graph-planner/src` | + +> A grep note worth keeping: `impl.*CapabilityAuthority` found nothing on the +> first pass because the impl is written fully-qualified +> (`impl lance_graph_contract::hotplug::CapabilityAuthority for OgarAuthority`). +> I nearly recorded "the authority is unimplemented", which would have been the +> fourth false blocker of the session. **A negative grep result is a claim about +> the pattern, not about the tree.** + +**So G-F is: the planner declares a `HotPlug` const and calls `activate`.** No +dependency edge, no plug crate, no seam to build — socket, authority and the +loco landing are all in place; the one consumer that needs the kanban has never +plugged in. Third instance this session of two built ends that do not meet. + +### The palette arc — and what checking it turned up + +Operator: *"ogar loco has a palette arc to unify the 34 nars templates which +just have been checked last few PRs only to find old VSA bindspace singleton +and hamming 16kbit deprecated."* + +The palette surface is in `ogar-loco` (`registry.rs`, `basin.rs`, +`vocabulary.rs`, `lib.rs`), and `recipe_vocab.rs` above is its lance-side +landing. The deprecation the recent PRs surfaced is recorded in-tree — +`cognitive-shader-driver/src/engine_bridge.rs:370` calls the +`Vsa16kF32`/`Binary16K` set-bits plane *"the deprecated one"* — and this repo's +own `CLAUDE.md` carries both supersessions: PR #477's three-tier model +(no singleton, no inter-mailbox handoff type at all) and +`E-MARKOV-TEMPORAL-STREAM-1` (2026-07-10), which moves the Markov trajectory +**off the VSA braid onto the `temporal.rs` sorted stream** and demotes VSA to +its `I-VSA-IDENTITIES` four-test niche (N ≤ 32 lossless role superposition +inside ONE compartment). + +**Consequence for the palette arc, and it is a real constraint:** a unification +of the 34 templates must NOT be carried on a 16 Kbit Hamming plane or a +singleton BindSpace. Both are superseded substrate, and `temporal.rs`'s +version-range read (`QueryReference::at(v, rung)` + deinterlace) is what +replaced them — **which lands on G-C2 again**, since that read has no +production caller. The palette arc, the Rubicon last phase, and the durability +read are three names for the same missing leg. + +## The other loose end — alpha channel split tunnel ↔ SPOG + +`.claude/plans/spog-alpha-channel-v1.md` exists: **SPEC (Phase 0), 2026-09-07, +48 KB**, self-described *"Register-before-code. Every 'exists' claim below was +read this session … Every 'absent' claim names the search that backs it."* Its +operator mandate targets MedCare-rs, and it carries the lance-11 constraint +(*"rows are experimental in lance 11 and only required for tombstones which we +avoid by having sealed batch per cycle"*) — the same sealed-batch-per-cycle +shape #912's writer implements. + +**Not surveyed further here** — it is a private-consumer-facing spec and +deserves its own pass rather than a paragraph in this plan. Recorded as a named +open end with its status, not folded in. + +## Revised gap table + +| # | gap | was | now | +|---|---|---|---| +| G-A | `extract_tree` never run on DuckDB | small | unchanged | +| G-B | no ore-TSV → `Dataset` encoder | small | unchanged | +| **G-C1** | OGAR bytes → the existing owned writer | *"the real one"* | **smaller — both ends exist, they do not meet** | +| **G-C2** | `deinterlace` / durability read | not identified | **the real one — and it is what closes Heckhausen's last phase** | +| G-D | `sql()` | gated on G-C | gated on G-C2 (a surface over an unreadable write is not a surface) | +| G-E | quack has no DuckDB in its loop | real | unchanged | +| **G-F** | planner ↔ loco ↔ r2il kanban seam | not in plan | **smaller than it reads: the planner declares a `HotPlug` and calls `activate`** | +| **G-G** | alpha-channel split tunnel ↔ SPOG | not in plan | **SPEC Phase 0 exists; needs its own pass** | + +> ⊘ **G-F's row said "unwired both ways; a build, not a wiring" — and this +> document's own body, four sections up, said the opposite:** *"socket, +> authority and the loco landing are all in place; the one consumer that needs +> the kanban has never plugged in."* The body is right; the row was written +> from the first impression and never re-read against the finding that +> replaced it. Corrected in place rather than deleted, because the failure is +> the point: **a summary row is a second place to be wrong, and it is the +> place a reader looks first.** Same shape as the corpus row above it, where +> `27` and `33` were both in the repo for one quantity. + +--- + +## `ogar-loco`'s emancipation — the boring floor is the MOAT, not the burden + +Operator, 2026-09-16: *"ogar-loco has the burden of being boring scratch / +blockly-rs but needs to emancipate."* + +Read rather than grepped, and the architecture is **already emancipated**; what +has not moved is the crate's IDENTITY. Its own `lib.rs` opens by arguing the +point: + +> *"`ogar-loco` — the **low-code program surface**: the vocabulary-agnostic call +> ABI that every block/template/flow frontend shares … The block-editor arc +> (the `blockly-rs` consumers) **proved a storage shape**; the operator +> direction that created this crate **generalizes it**: elixir-shaped templates +> are 'just a rails-shaped semantic over classid index, 256:256 — not much +> different than blockly, just different vocabulary — a reusable surface for +> any other purposes.' Power-Automate-style flows are the third consumer in +> line."* + +So Blockly is **consumer #1 of three named**, not the crate's purpose. The +burden is that it was born there and is still read as its storage crate. + +### The seam that does the emancipating, and it is enforced + +`vocabulary.rs` — *"One call-ABI, sibling vocabularies selected by classid"* — +splits at `DOMAIN_FLOOR`: + +| range | owner | rule | +|---|---|---| +| **below** `DOMAIN_FLOOR` | the **shared computational core** | arities live ONCE, *"so `IF` cannot quietly mean two things in two domains, and no sibling can drift on `ADD`'s arity"* | +| **at/above** the floor | the **vocabulary** | a `Vocabulary` impl answers for exactly that range via `domain_*` hooks | +| a core byte the core does not cover | **nobody** | *"refused everywhere — a vocabulary does not get to guess for it. Coverage grows in the core, once, for everyone."* | + +`conformance::check` is the mechanical gate, and its stated posture is exactly +right for a shared floor: *"the JVM-verifier / Wasm-validator posture: validate +before trusting, refuse loudly."* + +The two-quantity split is the other sign this is not a toy: `stack_arity` +(operands evaluated before the call, on the stack) vs `body_refs` (function +indices in the call's VALUE bytes). `forever` proves they are independent — +zero operands, one body — and *"a single conflated number cannot express it."* + +### So what "emancipate" actually means + +**Not "become less boring."** The boring floor is load-bearing: `ADD`, `IF`, +`repeat`, `forever` are Scratch-shaped *on purpose*, because a shared core that +every sibling vocabulary agrees on is what stops N dialects. That is the moat. + +**Emancipation is upward, above the floor — and it has already started.** +`lance-graph-ogar::recipe_vocab` is the first act: *"the 34 NARS recipes as +`ogar-loco` ops above `DOMAIN_FLOOR`, with the kanban census as the awareness +surface."* NARS tactics expressed in the same `(function : value)` two-byte call +as `repeat`. Nothing about the ABI had to change to carry them — which is the +claim "vocabulary-agnostic" was making, now cashed. + +### This is the JAVA RULING one tier down — same shape, same reasoning + +| | `sql()` (T3, Java) | `ogar-loco` (the program surface) | +|---|---|---| +| the surface | ordinary SQL a developer already knows | ordinary blocks an author already knows | +| why boring | *"novel API is the enemy, not slow API"* — every unit of novelty is lock-in-by-learning-curve | a drifting core is N dialects; the floor is what makes siblings composable | +| where power lives | lance-graph, reached by classid → ClassView | the vocabulary above `DOMAIN_FLOOR`, reached by classid → `Vocabulary` | +| what the caller learns | nothing | nothing | +| the join key | **the classid** | **the classid** | + +Both surfaces are deliberately dumb, both resolve meaning through the classid, +and in both the temptation is to make the SURFACE cleverer. **On the Java side +that temptation is already ruled out in writing; the same ruling should be read +as covering loco.** A loco emancipation that grew new core opcodes, or let a +vocabulary redefine a shared-core byte, would be `Mask.minus()` in block +clothing — power leaking into the front instead of arriving through the address. + +**Consequence for G-F:** the planner's missing `HotPlug` is not merely a wiring +chore, it is how the kanban vocabulary gets to exist above the floor without +anyone importing anyone. The cascade the operator named — +*"plug and play mints the classid; the classid mints ogar-vocab; which triggers +ogar-loco vocabulary"* — IS the emancipation mechanism, stated as a pipeline. +Every consumer that hot-plugs adds a sibling vocabulary and takes nothing from +the floor. + +--- + +## ⊘ THIRD CORRECTION — the progress loop does NOT wait on `deinterlace` + +Operator, 2026-09-16: *"batchwrite fire and forget write + try progress kanban."* + +Read `batch_writer.rs` properly (not grepped) and both halves are already in its +module doc, in those words: + +> *"The sink drains EAGERLY (ASAP on cast, background), and the write masks the +> thinking and vice versa: the thinker reports (casts) and moves on — **'melden +> macht frei'** — it is NEVER refused."* + +And the progress half is named end to end: `cycle_driver::collect_casts` drains +the payloads, seals the FIRST move per owner as `SweepSlot::paired_move`, and +`persist_sink::recover_and_apply` applies it via +**`MailboxSoaOwner::try_advance_phase`** — *"consulting no scheduler at any +point."* + +**So G-C2 as I wrote it — "a write nothing reads back is not yet a loop" — is +wrong.** The loop closes on *fire-and-forget cast + try-advance*, not on a +read-back. `deinterlace` belongs to a DIFFERENT arm: the durable OBSERVATION +path (temporal queries, pinned-reference recovery). Conflating the two made an +observation gap look like a liveness blocker. Corrected: the loop's liveness +does not depend on it. + +### The kanban IS the Rubicon DAG — one mechanism, not two + +`try_advance_phase` (in `contract/soa_view.rs`) returns +**`Result`** and its whole body is +`from.can_transition_to(to)`. The kanban columns ARE the Heckhausen phases and +the transition DAG is the Rubicon crossing. That is why *"kanban rubikon and +revision.rs wrapping it"* is one chain rather than three subsystems. + +`revision.rs`'s binding to it is already stated AND tested in +`contract/kanban.rs:560`: + +> *"Whatever `revise` proposes must be an edge `try_advance_phase` accepts — **it +> completes the Rubicon DAG, it does not route around it.** And a column with no +> `Plan` successor must stay silent."* +> — test `revise_only_ever_proposes_a_legal_edge_and_is_silent_elsewhere` + +So revision is not bolted on: the contract already forbids it from inventing an +edge, and a test enforces both the legality and the silence half. + +### Measured wiring of the progress chain + +| piece | production callers | +|---|---| +| `BatchWriter::cast` | **3** — `mailbox_soa:764` (owner), `owner_adapter:100` (on-behalf), `cycle_driver:407` (P4a drain) | +| `MailboxSoaOwner::try_advance_phase` | **1** — `mailbox_soa.rs:1281` (`.try_advance_phase(mv.to)`); every other hit is a doc comment | +| `persist_sink::recover_and_apply` | **0** — its only two call sites (`:1128`, `:1146`) are inside `mod tests` at `:732` | + +**So the chain `batch_writer`'s doc describes is wired at both ends and hollow +in the middle**: casts land, the owner can advance, and the glue that turns +sealed slots into applied moves has no production caller. That is the honest +G-C2 — narrower than "no loop", and it is a connect, not a build. + +> **Caller consequence the doc flags as documented nowhere else**, worth +> carrying into any W3 work: *"at most ONE move per owner per cycle is sealed. +> Casting three transitions for one mailbox performs one and defers two — and +> because the deferred ones do eventually apply, **code assuming otherwise is +> wrong in a way nothing reports.**"* + +## The planner is the hot-plug home — and `sql()` is just a classid + +Operator: *"lance-graph-planner is the correct to get a ogar-loco and ogar-vocab +> hotplug.rs store for the vocabulary, which then ogar-loco is empowered to feed +into kanban rubikon and revision.rs wrapping it"* … *"eg ogar-loco could get the +classid for `sql()`"* … *"which then gets the whole duckdb vocabulary"* … +*"that would be the easiest and cleanest move."* + +This resolves G-D, and it dissolves it rather than solving it: + +``` +DuckDB C++ + ─(ruff_cpp_spo::extract_tree)──────► ModelGraph + ─(ruff_spo_address::mint)──────────► classids (part_of:is_a, 16 B facet) + ─(planner's HotPlug const + activate)─► ogar-vocab rows (Class + ActionDef) + ────────────────────────────────────► ogar-loco VOCABULARY above DOMAIN_FLOOR + ├─ sql() is ONE classid in it + └─ the whole DuckDB vocabulary beside it + ─(kanban = Rubicon DAG, try_advance_phase)─► executed + ─(revision.rs)─────────────────────────────► postactional phase wraps it +``` + +**`sql()` stops being a bespoke Java surface and becomes a vocabulary entry.** +That is why it is the cleanest move: there is nothing to design. The Java glove +calls a classid; loco defines what that classid means; the classid is the join — +the same join key the hot-plug socket already uses on both sides. It also keeps +the Java ruling intact for free: the surface stays boring because it is not a +surface at all, just an address. + +**And it is what the DuckDB harvest was FOR.** Today's reproducible header +harvest (123 methods / 1620 events, provenance-stamped) is not documentation of +a competitor — it is **vocabulary source**. W1's structural arm +(`extract_tree`) produces the class tree that becomes the vocabulary above the +floor. That reframes G-A from "a survey we owe" to "the first step of the +build". + +### The remaining DataFusion leg + +Operator: *"planner historically had datafusion stuff that we need to replace +with masked ops."* This is the standing ruling applied to the planner +specifically — `CLAUDE.md` already records *"every planning is in migration to +`ogar-loco` and `ogar-r2il`, especially datafusion is out of the picture, what +exists gets a grace period, nothing new will migrate to it"* +(`E-PLANNING-MIGRATES-TO-LOCO-R2IL-DATAFUSION-IS-GRACE-PERIOD-1`). + +The replacement target is not in doubt — `lance-graph-quack` already proves the +shape (every operator lowers to a `Program` executed by the ONE mask-risc +evaluator) and `plan_lower == quack::lower` is pinned by a differential. So the +planner's DataFusion surface has both a ruling and a worked example to migrate +onto; what it lacks is the migration itself. + +## Wave order, revised by everything above + +1. **W1 — `extract_tree` on DuckDB.** Now the first step of the vocabulary + build, not a survey. Same falsifier. +2. **W-HP — the planner's `HotPlug` const + `activate`.** Smallest change with + the largest unlock: it is G-F, it is the vocabulary store, and it is what + lets `sql()` and the DuckDB vocabulary exist above the floor. +3. **W3' — connect `recover_and_apply`** (not "build a write"). Both ends + exist; the glue is test-only. +4. **W-DF — planner DataFusion → masked ops**, onto quack's proven shape. +5. **W4 — the real DuckDB differential** (G-E), still independent and still the + only thing that makes "parity" true. + +`deinterlace` (the observation arm) drops out of the critical path entirely — +it is what `revision.rs` will eventually need to EVALUATE an outcome, but it +gates neither the write nor the advance. + +## The join leg — replace the inherited SQL joins with a DuckDB version fed from loco + +Operator: *"and then to replace the sql joins inherited from upstream +lance-graph with a duckdb version fed from ogar-loco."* + +This closes the arc the DuckDB harvest opened, and the assessment is already +written. `duckdb-to-v3-translation-matrix-v1.md` row **A3** reads +`JoinHashTable`'s probe path (`join_hashtable.cpp:248-296`, +`ht_entry.hpp:34-37/49-51`) and rules it **"V3 BETTER for the addressed case; +NEEDS FALSIFIER otherwise"**, because: + +> `ht_entry_t` packs **16 bits of salt + 48 bits of pointer** in one u64 and +> prefilters on the salt to avoid a full key compare. That is a *probabilistic* +> prefix derived from a hash. **The V3 classid prefix is the real thing**: +> matching it is not a filter that may be wrong, it is a **contiguous row +> range** (R5, D-GTM-0m: **49–99 ns vs 22.4 µs**). Also `IsOccupied() == (value +> != 0)` — DuckDB independently arrived at zero-is-absence, the same convention +> as the zero-fallback ladder. + +And it states its own limit, which is the falsifier this leg inherits: + +> *"The comparison only holds when **both sides are minted into the same address +> space**. A join between a minted V3 population and an external, unminted key +> set has no shared prefix and falls back to A2's hash question."* +> Plus: *"`join_hashtable.cpp` is 6,986 harvested events, by far the largest TU +> read — this row is a **reading of two functions, not of the join**; spilling, +> radix partitioning, and chain building are not assessed."* + +**Why "fed from ogar-loco" is the right shape rather than a port.** A join is a +`(function : value)` call like any other: the vocabulary above `DOMAIN_FLOOR` +names it, the classid selects it, and it lowers to a `Program` the one mask-risc +evaluator runs — exactly as quack already does for scan/filter/project/group. +So this is not "reimplement DuckDB's hash join in Rust"; it is **mint the join +into the vocabulary and let the existing lowering carry it**. The minted-address +case collapses to a prefix range (a mask), and only the unminted case needs the +hash machinery at all. + +It also lands on an already-queued deliverable: **task #10 / PR5** is the +join-elision experiment — `src_mask → hop → dst_mask` versus the DataFusion +node-edge-node join, with set semantics explicit and *"no replacement claim for +bag or cross-address-space joins."* That caveat and A3's are the same caveat, +arrived at independently, and together they bound the leg honestly: **the +replacement claim is for the minted, set-semantics case; bag semantics and +cross-address-space joins stay with the inherited path until measured.** + +### Revised final wave order + +| wave | what | why here | +|---|---|---| +| **W1** | `extract_tree` on DuckDB | first step of the vocabulary build, not a survey | +| **W-HP** | the planner's `HotPlug` const + `activate` | smallest change, largest unlock: G-F, the vocabulary store, and what lets `sql()` exist above the floor | +| **W3'** | connect `recover_and_apply` | both ends built; the glue is test-only | +| **W-DF** | planner DataFusion → masked ops | standing ruling + quack's proven shape to migrate onto | +| **W-JOIN** | the join leg, fed from loco | gated on W-HP (needs the vocabulary) and on W1 (needs the harvest); PR5 is its falsifier | +| **W4** | the real DuckDB differential (G-E) | independent; the only thing that makes "parity" true | + +W-JOIN is deliberately last of the build waves: it is the one that needs BOTH +the vocabulary (W-HP) and the harvest (W1) to exist, and its honest scope is +set by two independently-derived caveats rather than by ambition. + +--- + +## ⊘ FOURTH CORRECTION — there is no DataFusion in `lance-graph-planner` to remove + +Operator: *"the immediate endgame is to replace all the DataFusion shit in +lance-graph-planner to revive its status as the center of gravity and wire it +into `mailbox_soa.rs` <> kanban rubikon."* + +Measured before acting, and the target is not where it looks: + +| | | +|---|---| +| planner DataFusion **dependency** | **none** — no `[dependencies]` entry at all | +| planner DataFusion **code** | **none** | +| planner DataFusion **mentions** | **10, every one a DOC COMMENT** crediting a pattern: *"Strategy #4: RuleOptimizer — Composable rule-based optimization (from DataFusion)"*, *"From DataFusion's ExtensionPlanner + UserDefinedLogicalNode pattern"*, *"inspired by DataFusion's OptimizerRule trait"*, *"Analogous to DataFusion's Repartition but for fingerprint vectors"* — in 10,028 LOC | +| the `datafusion = []` line | a **FEATURE**, under `[features]` beside `jit = []` — **inert**: nothing `cfg`-gated on it, nothing in the workspace enabling it | + +**The real DataFusion is 8,044 LOC in `crates/lance-graph/src/datafusion_planner/`** +— `scan_ops`, `join_ops`, `predicate_pushdown`, `vector_ops`, `expression`, +`cost_estimation`, `udf`, `analysis`, `builder/`. In the CORE crate. The crates +carrying a real dep are `lance-graph` (4 entries), `lance-graph-callcenter` (3), +`holograph` (2), `lance-graph-catalog` (1), `lance-graph-python` (1). **Not the +planner.** + +> My own census script reported "planner: 1 entry" — its regex matched the +> FEATURE line. The trap is documented in this repo's own pin-rule comment +> (*"a FEATURE NAME, not a version pin. It is not a counter-example"*) and I +> walked into it anyway, one turn after adding the rule that forbids it. + +**Done now (small, gated):** the inert `datafusion = []` feature is REMOVED with +the reason inline. Its only live effect was making every +`grep datafusion crates/*/Cargo.toml` misreport this crate as a consumer. +`cargo test -p lance-graph-planner`: **435 passed, 0 failed, 2 ignored** (+4). + +### So "revive its status as the center of gravity" is a MIGRATION, not a deletion + +Nothing leaves the planner; capability **arrives**. The work is to move what +`lance-graph::datafusion_planner` does INTO the planner as masked-op lowerings — +and `lance-graph-quack` is the worked example, with `plan_lower == quack::lower` +already pinned by a differential. + +**And the planner is already structurally central to the write path**, which is +the strongest argument that "center of gravity" is a restoration rather than a +promotion: `cognitive-shader-driver` depends on `lance-graph-planner` (its +`mailbox_soa.rs:760` takes `&mut lance_graph_planner::batch_writer::BatchWriter

`), +and `owner_adapter.rs` / `batch_writer.rs` / `persist_sink.rs` all live in the +planner. The kanban write staging is the planner's already; what is missing is +the QUERY side rejoining it. + +## The intake vocabulary — the Cypher parser, and what it must stop feeding + +Operator: *"there is a parser upstream in lance-graph that is supposed to handle +table rows and column joins akin to cypher"* … *"if we could reroute that +vocabulary to replace semiring json to masked intake <> masked ops."* + +The parser is `crates/lance-graph/src/parser.rs` — **1,932 LOC of nom +combinators** over `ast.rs` (544 LOC), *"parsing … Cypher queries … focused on +graph pattern matching and property access."* That is the intake vocabulary: a +table row is a node, a column join is a pattern edge. + +**What it must stop feeding is dated substrate.** `graph/semiring_map.rs` maps +GraphBLAS semirings onto *"7 HDR semirings over **16Kbit BitVec matrices**"* — +and 16 Kbit Hamming is exactly what the recent PRs found deprecated, alongside +the singleton BindSpace (`E-MARKOV-TEMPORAL-STREAM-1`; `engine_bridge.rs:370` +calls that plane *"the deprecated one"*). + +So the reroute is a THREE-way convergence, not a rename: + +``` + parser.rs (Cypher AST) ← the intake vocabulary, keep + │ + ├─ TODAY ─► semiring_map ─► HDR semirings over 16Kbit BitVec ⊘ deprecated + │ + └─ TARGET ─► masked INTAKE ─► Program ─► the ONE mask-risc evaluator + (the quack shape, already proven) +``` + +The parser stays; the semiring/16Kbit leg is what the masked path replaces. That +also re-uses W-DF's own justification rather than opening a second argument — +one lowering, one evaluator, and the differential already pins them equal. + +### W-DF, restated concretely + +1. Delete nothing in the planner (there is nothing to delete) — **✓ done** for + the one inert artifact. +2. Lower the Cypher AST to `Program` via the quack-proven path, so intake is + masked from the parser onward. +3. Retire the `semiring_map` → 16 Kbit BitVec leg as those lowerings land — it + is deprecated substrate, not a design choice to preserve. +4. Migrate `datafusion_planner`'s capability (scan → filter → project → join) + crate-by-crate into planner lowerings; `join_ops` is W-JOIN and lands last + for the reasons already stated. + +--- + +## The upstream inventory, and where the seam actually is + +Operator: *"everything what upstream has is here — +`github.com/lance-format/lance-graph/tree/main/crates/lance-graph/src`."* +Censused against our fork: + +| upstream file | LOC | role | +|---|---|---| +| **`datafusion_planner/`** | **8,044** | the DataFusion backend — 44 % of the whole surface | +| `query.rs` | 2,171 | entry | +| `parser.rs` | 1,932 | nom Cypher | +| `semantic.rs` | 1,719 | semantic analysis | +| `logical_plan.rs` | 1,417 | the graph logical plan | +| `lance_vector_search.rs` | 560 | Lance ANN path | +| `ast.rs` | 544 | the AST | +| `config.rs` / `case_insensitive.rs` / `sql_query.rs` | 465 / 377 / 356 | | +| `parameter_substitution.rs` / `lance_native_planner.rs` | 280 / 121 | | +| `error.rs` / `spark_dialect.rs` / `lib.rs` / `table_readers.rs` / `sql_catalog.rs` | 111 / 107 / 83 / 69 / 47 | | + +≈ **18,400 LOC inherited**, and two divergences worth naming: upstream's +`csr_index.rs` (its #160 "CSR adjacency index for native graph traversal") is +**ABSENT here** — this fork went its own way with the planner's Kuzu-style +`adjacency/` — and our three additions are `soa_config.rs`, `reasoning.rs`, +`dev_s3_env.rs`. + +### `logical_plan.rs` is the seam, stated by the backend itself + +`datafusion_planner/mod.rs` opens: + +> *"**Translates graph logical plans into DataFusion logical plans** … Phase 2: +> Plan Building — **Nodes → Table scans, Relationships → Linking tables, +> Traversals → Joins.** Variable-length paths (`*1..3`) use unrolling: generate +> fixed-length plans + UNION."* + +So the boundary is unambiguous, and the migration does not touch the vocabulary: + +``` +parser.rs → ast.rs → semantic.rs → logical_plan.rs 5,612 LOC — the VOCABULARY, KEEP + │ + ── THE SEAM ── + │ + TODAY datafusion_planner/ 8,044 LOC TARGET Program → the ONE + "Traversals → Joins" mask-risc evaluator + (+ UNION-unrolled var-length paths) traversal = src_mask + → hop → dst_mask +``` + +**"Traversals → Joins" IS the inherited SQL join the operator wants replaced**, +and its masked counterpart is already a queued deliverable: task #10 / PR5 is +exactly `src_mask → hop → dst_mask` versus the DataFusion node-edge-node join. +The two halves were specified independently and meet here. + +Variable-length paths are the interesting sub-case rather than an obstacle: +upstream UNROLLS `*1..3` into fixed-length plans plus a UNION, which in mask +terms is N hops OR'd together — a `MaskOp` composition, not a plan rewrite. + +### What W-DF actually is, now that the seam is located + +**Re-point `logical_plan.rs` at a `Program`, not at DataFusion.** Everything +above the seam stays; the 8,044-LOC backend is what the masked path replaces, +operator by operator, with quack as the worked example and +`plan_lower == quack::lower` already pinned by a differential. + +That also answers the *"semiring json → masked intake"* reroute in the same +move: the graph-side leg (`semiring_map` → HDR semirings over 16 Kbit BitVec, +deprecated substrate) and the SQL-side leg (`datafusion_planner`) are two +backends under one vocabulary. **One seam, two legs retired, one replacement.** + +**Migration order within W-DF**, cheapest and most-proven first, matching the +operators quack already ships: + +1. `scan_ops` → the plane leaf + survivor-skip gate (quack ships this) +2. `predicate_pushdown` → gating is the lowering (`under`), already the default +3. `expression` → `Pred` (a filter IS a predicate; no expression interpreter) +4. projection / aggregate → quack's Keep/Blend + two-phase GROUP BY +5. `join_ops` → **W-JOIN**, last, bounded by the two independently-derived + caveats already recorded +6. `vector_ops` / `lance_vector_search` → NOT in scope: the Lance ANN path is + not a DataFusion artifact and has no masked equivalent claimed. + +--- + +## ⚠ THE BLOCKER FOR "planner as centre of gravity" — it sits BELOW core, not above + +Measured before writing any lowering: + +| edge | state | +|---|---| +| `lance-graph` core → `lance-graph-planner` | **EXISTS** — optional dep (`Cargo.toml:72`, behind the `planner` feature) **and** a dev-dep (`:155`) | +| `lance-graph-planner` → `lance-graph` core | **NONE** — and adding it would be a **cycle** | +| planner → `lance-graph-mask-risc` | **NONE** (only `lance-graph-quack` depends on mask-risc) | + +So the planner **cannot** hold a `logical_plan → Program` lowering as things +stand: the logical plan lives in core, and reaching it from the planner is a +cycle. Defining a planner-local copy would be the parallel-IR anti-pattern this +whole arc exists to avoid. + +Two further facts make the position honest rather than merely awkward: the +planner's own `CypherParse`/`GqlParse`/`GremlinParse`/`SparqlParse` strategies +are **regex stubs** — this repo's own open list says *"Wire planner strategies +to lance-graph core (actual parser, not regex)"* — and the real 1,932-LOC nom +parser is in core. The planner is genuinely downstream of the vocabulary today. + +### Three routes, and the repo has already solved this exact shape once + +| | route | cost | does it make the planner central? | +|---|---|---|---| +| **A** | lowering lives in **core**, beside `logical_plan.rs`; core gains `mask-risc` | smallest — no cycle, no new crate, no new IR | **No.** Planner stays centre for STRATEGY + the write path only | +| **B** | move the plan/AST vocabulary **down into `lance-graph-contract`** (zero-dep), planner then owns the lowering | largest — touches the contract's surface | **Yes**, and durably | +| **C** | a **bridge crate** depending on both | one more crate | Yes, by delegation | + +**C is established precedent here.** `lance-graph-ogar` exists for precisely +this situation and says so: *"`ogar_loco` is zero-dep by design and +`lance_graph_contract` is zero-dep by charter. **Neither may import the other** … +A vocabulary needs both, so it lives in a consumer that already depends on +both."* The same reasoning transfers verbatim. + +**B is what the operator's words actually ask for** — *"revive its status as the +centre of gravity"* — because A leaves the query side in core permanently, and C +puts the centre in a fourth crate rather than in the planner. B is also what the +zero-dep contract is FOR: it already hosts `kanban`, `soa_view`, `revision`, +`hotplug` — the shared vocabulary every tier reads. A plan vocabulary is the +same kind of thing. + +**This is a genuine fork and it is the operator's to call**, because A and B +produce materially different repos and neither is reversible cheaply. What is +NOT in doubt, whichever wins: + +- the seam is `logical_plan.rs` (the backend says so itself); +- the vocabulary above it (5,612 LOC) is kept; +- the 8,044-LOC DataFusion backend and the `semiring_map`/16 Kbit leg are the + two legs retired; +- quack is the worked shape and the migration order is scan → pushdown → + expression → projection/aggregate → join. + +**Recorded, not guessed.** The one thing already done is the inert +`datafusion = []` feature's removal (planner tests green, 435 passed) — real, +small, and independent of which route is chosen. + +--- + +## §14 — The mindset check, and the correction I owe first + +Operator, three messages in one turn: *"make sure that you keep kanban soa +owned / the plans are the glove so that consumers dont have to care"*, *"check +if my mindset has it right or if you see a better way"*, and *"the consumers +should not care that the SoA mailboxes are smart, they still should have a +surface to be reached even if they were AGI and duckdb combined."* + +### §14.0 — The correction: §13's A/B/C fork was already ruled, three months ago + +`fe726fa` (§13) recorded an open placement fork — A (lowering in core) / B +(plan vocabulary into the zero-dep contract) / C (bridge crate) — and left it +for the operator on the grounds that *"the routes produce materially different +repos and neither reverses cheaply."* + +**That fork does not exist.** `.claude/plans/cypher-mask-lowering-v1.md` §5.2 +ruled it, in three parts, with a register I did not have: + +1. **Boolean combination CONSUMES `ogar_loco::TERNLOG = 0x86`** (`ogar-loco/src/lib.rs:607`, + arity 3, *"the call's ONE VALUE BYTE is the 8-bit truth table … the purest + `(function : value)` in the ABI"*), which has **zero consumers**. So the + Boolean half is a NET REDUCTION in unconsumed surface. **Nothing is minted.** +2. **`Pred`, the hop and the terminals are a LOWERING TARGET ONLY.** The + mechanical test, borrowed from `tesseract-rs/CLAUDE.md`'s *"types exist only + BEFORE the bake"*: **does a BYTE of this survive the query that produced it?** + No → it must never get a mint. A `Program` is built from one + `LogicalOperator`, executed once, and dropped. +3. **The trigger that would flip (2), written down before anyone hits it:** the + moment a mask program becomes a **stored artifact**, the ops must be minted as + a domain vocabulary **above `DOMAIN_FLOOR`** — and where is settled by + precedent, not choice: `lance-graph-ogar`, which git-deps `ogar-loco` and + path-deps `lance-graph-contract`, because *"neither may import the other … + a vocabulary needs both, so it lives in a consumer that already depends on + both"* (`recipe_vocab.rs:8-16`; the 34 NARS recipes already occupy + `0x90..=0xB1` there). + +So the answer to "where does the vocabulary live" is **nowhere — it is not a +vocabulary**, and the crate question I raised was the wrong question. This is +the `CLAUDE.md` § *grep FINDS, reading DECIDES* rule one level up: I measured the +dependency graph correctly and inferred a fork, without reading the plan that +had already closed it. The prior-art rule ("grep the existing ~100 files before +writing a new one") exists for exactly this. + +### §14.1 — The mindset is right, and three things already enforce it + +**"the plans are the glove so that consumers dont have to care."** Right, and it +is not aspiration — it is the shape the code already has AND has a *mechanical* +enforcement: + +| the claim | what enforces it | where | +|---|---|---| +| a plan describes, it never computes | `lance-graph-quack` has ONE dep (mask-risc) and its manifest says *"a `match` here that computed anything would be the duplicate evaluator the whole arc exists to avoid"* | `lance-graph-quack/Cargo.toml:9-12` | +| the executor borrows, the caller owns | law A1 — *"the plan describes, the executor borrows, ndarray computes, the caller owns memory"* | `mask-risc/src/lib.rs` A1 | +| a consumer cannot be coupled to it | §5.2's byte test: no byte of a `Program` is persisted, transmitted, or read by a reader that did not build it | `cypher-mask-lowering-v1.md` §5.2 Part 2 | + +The third row is the load-bearing one. *"Consumers don't have to care"* is +usually a promise about discipline; here it is a property: **you cannot couple +to something that does not persist.** + +**"keep kanban soa owned."** Already true, and fenced three ways — two by +convention and one structurally: + +1. `try_advance_phase` is a method on `MailboxSoaOwner`, in the **zero-dep + contract** (`lance-graph-contract/src/soa_view.rs:311`), returning + `Result` — the lifecycle DAG is the + owner's, not a caller's. +2. `lance-graph-supervisor/tests/probe_ignition.rs:1234-1241` asserts the + probe's own source contains **no** `.try_advance_phase(` and no + `.advance_phase(` — with a paired can-stay-silent assertion so the scan is + proven live rather than vacuously green. +3. **And the glove structurally cannot reach the ownership.** + `mask-risc::Program` is `{ ops: Vec, terminal: Terminal, + scratch_slots: u32 }`; `MaskOp` has 8 variants, `Terminal` has 8, `Operand` + is slot / plane / lane. **There is no spelling for an owner, a phase, or a + move.** A consumer holding a plan cannot express a kanban transition even if + it wanted to — the vocabulary does not contain one. + +**"a surface to be reached even if they were AGI and duckdb combined."** This is +the sharpest of the three, and it is what makes §5.2 Part 3's trigger +load-bearing rather than pedantic. A plan that does not persist lets the +substrate change arbitrarily underneath it. The moment one persists, a consumer +is coupled to a byte layout, and "AGI or duckdb" stops being free. Part 3 is +therefore not bureaucracy — it is the exact condition under which the operator's +sentence stops being true, written down in advance. + +### §14.2 — One correction to the instruction, and one better way + +**Correction — the DataFusion is not in the planner.** Measured: +`lance-graph-planner` contained exactly one `datafusion` token, `datafusion = []` +under `[features]` — a feature NAME with no body and no `cfg` reader. Removed in +`3cafd13`; 435 tests still pass. The 8,044 LOC of DataFusion lives in +`lance-graph` **core** (`datafusion_planner/`). So *"replace all the DataFusion +shit in lance-graph-planner"* is already discharged and it bought nothing, +because there was nothing there to remove. + +**And "revive the planner as the center of gravity" cannot be done as literally +stated**, because the arrow runs the other way: + +| edge | state | +|---|---| +| `lance-graph` core → `lance-graph-planner` | EXISTS (optional, `planner` feature, `Cargo.toml:72`) | +| planner → core | **NONE — would be a cycle** | + +**The better way: `mask-risc` is the convergence point, and neither side owns +the other.** `lance-graph-mask-risc` deps only `ndarray`; core deps `ndarray`; +planner deps `ndarray`. So **both can depend on mask-risc with no cycle**, and +neither has to import the other: + +```text +core: parser → AST → LogicalOperator ──mask_lower──┐ + ├──→ Program ──exec──→ ndarray::simd +planner: kanban / mailbox → what to ask ───lower──────┘ +``` + +That is not a new idea — it is the shape `p64` already plays between ndarray and +lance-graph (`CLAUDE.md`: *"p64 = convergence point (both repos meet, no circular +deps)"*). Reused, not invented. + +And it delivers the operator's stated GOAL without needing the planner to be +central in the dependency sense: + +- the glove is the **plan**, and the plan is stable because it does not persist; +- the planner keeps what it actually owns — kanban, mailbox, `batch_writer`, + `persist_sink`, `owner_adapter` — without importing a query pipeline; +- core keeps the parser it already has, and gains ONE new thing: §2's Phase 2.5. + +So: **"planner as center of gravity" is a MEANS; "the plan is the glove" is the +END.** The end is reachable; the means as literally stated is a cycle, and does +not need to be paid for. + +### §14.3 — What is actually next, and it is not code + +`cypher-mask-lowering-v1.md` §7.0 is a **STOP gate**: *"Nothing is built until +Wave 0 answers, with numbers."* And `mask_lower` exists nowhere in the tree — the +only hit is `mask-risc/src/lib.rs:20` naming it as an absence. So Wave 0 has not +run, and the boring correct move is to run it. §15 is W0-b. + +--- + +## §15 — W0-b RUN. The corpus census, measured — and CORRECTED after review + +`cypher-mask-lowering-v1.md` §7.0's second measurement, and half of its STOP +gate. Instrument: `crates/lance-graph/examples/w0b_corpus_census.rs` +(committed; run it, do not trust this table). + +**The corpus is every `.rs` file under the workspace's `crates/`, walked at run +time** — not a hand-listed set. Classification is §3/§4's, row by row, through +the REAL `parse_cypher_query` + `LogicalPlanner::plan`. + +``` +candidate literals extracted : 342 + rust files walked : 1451 + files carrying a query : 27 + did not parse : 17 + parsed but did not plan : 22 + CLASSIFIED : 303 + + Full (everything lowers) : 113 ( 37.3 %) + Split (mask prefix + DF) : 190 ( 62.7 %) + Grace (nothing lowers) : 0 ( 0.0 %) +``` + +**§7.0's STOP condition does not fire.** Its words were *"if the full-lowering +fraction is negligible, this plan's premise is wrong and Wave 1 does not +start."* 37.3 % full and **zero** pure-grace is not negligible. + +### §15.0 — ⊘ THE FIRST RUN OF THIS CENSUS WAS WRONG, AND CODEX CAUGHT IT + +The version that landed in this plan first reported **46.0 % over 50 classified +queries**, from three hand-listed files. Codex filed four P1s on lance-graph +#1240. All four were correct, and three of them moved the number: + +| finding | what it was | effect | +|---|---|---| +| **the corpus was a subset** | the census read `parser.rs`, `logical_plan.rs`, `semantic.rs`. A walk of the same tree with the same extractor finds queries in **33 files** — the whole of `crates/lance-graph/tests/`, `src/query.rs`, the planner's strategy modules, the Python bindings | 50 classified → **303** | +| **inline pattern properties were ignored** | `MATCH (p:Person {name: "Alice"})` files its predicate in `ScanByLabel.properties` / `Expand.properties` / `.target_properties`, and all four maps went unread. A string equality there is P-9 grace | new row, **53** hits | +| **T-12 never fired** | `DISTINCT n.p` is grace, `DISTINCT n` is free. The `Distinct` arm recursed and left it to `classify_value`, which accepts a bare `Property` unconditionally (T-4 is legitimately `[G]`) — so the distinction was never made and the histogram had no T-12 row at all | new rows, **37** hits | + +**The defect before the defect.** The three files were chosen after a `grep` +for `"…MATCH …"` reported zero hits in the DataFusion builder modules. That +grep cannot see a raw string or a literal spanning lines — the same blind spot +that made the extractor itself wrong (§15.4). **I used grep as a verdict on the +same day I added the rule to `CLAUDE.md` saying not to.** The fix is therefore +structural rather than a longer list: the corpus is now a WALK, so a file added +to the tree enters it with no edit, and the list cannot go stale the way the +last one did. + +### §15.1 — Why a query is not Full (counted, not guessed) + +| n | plan row | the question it asks that a mask cannot answer | +|---|---|---| +| 93 | §4.1 G-1 `ORDER BY` | in what ORDER | +| 53 | §4.2 P-9 inline string property | variable-width values | +| 45 | §4.2 P-9 non-integer literal | " | +| 29 | §4.1 T-12 `DISTINCT` over a value | how many TIMES | +| 28 | §4.1 G-2 `LIMIT` | which POSITION in an order | +| 28 | §4.5 `Join` | across which ADDRESS SPACES | +| 24 | §4.2 G-3 string predicate | variable-width values | +| 23 | §4.4 G-7 vector distance / similarity | how CLOSE | +| 10 | §4.1 G-2 `SKIP` | which POSITION | +| 6 | §4.3 G-5 `UNWIND` | what VALUE, as a new relation | +| 5 | §4.1 T-12 `count(DISTINCT …)` | how many TIMES | +| 3 | §4.1 T-12 `collect()` | " | +| 2 | §4.2 G-4 scalar function | variable-width values | + +Every reason lands in §4.6's table, which is the check that the classifier is +reading the plan rather than inventing a boundary. **Order and position are the +largest axis (131), strings and non-integer literals the second (124)** — +inverting the three-file census, where the two were tied at 17 each. A subset +misranks the boundary as well as mis-measuring it. + +### §15.2 — The finding the percentages do not contain + +**21 of the 22 plan-refusals return a BARE NODE VARIABLE** — measured, not read: +the example inspects the AST the planner refused and counts the returns whose +every item is `ValueExpression::Variable(_)`. (The three-file census said 9 of +10; the wider corpus strengthens it.) + +`RETURN ` is §3.5 **T-3**: *"the mask itself — `Terminal::Keep`. Not a row +list. The caller reads the plane."* It is the cheapest thing the mask path can +do and it is graded `[G]`. + +So the incumbent planner **refuses** the query the mask path answers with no +work at all, and because a refusal is excluded from the denominator, **37.3 % +understates the premise by exactly the shape that most favours it.** + +### §15.3 — Three things this number is not + +1. **Conditional on OQ-1.** Every Full query scans by LABEL, and §1.4 states the + `label → classid` binding is ABSENT (see §16 — it is not, but the wiring + hop is). The census counts the SHAPE as lowering; that is what keeps the + premise falsifiable, and it is not a claim the route exists. +2. **It measures COMMITTED TEST SOURCE.** These queries exist to exercise a + parser, a planner and a DataFusion backend, so the distribution is theirs, + not a production workload's. +3. **It says nothing about speed.** §7.0 is a correctness gate; no row above is + a performance claim. + +The 17 that do not parse are also honest signal rather than noise: they are +`LET … IN`, `UNION`, `LEFT MATCH`, and `RESONATE(fp, $q, 0.3)` — dialect the +parser does not implement, sitting in planner and cognitive tests as +aspirational syntax. They are excluded because there is no plan to classify, +and they are ENUMERATED so that is checkable. + +### §15.4 — The extractor was wrong once too, and that bug moved the headline 29 points + +Before the corpus was widened, the first run reported **15 of 20 (75.0 %)**. +`parser.rs:931-933` contains `char('"')` three times. A scanner that does not +know about char literals opens a string there, runs one quote out of phase for +the rest of the file, and emits raw Rust source as three "queries" while +swallowing real ones. Fixed: 26 candidates → 62, and the headline fell from +75.0 % to 46.0 % — before codex's finding took it to 37.3 % over 303. + +All three runs exited 0. What caught the extractor was **enumerating the +exclusion buckets instead of counting them** — a bucket labelled "3 did not +parse" is unfalsifiable, and printed, its first line read +`); // Verify the AST structure let ast = result.unwrap(); …`. + +**Three measurements, three numbers, one instrument.** The lesson is not that +the census was careless; it is that a measurement's SCOPE is part of the +measurement, and nothing in a green run reports its own scope. The walk now +prints how many files it read and which ones carried a query, so the next +reader can see the scope without reconstructing it. + +--- + +## §16 — W0-a / OQ-1 ANSWERED BY READING: the binding exists, unconsumed, and the gap is one config field + +§7.0's STOP condition is sharper on W0-a than on W0-b: *"If W0-a says there is +no `label → classid` route AND no cheap one can be minted, §3.1 is unbuildable +and the plan is re-scoped … or shelved."* §1.4 finding (3) states the route +*"does not exist"* and names `canonical_concept_id` as a resolver. + +Read rather than grepped, and the picture is one piece larger than §1.4 records. + +### §16.1 — The binding is already minted, already exported, and has zero consumers + +`lance-graph-contract/src/ogar_codebook.rs` carries **`LabelDTO`**, and its own +doc comment is the specification of exactly this route: + +> *"A curator-agnostic label binding: a consumer-local `label`, its OGAR codebook +> `id` (binary identity), and the portable `canonical` symbol. … Identity +> comparison uses `id`; AST/planner emission uses `canonical`; presentation uses +> `label`."* — with `id` documented as *"the OGAR codebook binary identity (the +> classid low u16)."* + +`LabelDTO::from_canonical(concept) -> Option` resolves through +`canonical_concept_id`; curator-shaped aliases (`"Issue"` → `"project_work_item"`) +normalize through OGAR `ogar_vocab::canonical_concept` first, which stays out of +the zero-dep contract by design. + +And the far end already takes exactly that type: +`mailbox_scan::match_nodes_by_class(view, class_id: u16)`. + +**Consumers of `LabelDTO` across the workspace: ZERO.** The only hit outside its +own module is its re-export at `lance-graph-contract/src/lib.rs:234`. That is the +same shape as `TERNLOG = 0x86` (§14.0 Part 1): a minted, exported, unconsumed +surface that the lowering would *consume* rather than duplicate. Two of this +plan's supposed gaps are the same kind of thing — **built ends that do not +meet** — which is the pattern §13 already recorded as the session's recurring +finding. + +### §16.2 — What is actually missing: a field, not a mechanism + +`GraphConfig`'s `NodeMapping` (`crates/lance-graph/src/config.rs:60-71`) is +`{ label, id_field, property_fields, filter_conditions }`. There is nowhere to +put a canonical concept or an id. So the missing hop is: + +```text +Cypher label "Person" + ? <- THE GAP: NodeMapping has no field for this + ↓ +canonical concept ──canonical_concept_id──▶ u16 ──▶ match_nodes_by_class / a class-equality mask + ↑ ↑ + LabelDTO.canonical LabelDTO.id (both already exist, both unconsumed) +``` + +**§7.0's STOP does not fire.** A cheap mint exists: one field on `NodeMapping` +carrying the canonical concept, wiring a binding that already ships. No new +codebook, no new vocabulary, no byte minted — §14.0 Part 2's test is untouched, +because none of this persists a lowering. + +### §16.3 — The honest caveat, and it changes how §15's 46 % should be read + +**The corpus's labels are not in the codebook.** Measured against the 123 entries +of `ogar_codebook::CODEBOOK`: + +| label | in codebook? | +|---|---| +| `Person` | **no** | +| `Company` | **no** | +| `Thing` | **no** | +| `Node` | no (`osm_node`, `mars_node_template`, `osm_way_node`, `osm_street_node` are different concepts) | + +The codebook carries real domain concepts — `project` `0x0101`, +`project_work_item` `0x0102`, `billing_party` `0x0204`, `osm_node` `0x0F01`. The +Cypher test corpus's labels are synthetic and were never minted, which is +unsurprising: they exist to exercise a parser. + +So §15's caveat 1 is not a formality. The 37.3 % measures the **shape** of the +corpus, and a production number would have to be measured over queries whose +labels are minted concepts. That is a different census, and it needs a real bake +— which is the rest of W0-a (OQ-2 mint order, OQ-3 column widths, OQ-6 +transpose lanes), still unrun. + +**What §16 does settle:** the one gate that could have shelved the plan does not. +The route is buildable, it is buildable cheaply, and building it consumes +existing surface instead of adding any. + +--- + +## §17 — Operator rulings, 2026-09-16 + +### §17.1 — TERNLOG sequencing: the alpha channel goes first, and NOT merely because it asked first + +I had framed this as a scheduling tie between two claimants on one opcode. +That was the wrong frame, and the operator's reason is structural: + +> *"spog alpha channel is important because it affects the underlying storage +> and table 'multitenant' access — meaning SPOG interactions writing to alpha +> split tunnel without changing ontologies itself as saccade focus of attention +> sparse write and meta awareness of simultaneous rung.* +> +> *before it was 10 rung not talking to each other despite `kanban_actor.rs`, +> or deprecated 'one at a time' — levels of thinking interact and require priors +> to be on the same level."* + +Three things follow, and none of them is about calendar order. + +**(a) The alpha channel is a STORAGE-tier change; a query lowering is not.** +It changes how a write lands and who can see it — multitenant table access. +A mask lowering reads. A reader must not define the semantics the writer will +have to honour, so the write side settles first or the read side is built +against a contract that has not been decided. + +**(b) The point of the split tunnel is that attention writes WITHOUT rewriting +the ontology.** A sparse, saccade-shaped write — focus lands, something is +recorded, the shared structure is untouched. That is what makes concurrent +attention safe, and it is a property of the channel, not of any consumer. + +**(c) The thing actually being bought is SIMULTANEOUS RUNGS.** The prior state +was ten rungs that did not talk to each other, and the deprecated alternative +was "one at a time". Levels of thinking interact, and interaction requires +priors to sit on the same level. So the alpha channel is what makes a rung's +prior legible to another rung at all — and "meta awareness of simultaneous +rung" is the capability, not a nice-to-have. + +**Consequence for the Cypher lowering:** it consumes `TERNLOG 0x86` AFTER the +alpha channel does, and it inherits whatever simultaneity contract that first +consumer establishes. §5.2's OQ-9 said "defer rather than race"; this says why +deferring is correct rather than merely polite. + +### §17.2 — `RevisionKind` lives beside `belief.rs`, and the wiring is the real work + +Operator: *"belief is historically correct but needs to be adjusted for proper +wiring."* + +So: the planner, beside `belief.rs` (option A in +`mask-algebra-revision-read-v1.md` §5 Q1), not the contract. The history is +right; what needs attention is the wiring, not the home. Recorded here; the +adjustment itself is that plan's D-MAR-2. + +### §17.3 — I withdraw the "is 46 % negligible?" question + +Operator: *"46% negligible how do i know what you are talking about"* — and +that is a fair hit, twice over. + +First, I asked for a ruling on a WORD from a plan the operator did not write +(§7.0's own "negligible"), without supplying what anyone would need to judge +it. Second, and worse, the number had already moved: codex's review took it +from 46.0 % over 50 queries to **37.3 % over 303** (§15.0). I put a stale +figure up for decision. + +**It was never a decision. It is a measurement, and the measurement answers +it:** zero queries out of 303 fail to lower at all. Every single one lowers +either fully or as a mask prefix with a DataFusion remainder. A premise that +covers some of every query in the corpus is not negligible, and no ruling is +required to say so. Wave 1's gate is open on the evidence. + +### §17.4 — The reporting defect this exposed, named so it stops + +Operator: *"i have no idea what you are talking about when you talk +incoherently which i call 'reverse grep' — throwing pattern matching that +doesn't make any context for me."* + +Correct, and it is a specific failure rather than a style complaint. I had been +reporting in symbol names and section numbers — `§5.2 Part 2`, `LabelDTO has +zero consumers`, `T-3`, `OQ-1` — which are ADDRESSES. An address is only +meaningful to a reader who already holds the map. Handing someone addresses +instead of meaning is the same defect as citing a line number instead of an +anchor, one layer up: it reads as precision and carries none. + +The rule for this plan and for session reporting: **say what a thing does and +why it matters in plain words first; the symbol, file and section go at the END +as receipts.** A decision request that cannot be understood without opening +three documents is not a decision request. + +--- + +## §18 — ⊘ OPERATOR REDIRECT: quack is the spine. Cypher is a cheap proof of concept. + +> *"cypher is just a cheap proof of concept — and an even better proof of +> concept is quack."* +> *"my point is quack is the spine you need to rebuild from."* + +This supersedes the direction of §14.2, §15 and §16. Not their measurements — +those stand — but what they were measuring TOWARD. + +### §18.1 — What I was about to do, and why it was wrong + +I had Wave 1 of `cypher-mask-lowering-v1.md` queued as the next build: a new +`mask_lower(&LogicalOperator) -> Program`, written from scratch, with its own +six falsifiers. + +**That is a third lowering onto the same floor.** `lance-graph-quack` already +turns a query into a `Program` and has since PR3 — 2 260 lines, 14 tests, and +a manifest that states the rule it lives by: *"this crate may build a +`Program` and must never evaluate one."* `lgj-abi`'s `plan_lower` is the +second, and it is pinned equal to quack's by a differential precisely so the +two cannot drift. Adding a third would have been the "second vocabulary" +failure both of those exist to prevent — and I would have been building it +while writing, elsewhere in this same document, that the recurring finding is +*two built ends that do not meet*. + +### §18.2 — What the spine actually is today + +`quack::Query` is two fields: + +```rust +pub struct Query { + pub filter: Filter, // comparisons, AND/OR/NOT, IN, prefix, resident planes + pub agg: Agg, // Count · Any · All · SumI32 · MinI32 · MaxI32 · Rows · BlendI32 +} +``` + +Filter a population, reduce over the survivors. Every operator lowers to a +`MaskOp`; the validity bitmap is a resident plane rather than a second NULL +representation; a group is a mask rather than a hash table. That is DuckDB's +shape with the row iterator and the selection vector deliberately absent. + +**The spine's one missing leg is the HOP.** There is no `src_mask → edge lane → +dst_mask` in quack, and none in the IR beneath it — `mask-risc`'s own module +doc names `hop` as absent and assigns it to PR5. Without it the spine answers +"which rows of this table", never "which rows does this row reach". + +### §18.3 — The order this implies, replacing the Cypher wave plan + +1. **The hop lands in the spine** — `Program` gains it, quack gains a `Filter` + or operator spelling for it, both against the shipped `lgj_hop` shape, whose + selection algebra (`ternlog(class, src, struct)` then scatter) and + whose three rejected predecessors are already written down. This is the + existing PR5 / task #10, and its gate ("only after PR1-4 green") lifted + today when those four merged. +2. **Front-ends lower INTO quack, never past it.** Cypher's `LogicalOperator` + becomes one such front-end. So does `sql()`. So does whatever OGAR's loco + vocabulary addresses. One lowering to the floor, N front-ends above it. +3. **The DataFusion residue shrinks by subtraction, not by replacement.** A + construct leaves the residue when the spine grows a spelling for it — which + is a change to quack, in one place, that every front-end inherits. + +### §18.4 — What the W0-b census is still worth, re-targeted + +§15's measurement does not go stale; its TARGET changes. It asked *"how much +Cypher could a new mask lowering express?"* The question is now *"how much +Cypher can the SPINE express?"* — and the answer is read off the same +histogram, because the grace rows are properties of masks, not of any +particular lowering: + +- **The 131 order-and-position hits** (`ORDER BY`, `LIMIT`, `SKIP`, `DISTINCT` + over values, `collect`) are outside the spine by construction. A mask + answers *which rows*, never *in what order* or *how many times*. +- **The 124 string-and-float hits** are outside it until the spine carries a + variable-width lane, which is its own decision and not a lowering's. +- **The 28 `Join` hits are the hop**, i.e. exactly §18.3 step 1. +- **The 23 vector-distance hits** are the different-mechanism boundary (§4.4). + +So the census now reads as a work order on the SPINE rather than a feasibility +estimate for a lowering, which is a more useful thing than it was. + +### §18.5 — What this does NOT change + +`cypher-mask-lowering-v1.md` §5.2's placement ruling stands unaltered, and is +in fact reinforced: `Pred`, the hop and the terminals are a lowering target +that must never be minted, because no byte of them survives the query. A spine +does not change that — it makes it apply in ONE place instead of three. + +§17.1's ordering also stands: the alpha channel is storage-tier and settles +before the read side consumes `TERNLOG 0x86`. + +### §18.6 — The real argument for the spine is MUSCLE MEMORY, not elegance + +> *"any graph traversal in the end will be a modified version of it. any SPOG +> query will be just another flavor. and the benefit is quack / duckdb — no AI +> will ever ask what it is, you can use muscle memory."* + +§18.2-18.4 argued the spine from deduplication: three lowerings onto one floor +is two too many. That is true and it is the smaller half. + +**The larger half is that the spine is ALREADY KNOWN.** quack is DuckDB's +shape. Filter a population, reduce over the survivors, group, project. Every +engineer and every model has that shape in hand before they arrive — nobody +asks what a `WHERE` is, or what `COUNT(*)` means, or why a filter composes with +`AND`. A novel graph IR would have to be taught to every reader, every +front-end author, and every model that ever touches it; DuckDB's shape does +not, ever. + +And the two things that look like they need their own IR do not: + +- **A graph traversal is a modified filter.** Reach is `src_mask → edge lane → + dst_mask` — still a population narrowing to a population. The hop is a new + OPERATOR in a known algebra, not a new algebra. +- **A SPOG query is another flavor of the same shape.** Subject, predicate, + object, graph are four columns. Asking for the objects of a subject under a + predicate is a filter and a projection. Nothing about it needs a vocabulary + that DuckDB does not already have a word for. + +**This is the `sql()` argument one layer down, and it is the same test.** +`lance-graph-java/CLAUDE.md` asks of any Java addition: *"would a customer who +has never read our documentation write this line by accident, from habit +alone?"* Applied to the IR: **would a reader who has never read our +documentation understand this plan by accident, from DuckDB habit alone?** A +spine that passes that costs nothing to adopt and nothing to explain. A novel +one charges rent forever, in onboarding, in review, and in every model that has +to be told what it is looking at. + +So "boring" is the load-bearing property at BOTH tiers: the Java surface is +boring so a customer needs no manual, and the spine is boring so a reader, +an author, or a model needs none either. The speed is somewhere neither of +them has to look. + +### §18.7 — And the circling is the SYMPTOM, not a separate problem + +> *"everything else is running in circles around what's not in your training."* + +This is the strongest form of §18.6, and it diagnoses a mechanism rather than +stating a preference. + +A private vocabulary has to be RE-DERIVED from documents every time it is +reasoned about. Re-derivation is where the circling comes from, and this +session is the receipt: + +| the circle | what it cost | +|---|---| +| three "blockers" quoted as current | each was true once and false when quoted | +| an A/B/C placement fork raised as open | §5.2 had ruled it months earlier | +| a grep treated as a verdict, three times | a dependency edge, an impl, a seam — all wrong | +| a corpus chosen from one of those greps | 46.0 % over 50 was 37.3 % over 303 | +| Wave 1 queued as the next build | it was a third lowering onto one floor | + +Not one of those is a hard problem. Every one is a re-derivation that went +wrong, and they went wrong because the thing being re-derived is **not in the +model's training** — it exists only in this workspace's own documents, so +every reasoning step is a lookup, and every lookup is a chance to be stale, +partial, or confidently wrong. + +DuckDB's shape does not have that failure mode. A filter, an aggregate, a +group-by, a projection are not looked up. They are known, by every model and +every engineer, before the session starts. Work on that shape does not circle +because there is nothing to reconstruct. + +**So "boring" is not a style choice at any tier.** It is what removes the +lookup, and removing the lookup is what removes the circling. The operator's +three statements are one statement read at three depths: a customer should not +need a manual (`sql()`), a reader should not need one (the spine), and a model +should not need one either — because when it does, it spends the session +re-deriving instead of building, which is exactly what happened here before +this redirect. diff --git a/CLAUDE.md b/CLAUDE.md index 02598a188..d29fb3821 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1436,6 +1436,39 @@ No knowledge doc should contain unmarked conjectures. Label everything. ## In-Session Orchestration Discipline +**P0 Rule: grep FINDS, reading DECIDES (operator, 2026-09-16: *"when you +grep, only use it for finding and read after"*).** A grep result is a claim +about a PATTERN, never about the tree. Use it to locate candidates, then open +the file and read before concluding anything — especially before concluding +that something is ABSENT. + +Measured 2026-09-16, three false claims in ONE document, all from grep-as-verdict, +all caught before commit only because a later read contradicted them: + +| grep said | the truth | what reading found | +|---|---|---| +| planner→loco has "no dependency edge" | `lance-graph-ogar` is a workspace member depending on BOTH sides | its `Cargo.toml` (`ogar-loco` at `:137`, contract at `:86`) | +| `CapabilityAuthority` is "unimplemented" | it is implemented AND production | the impl is written fully-qualified — `impl lance_graph_contract::hotplug::CapabilityAuthority for OgarAuthority` — so `impl.*CapabilityAuthority` missed it | +| the kanban seam is "unwired both directions" | the seam is built; only one edge is missing | `recipe_vocab.rs`'s module doc states the design ("neither may import the other… so it lives in a consumer that already depends on both") | + +The third is the instructive one: the grep was CORRECT (those planner-side hits +really are doc comments) and the CONCLUSION was still wrong, because the file +that would have explained why was never opened. **A correct grep can support a +false conclusion.** + +Two corollaries: + +- **A negative result is the weakest thing grep produces.** Absence under one + pattern is not absence in the tree — fully-qualified paths, re-exports, + macros, aliases, and line breaks all defeat a reasonable-looking regex. Before + writing "X does not exist", open the place X would live. +- **Never count grep hits as evidence without reading them.** The same session + nearly reported 20 `BatchWriter::cast` call sites; reading showed ~17 were + ractor's unrelated `ActorRef::cast(SupervisorMsg::…)` and only 3 were real. + +Cross-ref: the sibling rule below (Read before Write) protects FILES from a +blind write; this one protects CONCLUSIONS from a blind read. + **P0 Rule: Read before Write, always.** Before calling `Write` on any path that may already exist, run `Read` (or `git status` for committed files). The `Edit` tool is the default for modifying existing files; `Write` is only diff --git a/crates/lance-graph-planner/Cargo.toml b/crates/lance-graph-planner/Cargo.toml index 59a1a014a..bafa3d309 100644 --- a/crates/lance-graph-planner/Cargo.toml +++ b/crates/lance-graph-planner/Cargo.toml @@ -85,7 +85,14 @@ jc = { path = "../jc" } [features] default = [] jit = [] -datafusion = [] +# ⊘ REMOVED 2026-09-16: `datafusion = []` was an INERT feature — nothing in +# this crate was `cfg`-gated on it and no manifest in the workspace enabled it, +# so turning it on was already a no-op. Its only live effect was to make every +# `grep datafusion crates/*/Cargo.toml` report this crate as a DataFusion +# consumer, which it has never been (the trap `CLAUDE.md`'s pin-rule comment +# already warns about by name). The planner's DataFusion content is ten doc +# comments crediting a pattern; the real 8,044 LOC live in +# `lance-graph/src/datafusion_planner/`. serve = ["dep:axum", "tokio/rt-multi-thread", "tokio/macros"] [[bin]] diff --git a/crates/lance-graph/Cargo.toml b/crates/lance-graph/Cargo.toml index b3201d398..3b6e1571d 100644 --- a/crates/lance-graph/Cargo.toml +++ b/crates/lance-graph/Cargo.toml @@ -173,3 +173,15 @@ lance-graph-planner = { path = "../lance-graph-planner" } # capability this crate USES a thing this crate ASKS FOR. Same declaration q2's # `cockpit-server` already carries for the same reason. object_store = { workspace = true } + +# Declared so `cargo test` RUNS this example's `#[cfg(test)]` module. An +# example's `test` flag defaults to false, so unit tests inside one are +# compiled-but-never-run — a test that cannot fail where anyone looks is the +# defect it was written to prevent. The extractor those tests cover is what +# BUILDS the W0-b corpus, so a silent regression in it moves a STOP-gate +# number. Auto-discovery still finds every other example; declaring one target +# does not disable it for the rest. +[[example]] +name = "w0b_corpus_census" +path = "examples/w0b_corpus_census.rs" +test = true diff --git a/crates/lance-graph/examples/w0b_corpus_census.rs b/crates/lance-graph/examples/w0b_corpus_census.rs new file mode 100644 index 000000000..f28d8ac4c --- /dev/null +++ b/crates/lance-graph/examples/w0b_corpus_census.rs @@ -0,0 +1,734 @@ +//! **W0-b — the corpus census.** `cypher-mask-lowering-v1.md` §7.0's second +//! measurement, and half of the plan's own STOP gate: +//! +//! > *"Take a real Cypher corpus (the parser's own 44 tests are the floor …). +//! > Classify every query by §3/§4: **what fraction lowers fully, what fraction +//! > splits, what fraction is pure grace?** (OQ-5.) If the full-lowering +//! > fraction is negligible, this plan's premise is wrong and Wave 1 does not +//! > start."* +//! +//! This is MEASUREMENT, not production code: it builds no mask program, mints +//! no byte, and changes no behaviour. It reports a number so that Wave 1 can be +//! started or abandoned on evidence. +//! +//! # The corpus is the committed corpus, by construction +//! +//! The query strings are not transcribed here — every `.rs` file under +//! `crates/` is WALKED and its string literals extracted at runtime. A +//! transcribed corpus drifts silently from the tests it claims to mirror, and +//! a hand-listed one is a corpus nobody chose deliberately; a walked one is +//! neither. Strings that are not queries (the planner's own error +//! messages, which also contain the word `MATCH`) self-eliminate: they fail to +//! parse and are reported in their own bucket rather than counted. +//! +//! # The classification is §3/§4's, not an opinion +//! +//! Every disposition below cites the plan row that rules it. The three outcomes +//! are §2's: +//! +//! - **Full** — every operator and every expression in the plan lowers. +//! - **Split** — at least one lowers and at least one does not (§2 property 3: +//! *"the realistic query is not 'all mask' or 'all SQL'"*). +//! - **Grace** — nothing lowers. +//! +//! Run: `cargo run -p lance-graph --example w0b_corpus_census` + +use std::collections::{BTreeMap, BTreeSet}; +use std::fs; +use std::io; +use std::path::{Path, PathBuf}; + +use lance_graph::ast::{BooleanExpression, PropertyValue, ValueExpression}; +use lance_graph::logical_plan::{LogicalOperator, LogicalPlanner}; +use lance_graph::parser::parse_cypher_query; +use lance_graph::GraphConfig; + +/// Why a construct cannot lower. The string is the plan row that rules it, so a +/// census line can be checked against the plan without re-deriving anything. +type GraceReason = &'static str; + +/// The corpus is EVERY `.rs` file under the workspace's `crates/`, walked at +/// run time — not a hand-listed set. +/// +/// ⊘ The first version of this census listed three files by hand +/// (`parser.rs`, `logical_plan.rs`, `semantic.rs`) and reported **46.0 %** over +/// 50 classified queries. Review flagged it on the PR and was right: a walk of +/// the same tree with the same extractor finds Cypher query literals in **33 +/// files** carrying **342 distinct queries** — the whole of +/// `crates/lance-graph/tests/`, `src/query.rs`, the planner's strategy modules, +/// the Python bindings. The hand list was 15 % of the corpus, and a STOP gate +/// cleared on 15 % of a corpus is cleared on a subset nobody chose +/// deliberately. +/// +/// The defect before the defect: the three files were picked after a `grep` for +/// `"…MATCH …"` reported zero hits in the DataFusion builder modules. That grep +/// cannot see a raw string or a literal spanning lines, which is the same blind +/// spot that made the extractor itself wrong (see [`string_literals`]). Hence a +/// WALK: a file added to the tree enters the corpus with no edit here, so this +/// list cannot silently go stale the way the last one did. +fn rust_sources(dir: &Path, out: &mut Vec) -> io::Result<()> { + // Every I/O failure PROPAGATES. It used to `return` on an unreadable + // directory and `flatten()` away a failed entry, which is the same defect + // as the `|| true` this arc already removed from `run.sh`: a run that + // cannot read part of the tree then reports a clean census over whatever + // it did read, and a STOP gate cleared on a partial corpus is cleared on a + // corpus nobody chose. A census that cannot see the tree is not a census + // that found nothing. + for entry in fs::read_dir(dir)? { + let path = entry?.path(); + if path.is_dir() { + // `target/` is build output, not committed source. + if path.file_name().is_some_and(|n| n == "target") { + continue; + } + rust_sources(&path, out)?; + } else if path.extension().is_some_and(|e| e == "rs") { + out.push(path); + } + } + Ok(()) +} + +/// The workspace's `crates/` directory, derived from this crate's manifest dir +/// so the walk is anchored to the checkout rather than to a working directory. +fn crates_root() -> PathBuf { + let mut p = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + p.pop(); // crates/lance-graph -> crates + p +} + +/// Pull every string literal out of Rust source: raw (`r#"…"#`) first, then +/// ordinary (`"…"`, honouring `\"`). Raw strings are taken first because an +/// ordinary-string scan would otherwise cut a raw query at its first inner +/// quote — which is exactly how a naive grep reports `MATCH (n:Person {name: ` +/// as a whole query. +/// +/// **Comments and CHAR literals are skipped, and the char case is not +/// hypothetical.** `parser.rs:931-933` contains `char('"')` three times — a +/// double quote inside a `'…'` literal. A scanner that does not know about char +/// literals opens a string there, goes one quote out of phase for the rest of +/// the file, and then reports raw Rust source as a query. The first run of this +/// census did exactly that: three "queries" came back reading +/// `); // Verify the AST structure let ast = result.unwrap(); …`. They were +/// harmless (they fail to parse, so they never reached the census) but they +/// were also proof the extractor was wrong, and a quieter version of the same +/// bug could have swallowed a real query instead of manufacturing a fake one. +fn string_literals(src: &str) -> Vec { + let b = src.as_bytes(); + let mut out = Vec::new(); + let mut i = 0usize; + while i < b.len() { + // line comment + if b[i] == b'/' && i + 1 < b.len() && b[i + 1] == b'/' { + while i < b.len() && b[i] != b'\n' { + i += 1; + } + continue; + } + // block comment + if b[i] == b'/' && i + 1 < b.len() && b[i + 1] == b'*' { + i += 2; + while i + 1 < b.len() && !(b[i] == b'*' && b[i + 1] == b'/') { + i += 1; + } + i = (i + 2).min(b.len()); + continue; + } + // char literal — but NOT a lifetime (`&'a str`). A `'` opens a char + // literal only when it is escaped (`'\''`) or closes two bytes later + // (`'x'`); `'a ` is a lifetime and must be walked past as ordinary text. + if b[i] == b'\'' && i + 1 < b.len() { + if b[i + 1] == b'\\' { + let mut j = i + 2; + while j < b.len() && b[j] != b'\'' { + j += 1; + } + i = j + 1; + continue; + } + if i + 2 < b.len() && b[i + 2] == b'\'' { + i += 3; + continue; + } + } + // raw string: r, then one or more '#', then '"' + if b[i] == b'r' && i + 1 < b.len() { + let mut h = i + 1; + while h < b.len() && b[h] == b'#' { + h += 1; + } + // `h > i + 1` here would demand at least one `#`, so a + // ZERO-hash `r"..."` fell through to the ordinary-string branch + // and had its backslashes unescaped. In valid Rust an `r` + // immediately followed by `"` is always a raw string, so the hash + // count may be zero. + if h < b.len() && b[h] == b'"' { + let hashes = h - (i + 1); + let close = format!("\"{}", "#".repeat(hashes)); + if let Some(end) = src[h + 1..].find(&close) { + out.push(src[h + 1..h + 1 + end].to_string()); + i = h + 1 + end + close.len(); + continue; + } + } + } + if b[i] == b'"' { + let mut j = i + 1; + let mut lit = String::new(); + while j < b.len() { + if b[j] == b'\\' && j + 1 < b.len() { + // keep the escaped character; a `\"` must not end the literal + lit.push(b[j + 1] as char); + j += 2; + continue; + } + if b[j] == b'"' { + break; + } + lit.push(b[j] as char); + j += 1; + } + out.push(lit); + i = j + 1; + continue; + } + i += 1; + } + out +} + +/// A literal is a census candidate if it reads like a query rather than a +/// message. The parser is the real filter — this only avoids feeding it every +/// string in 66 KB of source. +fn looks_like_a_query(s: &str) -> bool { + let u = s.to_uppercase(); + (u.contains("MATCH ") || u.starts_with("UNWIND ")) && u.contains("RETURN") +} + +/// §3.5 / §4.1 — a projection's disposition. +fn classify_value(v: &ValueExpression, grace: &mut Vec) { + match v { + // T-3 `RETURN n` (the mask itself) · T-4 `RETURN n.prop` (mask + lane). + ValueExpression::Variable(_) | ValueExpression::Property(_) => {} + ValueExpression::Literal(PropertyValue::Integer(_)) + | ValueExpression::Literal(PropertyValue::Boolean(_)) + | ValueExpression::Parameter(_) => {} + // P-9 — a float or string constant is not a mask predicate's operand. + ValueExpression::Literal(_) => grace.push("§4.2 P-9 non-integer literal"), + ValueExpression::AggregateFunction { + name, + args, + distinct, + } => { + // T-12: DISTINCT over VALUES needs value identity a mask has not. + if *distinct { + grace.push("§4.1 T-12 count(DISTINCT …)"); + } + match name.to_lowercase().as_str() { + // T-1/T-2 count · T-5 sum · T-6 min/max · T-7 avg (`[H]`, OQ-7). + "count" | "sum" | "min" | "max" | "avg" => {} + // T-12 — collect is multiplicity, which a population has not. + "collect" => grace.push("§4.1 T-12 collect()"), + _ => grace.push("§4.2 G-4 unknown aggregate"), + } + for a in args { + classify_value(a, grace); + } + } + // G-4 — every scalar string function. + ValueExpression::ScalarFunction { .. } => grace.push("§4.2 G-4 scalar function"), + // No §3.5 terminal computes a value expression; arithmetic is a value, + // not a population. + ValueExpression::Arithmetic { .. } => grace.push("§4.2 arithmetic projection"), + // G-7 — §4.4, and the plan calls this one *the interesting one*. + ValueExpression::VectorDistance { .. } | ValueExpression::VectorSimilarity { .. } => { + grace.push("§4.4 G-7 vector distance/similarity") + } + ValueExpression::VectorLiteral(_) => grace.push("§4.4 G-7 vector literal"), + } +} + +/// §3.2 / §4.2 — an INLINE PATTERN PROPERTY's disposition (`MATCH (p:Person +/// {name: "Alice"})`). These are `PropertyValue`, not `ValueExpression`, and +/// they are a different surface from `WHERE`: the planner stores them on the +/// operator (`ScanByLabel.properties`, `Expand.properties` / +/// `.target_properties`) rather than in a `Filter` node. +/// +/// ⊘ The first version of this census ignored all four maps and counted every +/// scan as lowered, so `MATCH (p:Person {name: "Alice"})-[:KNOWS]->…` came back +/// **Full** when its string equality is P-9 grace. Codex flagged it on the PR. +/// An inline property is a predicate wherever the planner chose to file it. +fn classify_property_value(v: &PropertyValue, grace: &mut Vec) { + match v { + // P-1..P-5 — an integer or boolean equality against a lane. + PropertyValue::Integer(_) | PropertyValue::Boolean(_) => {} + // A parameter is substituted before planning; its VALUE decides, and + // this census cannot see it, so it is counted maskable and said so. + PropertyValue::Parameter(_) => {} + // `IS NULL` has no NULL to test against — absence is a zero-fallback. + PropertyValue::Null => {} + // A property-to-property equality is two lanes, still Boolean. + PropertyValue::Property(_) => {} + // P-9 — §4.2. A string or float constant is not a mask operand. + PropertyValue::String(_) => grace.push("§4.2 P-9 inline string property"), + PropertyValue::Float(_) => grace.push("§4.2 P-9 inline float property"), + } +} + +/// Every inline property map on one operator. +fn classify_property_map( + props: &std::collections::HashMap, + grace: &mut Vec, +) { + for v in props.values() { + classify_property_value(v, grace); + } +} + +/// §3.2 / §3.3 / §4.2 — a `WHERE` predicate's disposition. +fn classify_bool(e: &BooleanExpression, grace: &mut Vec) { + match e { + // P-1..P-5 — compare a lane to a constant. + BooleanExpression::Comparison { left, right, .. } => { + classify_value(left, grace); + classify_value(right, grace); + } + // §3.3 — three leaves are one TERNLOG immediate. + BooleanExpression::And(a, b) | BooleanExpression::Or(a, b) => { + classify_bool(a, grace); + classify_bool(b, grace); + } + BooleanExpression::Not(a) => classify_bool(a, grace), + // T-9 `mask_any`; and absence is a zero-fallback, never a validity bit. + BooleanExpression::Exists(_) => {} + BooleanExpression::IsNull(_) | BooleanExpression::IsNotNull(_) => {} + // P-7 — N compare→mask sweeps, `mask_or`-accumulated. + BooleanExpression::In { expression, list } => { + classify_value(expression, grace); + for v in list { + classify_value(v, grace); + } + } + // G-3 — §4.2, variable-width values. + BooleanExpression::Like { .. } + | BooleanExpression::ILike { .. } + | BooleanExpression::Contains { .. } + | BooleanExpression::StartsWith { .. } + | BooleanExpression::EndsWith { .. } => grace.push("§4.2 G-3 string predicate"), + } +} + +/// Walk the plan. `lowered` counts nodes that DO lower, so the Full / Split / +/// Grace verdict is a comparison of two counts rather than a guess. +fn classify_plan(op: &LogicalOperator, grace: &mut Vec, lowered: &mut usize) { + match op { + // §3.1 — N-2's `label → classid` binding is stated ABSENT by §1.4; the + // census counts the SHAPE as lowering and reports OQ-1 separately, + // because conflating "no route yet" with "cannot lower" would make the + // premise unfalsifiable. + LogicalOperator::ScanByLabel { properties, .. } => { + *lowered += 1; + classify_property_map(properties, grace); + } + LogicalOperator::Filter { input, predicate } => { + *lowered += 1; + classify_bool(predicate, grace); + classify_plan(input, grace, lowered); + } + // §3.4 R-1 — the hop (Wave 2). Both property maps count: an inline + // property on the relationship and one on the target node are each a + // predicate the hop has to carry. + LogicalOperator::Expand { + input, + properties, + target_properties, + .. + } => { + *lowered += 1; + classify_property_map(properties, grace); + classify_property_map(target_properties, grace); + classify_plan(input, grace, lowered); + } + // §3.4 R-7/R-8 — the fixpoint (Wave 3). + LogicalOperator::VariableLengthExpand { + input, + target_properties, + .. + } => { + *lowered += 1; + classify_property_map(target_properties, grace); + classify_plan(input, grace, lowered); + } + LogicalOperator::Project { input, projections } => { + *lowered += 1; + for p in projections { + classify_value(&p.expression, grace); + } + classify_plan(input, grace, lowered); + } + // T-11 vs T-12 — and the distinction has to be made HERE. + // + // `DISTINCT n` (a node variable) is FREE: a mask IS a set, so there is + // no multiplicity to collapse. `DISTINCT n.p` (a value) is GRACE: + // distinct over VALUES needs value identity, which a population mask + // does not carry. + // + // ⊘ The first version of this census recursed and left the decision to + // `classify_value`, whose comment even said so — but that function + // accepts a bare `Property` unconditionally (T-4, `RETURN n.prop`, is + // legitimately `[G]`), so T-12 never fired at all and the reason + // histogram carried no T-12 row. Codex flagged it on the PR. What + // distinguishes the two is not the projection alone but the projection + // UNDER A `Distinct`, so the `Distinct` node is the only place that can + // tell them apart. + LogicalOperator::Distinct { input } => { + // A guarded `matches!` rather than a let chain: this crate is + // edition 2021, where let chains are not available. + if matches!( + input.as_ref(), + LogicalOperator::Project { projections, .. } + if !projections + .iter() + .all(|p| matches!(p.expression, ValueExpression::Variable(_))) + ) { + grace.push("§4.1 T-12 DISTINCT over a value"); + } + classify_plan(input, grace, lowered); + } + // §4.1 — order and position. + LogicalOperator::Sort { input, .. } => { + grace.push("§4.1 G-1 ORDER BY"); + classify_plan(input, grace, lowered); + } + LogicalOperator::Offset { input, .. } => { + grace.push("§4.1 G-2 SKIP"); + classify_plan(input, grace, lowered); + } + LogicalOperator::Limit { input, .. } => { + grace.push("§4.1 G-2 LIMIT"); + classify_plan(input, grace, lowered); + } + // §4.3 — a new relation, not a population. + LogicalOperator::Unwind { input, .. } => { + grace.push("§4.3 G-5 UNWIND"); + if let Some(i) = input { + classify_plan(i, grace, lowered); + } + } + // §4.5 — cross-address-space. + LogicalOperator::Join { left, right, .. } => { + grace.push("§4.5 Join"); + classify_plan(left, grace, lowered); + classify_plan(right, grace, lowered); + } + } +} + +fn main() -> io::Result<()> { + let config = GraphConfig::default(); + + let root = crates_root(); + let mut files = Vec::new(); + rust_sources(&root, &mut files)?; + files.sort(); + + // Literal -> EVERY file carrying it. Storing only the first source made + // `per_source` (and therefore "files carrying a query") count a file only + // when it was the first to introduce a literal, so a file whose every + // query also appears elsewhere vanished from the provenance entirely. + let mut seen: BTreeMap> = BTreeMap::new(); + for path in &files { + // Propagated, not skipped: a file the census could not read is a + // hole in the corpus, and a hole that reports success is the failure + // this whole arc keeps finding. (A non-UTF-8 `.rs` file would fail + // here — that is correct; it is also not something this tree has.) + let src = fs::read_to_string(path)?; + let label = path + .strip_prefix(&root) + .unwrap_or(path) + .to_string_lossy() + .into_owned(); + for lit in string_literals(&src) { + if looks_like_a_query(&lit) { + seen.entry(lit).or_default().insert(label.clone()); + } + } + } + + let mut parse_fail: Vec<&String> = Vec::new(); + let mut plan_fail: Vec<(&String, bool)> = Vec::new(); + let mut full: Vec<&String> = Vec::new(); + let mut split: Vec<(&String, Vec)> = Vec::new(); + let mut pure_grace: Vec<(&String, Vec)> = Vec::new(); + let mut reason_hist: BTreeMap = BTreeMap::new(); + + // Provenance per source, so a reader can see WHICH committed file supplied + // the corpus rather than taking "62 literals" on trust. + let mut per_source: BTreeMap<&str, usize> = BTreeMap::new(); + for files_with_this_query in seen.values() { + for file in files_with_this_query { + *per_source.entry(file.as_str()).or_insert(0) += 1; + } + } + + for q in seen.keys() { + let Ok(ast) = parse_cypher_query(q) else { + parse_fail.push(q); + continue; + }; + let mut planner = LogicalPlanner::new(&config); + let Ok(plan) = planner.plan(&ast) else { + // A refusal is classified by the AST it refused, not by eye: does + // every RETURN item name a bare node variable? That shape is §3.5 + // T-3 — `Terminal::Keep`, "the mask itself" — the single most + // mask-native return there is. + let bare_node = !ast.return_clause.items.is_empty() + && ast + .return_clause + .items + .iter() + .all(|it| matches!(it.expression, ValueExpression::Variable(_))); + plan_fail.push((q, bare_node)); + continue; + }; + let mut grace = Vec::new(); + let mut lowered = 0usize; + classify_plan(&plan, &mut grace, &mut lowered); + for r in &grace { + *reason_hist.entry(r).or_insert(0) += 1; + } + if grace.is_empty() { + full.push(q); + } else if lowered > 0 { + split.push((q, grace)); + } else { + pure_grace.push((q, grace)); + } + } + + let classified = full.len() + split.len() + pure_grace.len(); + println!("W0-b — CORPUS CENSUS (cypher-mask-lowering-v1 §7.0)"); + println!("=================================================\n"); + println!("candidate literals extracted : {}", seen.len()); + println!(" rust files walked : {}", files.len()); + println!(" files carrying a query : {}", per_source.len()); + let mut by_count: Vec<_> = per_source.iter().collect(); + by_count.sort_by(|a, b| b.1.cmp(a.1).then(a.0.cmp(b.0))); + for (file, n) in by_count { + println!(" {n:>4} {file}"); + } + println!(" did not parse (not queries): {}", parse_fail.len()); + println!(" parsed but did not plan : {}", plan_fail.len()); + println!(" CLASSIFIED : {classified}\n"); + + let pct = |n: usize| { + if classified == 0 { + 0.0 + } else { + 100.0 * n as f64 / classified as f64 + } + }; + println!( + " Full (everything lowers) : {:>3} ({:5.1} %)", + full.len(), + pct(full.len()) + ); + println!( + " Split (mask prefix + DF) : {:>3} ({:5.1} %)", + split.len(), + pct(split.len()) + ); + println!( + " Grace (nothing lowers) : {:>3} ({:5.1} %)", + pure_grace.len(), + pct(pure_grace.len()) + ); + + println!("\nGRACE REASONS (why a query is not Full) — count, plan row"); + println!("---------------------------------------------------------"); + let mut rows: Vec<_> = reason_hist.iter().collect(); + rows.sort_by(|a, b| b.1.cmp(a.1).then(a.0.cmp(b.0))); + for (reason, n) in rows { + println!(" {n:>3} {reason}"); + } + + println!("\nFULL-LOWERING QUERIES (the premise, enumerated)"); + println!("----------------------------------------------"); + for q in &full { + println!(" {}", q.replace('\n', " ")); + } + + // Both exclusion buckets are ENUMERATED, not merely counted. A census that + // reports only "3 excluded" cannot be checked: the reader cannot tell a + // planner's error message from a real query the planner refused, and those + // two have opposite meanings for the premise. + println!("\nEXCLUDED — did not parse (the parser's own NEGATIVE tests live here)"); + println!("----------------------------------------------------------------------"); + for q in &parse_fail { + println!(" {}", q.replace('\n', " ")); + } + + // The refusals are the most informative bucket in this census, and the + // reason is counted rather than asserted: the incumbent planner REFUSES + // `RETURN ` — §3.5 T-3, `Terminal::Keep`, the query the mask + // path answers with no work at all. Those queries are excluded from the + // percentages above, so the Full fraction UNDERSTATES the premise by + // exactly the shape that most favours it. + let bare_node_refusals = plan_fail.iter().filter(|(_, b)| *b).count(); + println!("\nEXCLUDED — parsed but did not plan (a REFUSAL, read each one)"); + println!("-------------------------------------------------------------"); + for (q, bare) in &plan_fail { + let tag = if *bare { + "[T-3 RETURN ]" + } else { + "[other]" + }; + println!(" {tag} {}", q.replace('\n', " ")); + } + println!( + "\n {} of {} refusals return a BARE NODE VARIABLE (§3.5 T-3).", + bare_node_refusals, + plan_fail.len() + ); + + println!("\nVERDICT"); + println!("-------"); + if classified == 0 { + println!(" NO CORPUS — the extractor found nothing. Fix the extractor,"); + println!(" do not read this as a finding about the plan."); + } else if full.is_empty() { + println!(" STOP. No query lowers fully. §7.0's STOP condition fires:"); + println!(" the premise is wrong as stated and Wave 1 does not start."); + } else { + println!( + " {} of {} queries ({:.1} %) lower FULLY; {} more ({:.1} %) lower", + full.len(), + classified, + pct(full.len()), + split.len(), + pct(split.len()) + ); + println!(" as a mask PREFIX under a DataFusion residue (§2's `Split`)."); + println!(); + println!(" THREE THINGS THIS NUMBER IS NOT:"); + println!(" 1. It is CONDITIONAL on OQ-1. Every Full query below scans"); + println!(" by LABEL, and §1.4 states the `label -> classid` binding"); + println!(" is ABSENT. Counting the SHAPE as lowering is what keeps"); + println!(" the premise falsifiable; it is not a claim the route exists."); + println!(" 2. It measures the TEST corpus, not a workload. These queries"); + println!(" were written to exercise the parser and the planner, so the"); + println!(" shape distribution is theirs, not a user's."); + println!(" 3. It says nothing about SPEED. §7.0 is a correctness gate;"); + println!(" no row of this output is a performance claim."); + println!(" Whether that is 'negligible' is §7.0's word and the"); + println!(" operator's call; the number is the number."); + } + + Ok(()) +} + +#[cfg(test)] +mod tests { + use super::{crates_root, rust_sources, string_literals}; + use std::path::{Path, PathBuf}; + + /// FAILS IF: a traversal error is swallowed instead of propagated. + /// + /// The falsifier for the MAJOR finding. The old body was + /// `let Ok(entries) = fs::read_dir(dir) else { return; }`, which yields + /// `Ok(())` over an empty corpus — so a census that could not read the + /// tree reported a clean result and §7.0's STOP gate was cleared on + /// nothing. Disable-verified: restoring that swallow fails exactly this + /// test, and only this one. + /// + /// A NONEXISTENT path, not an unreadable one, on purpose: this container + /// runs as root, where `chmod 000` does not deny a read, so a permissions + /// fixture would pass for the wrong reason. Absence errors for every uid. + #[test] + fn an_unreadable_tree_is_an_error_not_an_empty_corpus() { + let mut out = Vec::new(); + let missing = Path::new("/nonexistent-path-for-the-w0b-census-falsifier"); + assert!( + !missing.exists(), + "the fixture path must really be absent, or this proves nothing" + ); + assert!( + rust_sources(missing, &mut out).is_err(), + "a tree that cannot be walked must be reported, not counted as empty" + ); + + // The paired silent half: a real tree still walks, and finds this very + // file. Without it, an `Err(_)` for everything would also pass above. + let mut real: Vec = Vec::new(); + rust_sources(&crates_root(), &mut real).expect("the real tree walks"); + assert!( + real.iter().any(|p| p.ends_with("w0b_corpus_census.rs")), + "the walk finds the census's own source" + ); + } + + /// FAILS IF: a zero-hash `r"..."` is not extracted at all — a raw branch + /// that matches and then forgets to push, say. + /// + /// ⊘ It does NOT falsify the zero-hash fix, and the disable run is what + /// said so: with the `h > i + 1` bound restored this test still PASSED. + /// For a literal with nothing to escape, the raw branch and the + /// ordinary-string branch produce byte-identical output, so no such + /// fixture can tell them apart — by construction, not by oversight. Its + /// first doc comment claimed to be the falsifier; the claim was wrong and + /// is corrected here rather than quietly reworded. + /// + /// The falsifier is [`a_raw_string_keeps_its_backslashes`] — the only + /// case where the two branches disagree. + #[test] + fn a_zero_hash_raw_string_is_extracted() { + // Source text: let q = r"MATCH (n:P) RETURN n"; + let src = r##"let q = r"MATCH (n:P) RETURN n";"##; + assert_eq!( + string_literals(src), + vec!["MATCH (n:P) RETURN n".to_string()], + "a zero-hash raw string must be extracted verbatim" + ); + } + + /// FAILS IF: a raw literal's backslashes are unescaped on the way out. + /// + /// **The falsifier for the zero-hash fix** — disable-verified: restoring + /// the `h > i + 1` bound fails exactly this test, `["d+"]` against + /// `["\\d+"]`. It is the half that changes the extracted QUERY rather than + /// merely the path taken, so the census would otherwise classify a query + /// the tree does not contain. + #[test] + fn a_raw_string_keeps_its_backslashes() { + // Source text: let p = r"\d+"; (RAW, so the content is \d+) + let src = r##"let p = r"\d+";"##; + assert_eq!( + string_literals(src), + vec![r"\d+".to_string()], + "a raw literal's backslashes survive extraction" + ); + } + + /// The paired silent half, so the fix cannot be "treat every string as + /// raw": a HASHED raw string still spans its embedded quotes, and an + /// ORDINARY string still resolves its escapes. A blanket change breaks + /// both, and neither breakage is visible in the headline percentage. + #[test] + fn hashed_raw_and_ordinary_strings_are_unchanged() { + // Source text: let q = r#"MATCH (n) WHERE n.s = "x" RETURN n"#; + let src = r###"let q = r#"MATCH (n) WHERE n.s = "x" RETURN n"#;"###; + assert_eq!( + string_literals(src), + vec![r#"MATCH (n) WHERE n.s = "x" RETURN n"#.to_string()], + "a hashed raw string still spans its embedded quotes" + ); + + // Source text: let q = "a\"b"; + let src = r##"let q = "a\"b";"##; + assert_eq!( + string_literals(src), + vec!["a\"b".to_string()], + "an ordinary string still resolves its escaped quote" + ); + } +}