Skip to content

Specializer SQL support: SELECT * star expansion — corpus 53 → 172 (TASK-46) - #30

Merged
claude-agent-ahrzb[bot] merged 2 commits into
masterfrom
claude/specializer-star-expansion
Jul 26, 2026
Merged

Specializer SQL support: SELECT * star expansion — corpus 53 → 172 (TASK-46)#30
claude-agent-ahrzb[bot] merged 2 commits into
masterfrom
claude/specializer-star-expansion

Conversation

@claude-agent-ahrzb

Copy link
Copy Markdown

First rung of the SQL-support push (TASK-46; TASK-47 builtins wave follows separately).

What

Binder::expand_star at the frontend's single projection site — no IR, backend, or boundary changes:

  • Plain * and tbl.* in measured DuckDB order (FROM order, declared column order); mixed *, expr items compose naturally.
  • EXCLUDE in bare/paren forms, case-insensitive, with DuckDB-mirrored binder errors (unknown column, duplicate entry, exclude-all → empty SELECT).
  • Star over a joined static table rejects by name: DuckDB's expansion includes the join-key column and emits duplicate output names there (measured ['k','x','k','y']) — both unrepresentable in a typed output model. __THIS__.* under a join works.
  • ILIKE / EXCEPT / REPLACE / RENAME / COLUMNS() reject by name (20 corpus mentions total, macro machinery deferred).

Measured result

  • Corpus replay: 53 → 172 match of 678 (+119, 3.2×), zero FAILs. New first-blocker head: BETWEEN 31 · comma join 30 · dynamic-table alias 30 · then the builtin catalogue — TASK-47's target list confirmed.
  • Pins: Rust-level expansion tests + duck_check oracle tests (order, EXCLUDE case-folding, join forms, clean rejections).
  • Gate green: cargo 129, pytest 627 (13 xfail incl. the pre-existing substr const-fold pin).

Also in this PR: TASK-45 marked Done with final summary; TASK-46/47 tickets created.

🤖 Generated with Claude Code

ahrzb and others added 2 commits July 26, 2026 11:24
…+ TASK-47 workload builtins wave 1 created

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…TASK-46)

Binder::expand_star at the single projection site: plain * and tbl.*
in measured DuckDB order (FROM order, declared column order), EXCLUDE
in bare/paren forms case-insensitively with DuckDB-mirrored binder
errors, mixed *,expr items via item-position expansion. Star over a
joined static table rejects cleanly naming the join key (DuckDB
includes the key and emits duplicate output names there — both
unrepresentable in the typed output model); __THIS__.* under a join
works. ILIKE/EXCEPT/REPLACE/RENAME/COLUMNS() reject by name.
Corpus replay: 53 -> 172 match of 678 (+119), zero FAILs. Gate green
(cargo 129, pytest 627).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@claude-agent-ahrzb
claude-agent-ahrzb Bot merged commit 0237567 into master Jul 26, 2026
1 check passed
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.

1 participant