Skip to content

feat: implement InQL RFC 001 — dataset hierarchy and DataSet API#11

Merged
dannymeijer merged 4 commits into
mainfrom
feature/rfc-001-dataset-types
Mar 27, 2026
Merged

feat: implement InQL RFC 001 — dataset hierarchy and DataSet API#11
dannymeijer merged 4 commits into
mainfrom
feature/rfc-001-dataset-types

Conversation

@dannymeijer
Copy link
Copy Markdown
Collaborator

Summary

This PR implements InQL RFC 001 in the InQL package: the dataset type hierarchy and programmatic relational API that downstream RFCs (query {}, Substrait, execution) build on.

The library now exposes the full trait ladder—DataSet[T]BoundedDataSet[T] / UnboundedDataSet[T]DataFrame[T], LazyFrame[T], DataStream[T]—with the eight DataSet instance methods spelled in the RFC using Incan’s Self-based shipped signatures, plus pub::inql.functions aggregate helpers for the .agg(...) import model. Method bodies are stubs that fail at runtime until execution lands (InQL RFC 004); the contract is types, exports, and compile-time structure.

Docs catch up with Implemented / Shipped in: 0.1.0, the contract-complete checklist, reference and explanation pages under docs/language/, examples under examples/, and RFC index notes. Static capability gating (compile-time rejection of invalid ops on unbounded carriers) remains Incan typechecker work—tracked as incan #187, with InQL #10 to revisit package/docs when that exists.

Closes #2


Type of change

  • Bug fix
  • New feature
  • Refactor / maintenance
  • Documentation
  • CI / tooling
  • RFC (adds/updates docs/rfcs/*)

Area(s)

  • Package & tests
  • Specification (RFCs)
  • Documentation
  • Automation & repo config
  • Other

Key details

  • User-facing behavior: Authors can depend on inql 0.1.0 and from pub::inql import DataSet, BoundedDataSet, UnboundedDataSet, DataFrame, LazyFrame, DataStream, compose signatures against the hierarchy, call the relational method surface on carriers, and import total / count_rows from pub::inql.functions for the aggregate story RFC 001 describes. No real query execution or I/O yet—that is RFC 004 and friends.
  • Internals: New modules src/dataset.incn, src/functions.incn; src/lib.incn re-exports; tests/test_dataset.incn exercises exports and trait assignability; examples/* plus examples/README.md; docs/language/reference/dataset_types.md and docs/language/explanation/dataset_types.md; RFC 001 marked implemented with Design Decisions, Related links to incan#187 / InQL chore: Revisit InQL package/docs after Incan static capability gating (RFC 001) #10, and clarified split between library contract vs compiler enforcement.
  • Risks: Stubs mean any code path that actually invokes dataset methods at runtime will hit NotImplementedError-style failures until execution is wired—acceptable for a contract-first 0.1.0 if docs and RFC say so.

Testing / verification

  • make ci (or make fmt-check, make build, make test)
  • Manual verification described below

Manual verification notes:

  • Optional: incan run / incan test on examples as you prefer; CI should already cover make ci.

Docs impact

  • No docs changes needed
  • Docs updated
  • Docs follow Divio intent (tutorial/how-to/reference/explanation) where applicable

If docs updated:

  • Link(s): docs/rfcs/001_inql_dataset.md, docs/rfcs/README.md, docs/language/reference/dataset_types.md, docs/language/explanation/dataset_types.md, examples/README.md.

Checklist

  • I kept public docs user-focused and moved internals to contributing docs when appropriate
  • I avoided duplicating canonical install/run instructions in multiple places
  • I added/updated tests where it materially reduces regressions

@dannymeijer dannymeijer self-assigned this Mar 27, 2026
@dannymeijer dannymeijer added documentation Improvements or additions to documentation feature New feature or request labels Mar 27, 2026
@dannymeijer dannymeijer added this to the InQL-v0.1 milestone Mar 27, 2026
@dannymeijer dannymeijer merged commit 76e5198 into main Mar 27, 2026
2 of 3 checks passed
@dannymeijer dannymeijer deleted the feature/rfc-001-dataset-types branch March 27, 2026 17:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

RFC 001: InQL dataset types and carriers

1 participant