You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
garden(gfql/index): team-polish — dead code, IF EXISTS, docstrings, bench honesty
Review-wave findings on the index PR:
- Delete dead engine_arrays.to_backend/cp_to_numpy (never called) + unused
get_registry import (explain.py); remove index_ddl_smoke.py 'if False'
scaffolding + unused variable.
- DropIndex.missing_ok was serialized but never honored. Now real IF EXISTS
semantics: 'DROP GFQL INDEX [IF EXISTS] <name|FOR kind>' — plain DROP of a
missing index raises (SQL-style, matching the existing custom-name test),
IF EXISTS / missing_ok=true is a no-op; wire default flipped to false
(field is new in this PR — no consumers). +1 test covering DDL both forms,
wire JSON both ways, and resident-drop.
- Replace internal review-wave codes (F1/B1/B2/B3/I4/I5/I6/P0-1) in
production comments with plain prose or in-repo test-name pointers
(test-file section labels stay — they title the regression tests).
- ComputeMixin: real docstrings on create_index/drop_index/show_indexes/
gfql_index_edges/gfql_index_all/gfql_explain (were one-liner-pointer or
missing); gfql() docstring now documents index_policy (was invisible to
help() despite being the flagship knob).
- index_bulk_olap_bench.py: polars-gpu cell used raise_on_fail=False — the
exact silent-CPU-fallback pattern the CHANGELOG bans; now GPU-or-error.
- Label index_smoke/index_ddl_smoke as container-runnable mirrors of the
canonical pytest suite; add benchmarks/gfql/README.md catalog for the 7
index_* harnesses (which pair is canonical for published claims).
Validated: index suite 44 pass CPU-lane (cudf/polars-gpu lanes = local
no-GPU artifact, dgx-verified separately); ruff + mypy clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: benchmarks/gfql/README.md
+27Lines changed: 27 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -382,3 +382,30 @@ So the honest current comparison is:
382
382
- Neo4j is workable for the smaller Twitter analog, but already materially slower than both Graphistry CPU and GPU on the exact same shape.
383
383
- On the selected GPlus benchmark shape, Neo4j is already dramatically slower than Graphistry CPU (`83.61s`) and Graphistry GPU (`3.41s`) before teardown/cleanup is even done.
384
384
- Raw notes: `plans/gfql-gpu-pagerank-benchmark/results/neo4j_summary.md`
385
+
386
+
## GFQL physical-index harnesses (`index_*.py`)
387
+
388
+
Catalog for the seeded-traversal adjacency-index work (PR #1658; see
389
+
`docs/source/gfql/index_adjacency.rst` for the user guide + published numbers):
"""Return a pandas DataFrame describing resident GFQL indexes (name, kind, column, valid). Empty if none; ``valid=False`` marks a stale index after a frame rebind."""
"""Explain how the GFQL planner would run ``query``: per-hop index-vs-scan choice, cost-gate numbers, and resident-index validity. Read-only (no execution). Returns a report object; print it for a human-readable plan."""
0 commit comments