Repository navigation
perf(gfql): native chain seeds resolve through the resident indexes; named patterns served (#2027) - #2037
Conversation
de0adba to
9d34dbb
Compare
318a221 to
f8f2e73
Compare
3a90313 to
47da761
Compare
|
READY (9b190d2): 75/75 + RTD incl. tck-gfql; pins on both sides (policy off / stale index / IsIn+GT seeds → scan with parity); real-GPU: cuDF suites in the RAPIDS 26.02 image pass (stack tip run 958 passed; the 3 cuDF-26-only chain divergences are pre-existing on master and tracked in #2043/#2044). Stacked on #2035. |
ab3a32e to
ff818e1
Compare
…named patterns served on the chain fast path - single-node op: named ops served; seed via node-id index, node-property index or the canonical filter; alias flag column placed after the node id like the full path - seeded typed hop helper resolves the seed with the shared _seed_node_rows (property index for a predicate off the node binding) - the 'defer to the index' decline for named patterns is removed: the indexed kernel has already declined the middle by the time the fast path runs, so it served nothing - alias tagging matches the full path's column layout and RangeIndex - pins: lane-shaped graph (synthetic node key, predicate on id, label__ columns) served with value parity on pandas/cuDF; property-index seam engagement; alias layout Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh1i1
…ale indexes, and non-scalar seeds Every lane shape keeps full-path parity and reports no index use under index_policy="off" and after a rebind that stales every resident index; IsIn and GT seed predicates never take the native seed lanes and keep parity. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01QztW7jYsDd66e8rb8pJNQA
…acement differs on older pandas Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01QztW7jYsDd66e8rb8pJNQA
ff818e1 to
a45374b
Compare
…eated row Round-003 amplification of the native seed lanes: with a duplicated node row the served lookup answers one row per matching table row (as the polars lanes do) while the pandas/cuDF full path self-joins the duplicates into eight rows. Both sides are recorded so a change to either flips the pin. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01QztW7jYsDd66e8rb8pJNQA
|
READY (4b91e9f) — restacked on master 9226829 after #2035 landed (patch-id identical to the previous head; base retargeted to master), plus one round-003 pin. Round-003 amplification of the native seed lanes (owner ask: reflect on the review flow before this lands). A 51-shape × pandas/polars/cuDF differential probe (default route vs the native lanes forced to decline, plus the pandas full path as cross-engine oracle) was run at the #2038 head (which contains this PR) and at master: 140 parity / 3 both-raise (same exception class both routes) / 5 fixture errors that are identical on master / 3 cross-engine divergences that are identical on master. One stack-introduced divergence, pinned here:
Pre-existing findings surfaced by the probe, not in this diff (for triage): Cost receipt (local box, medians of 7, ms;
The one cost this PR adds is on the unindexed pandas seeded hop: about 0.6 ms at 10k rows for the gate that consults the resident indexes; it does not grow with table size. Receipts at 4b91e9f
|
|
Addendum (owner ask: the receipt quoted pandas only). This PR's product diff touches four functions on the pandas/cuDF chain entry (
|
Stacked on #2035 → #2031 → #2030. Closes the "adapter gap" (plan T2.10.3): the SNB benchmark lane runs GFQL as native op lists (
n(..., name=..),e_forward,rows,select), not Cypher text, so the Cypher fast paths never applied there, and the native seeded paths scanned the node table for a seed predicate on a property that is not the node binding.Changes
_handle_boundary_calls), so the deferral only cost the scan.Evidence (local, not published; lane's own conformance suite on the SF0.1 fixture, pandas): seed-lookup 45.8 → 9.2 ms, message-content 28 → 5.5 ms, message-creator 51.5 → 7.7 ms. On dgx the same lane at the parent head measured 33.4 / 10.7 / 28.8 ms while the Cypher sentinel measured 1.9 / 1.0 ms on the same host; the re-measure at this head follows. Polars' native chain has its own index consult and is unchanged here (#2033).
Tests:
test_native_seed_resolution_2027.py(lane-shaped graph: synthetic node key, predicate onid,label__Xcolumns; four shapes served with value parity on pandas and cuDF; property-index seam engagement; alias layout),test_chain.pydeferral pin rewritten to the new contract; chain/hop/fast-path/index/semantics suites 1753 passed (3 pre-existing local cuBLAS failures). Guards green.🤖 Generated with Claude Code
https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh1i1
Fixes #2027.