docs(gfql): pay-as-you-go resident indexing user guide#1771
Merged
Conversation
New docs/source/gfql/indexing.rst: lifecycle guide to GFQL resident indexes (gfql_index_all / gfql_index_edges / create_index / show_indexes / drop_index) — node-id + CSR in/out adjacency sidecars, what engages them on 0.58.0 (seeded typed-hop fast paths incl. property RETURNs and property-seeded lookups per #1768/#1770, direct g.hop(); general polars chain traversal honestly noted as not yet covered), the identity + fingerprint staleness contract with safe declines, engine notes (polars needs gfql_index_all(engine='polars') until #1767), 0.58.0-tag measured numbers, and a runnable end-to-end example (executed). Wired into the GFQL toctree + recommended paths next to index_adjacency; CHANGELOG entry under Development > Documentation. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y6dQEcjdazEnzuvuwf73ZL
Contributor
Author
|
Review-skill pass (session): no findings. Verified against source: 🤖 Generated with Claude Code |
…lifecycle + decline-safety Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y6dQEcjdazEnzuvuwf73ZL
lmeyerov
added a commit
that referenced
this pull request
Jul 22, 2026
…elsewhere Restructure per review: performance.rst is now the canonical benchmark-numbers page (alongside index_adjacency for the index benchmarks) so a benchmark rerun touches one page, not six. - performance.rst: keeps the 0.58.0 release-verified section with provenance stated once at the top; absorbs the full Orkut/LiveJournal bulk-sweep table, reading notes, crossover figures, and methodology from engines.rst with a single dating sentence instead of scattered "prior sweep" tags. - engines.rst: number tables and inline figures removed; new qualitative "How the engines compare" section; competitor rows (Neo4j, Kuzu, LadybugDB, GraphFrames), decision-matrix notes, and footnotes now make stable qualitative claims and link to performance.rst / index_adjacency; methodology section is a pointer to the numbers page. - quick.rst / about.rst / overview.rst / index.rst: one-liners reworded to stable "often an order of magnitude faster on query-heavy workloads" phrasing with links — no datasets, versions, or ratios. - Rebased on master (PR #1771 merged); CHANGELOG entries placed alongside, entry rewritten to describe the siloed architecture. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y6dQEcjdazEnzuvuwf73ZL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
New user guide
docs/source/gfql/indexing.rst— Pay-As-You-Go Resident Indexing — the lifecycle-focused companion to the existingindex_adjacency.rst(planner/benchmark) page:gfql_index_all(), reused automatically by seeded GFQL/Cypher lookups andg.hop().g.hop(). Honestly notes the general polars chain traversal (multi-hop/multi-alias) is not yet covered..edges()/.nodes()invalidates (edge rebind leaves node_id valid — verified by execution); rebuild viagfql_index_all(); declines are safe — identical results either way.gfql_index_all(engine='polars')on 0.58.0 (AUTO swaps polars frames to pandas; fix tracked in fix(gfql): index AUTO preserves resident polars frames (kills the polars-hop O(E) tax) #1767); polars-gpu rides the polars-tagged index.g.hop()flat 0.159–0.164 ms from 0.25M→32M edges; ~5.7 s build on 30.6M edges.Also: wired into the GFQL toctree + recommended paths (
docs/source/gfql/index.rst), CHANGELOG entry under[Development] > Documentation.Validation
sphinx-build -b html docs/source ...): build succeeded, zero warnings/errors on the touched files (pre-existing warnings elsewhere unchanged).rstcheckclean on both touched.rstfiles.Notes for reviewers
graphistry/compute/gfql/index/api.py):gfql_index_all,gfql_index_edges,create_index,drop_index,show_indexes— all present;gfql_index_all()skips the node_id index on non-unique ids while explicitcreate_index("node_id")raises, both documented.DO NOT MERGE without review sign-off.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Y6dQEcjdazEnzuvuwf73ZL