oxide explain's placement notes list != as implemented and say nothing about joins and aggregates left on the CPU

Open Beginner friendly
#94 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
86/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
rust

Research direction

Read rule.rs around comparison() and the lower_join, lower_sort_merge_join, and lower_aggregate early returns; then find the explain test that covers placement notes. Update the comparison list and record a skip reason for each early return. Done when both example queries print accurate placement notes and the explain test pins those notes.

Written by the indexing model from the issue text.

Description

bug documentation good first issue

Today — two gaps in the notes #32 added (CHANGELOG 0.2.0: "every node that was skipped and why"):

$ oxide explain --target cuda -q "SELECT id FROM t WHERE k != 3" --table t=…
placement notes (target cuda):
  FilterExec: `!=` is not one of the comparisons the device kernels implement (=, !=, <, <=, >, >=)

The message lists != although comparison() (rule.rs ~450-459) has no NotEq. And joins left on the CPU for their join type, filter or key shape print no note at all (SELECT … FROM t a LEFT JOIN t b ON … shows no "placement notes" section): the early returns in lower_join, lower_sort_merge_join and lower_aggregate return Ok(None) without self.skip(...).

Fix — drop != from the list; record a reason on every early return.

Done when — both commands print an accurate note, pinned in the explain test.

Found in the 0.3.0 review; published 0.2.0 has the same code.

Dominant language
Rust
Stars
1
Forks
2
Avg merge
5d 22h
Merged PRs (30d)
4

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from vyncint/oxidelake

All issues in vyncint/oxidelake

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.