Skip to content

Add GFQL row join apply (#1411)#1426

Merged
lmeyerov merged 1 commit into
masterfrom
fix/joined-row-projection-1411
May 11, 2026
Merged

Add GFQL row join apply (#1411)#1426
lmeyerov merged 1 commit into
masterfrom
fix/joined-row-projection-1411

Conversation

@lmeyerov
Copy link
Copy Markdown
Contributor

@lmeyerov lmeyerov commented May 10, 2026

Fixes #1411

Summary

  • add native GFQL row-pipeline join_apply(binding_ops, join_aliases, how) for joining active binding rows to correlated binding rows
  • register/safelist the new row-pipeline call
  • add direct GFQL regression coverage for inner, left, and cuDF joined row projection, plus Cypher guard coverage for already-working connected joins
  • harden DGX RAPIDS 25.02 image builds by injecting the CUDA Python bridge version that avoids cuDF host-transfer segfaults on DGX Spark GB10

Validation

  • PYTHONPATH=/tmp/pyg1411-deps python3 -m pytest -q graphistry/tests/test_compute_chain.py::TestChainBindingsTable::test_issue_1411_join_apply_projects_joined_message_rows graphistry/tests/test_compute_chain.py::TestChainBindingsTable::test_issue_1411_join_apply_projects_joined_message_rows_on_cudf graphistry/tests/test_compute_chain.py::TestChainBindingsTable::test_issue_1411_join_apply_left_preserves_unmatched_rows graphistry/tests/compute/gfql/cypher/test_lowering.py::test_issue_1411_connected_join_property_projection_shape graphistry/tests/compute/gfql/cypher/test_lowering.py::test_issue_1411_connected_join_whole_row_projection_shape -> 4 passed, 1 skipped locally
  • PYTHONPATH=/tmp/pyg1411-deps PATH=/tmp/pyg1411-bin:$PATH ./bin/test-minimal-lite.sh --ignore=plans --ignore=test_env --ignore=graphistry/tests/test_text_utils.py --ignore=graphistry/tests/test_compute_cluster.py --ignore=graphistry/tests/compute/test_indegrees_after_umap.py --ignore=graphistry/tests/compute/test_let_engine_coercion.py --ignore=graphistry/tests/compute/test_safe_map_series.py --ignore=graphistry/tests/compute/test_call_engine_coercion.py -k 'not cudf and not umap and not dask' -> 2947 passed, 155 skipped, 244 deselected, 15 xfailed
  • ./bin/ruff.sh graphistry/tests/test_compute_chain.py graphistry/compute/ast.py graphistry/compute/gfql/call/validation.py graphistry/compute/gfql/row/pipeline.py graphistry/tests/compute/gfql/cypher/test_lowering.py
  • bash -n docker/test-rapids-official-local.sh
  • git diff --check
  • DGX RAPIDS 26.02: streamed local worktree to ssh dgx-spark, ran docker/test-rapids-official-local.sh with RAPIDS_VERSION=26.02 PROFILE=gfql WITH_GPU=1 WITH_IMAGE_BUILD=0, targeted [POST-RERUN] #880 residual: joined row projection bucket #1411 cuDF selector -> 1 passed
  • DGX RAPIDS 25.02: rebuilt graphistry/test-rapids-official:25.02-gfql with PIP_PRE_DEPS=numba-cuda==0.22.2 cuda-bindings==12.9.5 cuda-core==0.3.2 cuda-python==12.9.5, targeted [POST-RERUN] #880 residual: joined row projection bucket #1411 cuDF selector -> 1 passed, 1 warning
  • DGX RAPIDS 25.02 smoke: rebuilt image now passes independent cudf.DataFrame({"x": [1, 2]}).to_pandas() host-transfer smoke; package bridge was {'numba_cuda': '0.22.2', 'cuda_bindings': '12.9.5', 'cuda_python': '12.9.5'}
  • DGX RAPIDS 25.02 full GFQL profile: rebuilt current worktree with WITH_IMAGE_BUILD=1 RAPIDS_VERSION=25.02 PROFILE=gfql; default GFQL suite (test_parser.py, test_row_pipeline_ops.py, and cuDF lowering selectors) -> 343 passed, 6 warnings
  • DGX RAPIDS 26.02 full GFQL profile: rebuilt current worktree with WITH_IMAGE_BUILD=1 RAPIDS_VERSION=26.02 PROFILE=gfql; default GFQL suite (test_parser.py, test_row_pipeline_ops.py, and cuDF lowering selectors) -> 343 passed, 5 warnings

Known validation caveats

  • local ./bin/typecheck.sh on touched runtime files currently reports graphistry/_version.py:57 HANDLERS annotation, outside this diff
  • local ./bin/test-minimal-lite.sh hardcodes python; this shell only has python3, so validation used an explicit /tmp/pyg1411-bin/python -> /usr/bin/python3 shim
  • local host has cuDF installed but no CUDA-capable device, so the cuDF-specific [POST-RERUN] #880 residual: joined row projection bucket #1411 smoke test skips locally
  • rebuilt DGX RAPIDS 25.02 emits a cudf _ptxcompiler.py warning about cuDriverGetVersion() / Not patching Numba; import smoke, trivial cuDF host transfer, and the targeted [POST-RERUN] #880 residual: joined row projection bucket #1411 cuDF selector pass

@lmeyerov lmeyerov force-pushed the fix/joined-row-projection-1411 branch 2 times, most recently from dd510f1 to 3e33e54 Compare May 10, 2026 23:11
@lmeyerov lmeyerov marked this pull request as ready for review May 11, 2026 00:16
@lmeyerov lmeyerov force-pushed the fix/joined-row-projection-1411 branch 2 times, most recently from c1bdb2f to fc1851f Compare May 11, 2026 00:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[POST-RERUN] #880 residual: joined row projection bucket

1 participant