Skip to content

S3: bind data inputs with -i NAME=[FORMAT:]LOCATION, stdin included #7

Closed

Description

@david-Darkcollective

Part of #17. Design: docs/design.md §3.2.

Scope

  • -i/--input NAME=[FORMAT:]LOCATION (repeatable):
    • Formats: csv, tsv, json, ndjson.
    • Without a format, the extension decides; stdin (-) must name one.
    • An http(s) URL needs --remote.
  • Only one input may be stdin, and then the script must come from -e or a file. Anything else is a usage error.
  • Schema: inferred, with --infer-rows=N, or given by --schema NAME='{ … }'.
  • Shadowing: a bound input shadows a catalog relation of the same name, so a catalog view can run against a sample file.
  • Unbounded stdin: the input can be declared unbounded so tail -f … | relix streams, and a blocking operator over it is refused at plan time.

Dependencies

Acceptance

  • Each format, from a file and from stdin, end-to-end through Main.
  • Shadowing of a catalog relation.
  • The usage errors above.
  • A streaming NDJSON stdin emits a row before end-of-input.

Activity

  1. david-Darkcollective commented on Oct 8, 2026

    @david-Darkcollective
    MemberAuthor

    Shadowing a catalog relation landed with #35, which added the catalog (#8). An input bound with -i is declared after the catalog's survivors, so it replaces a catalog relation of the same name, and a catalog view reads the bound input. CatalogDiscoveryTest covers this ("an input bound with -i replaces the catalog's relation of that name").

    What keeps this open is the engine refusing a blocking operator over an unbounded input at plan time: DarkCollective/relix-core#98. Once that lands and the engine pin picks it up, the @Disabled test from #34 can be enabled and this issue closed.

  2. david-Darkcollective commented on Oct 8, 2026

    @david-Darkcollective
    MemberAuthor

    Done. The last open piece was the engine refusing a blocking operator over an unbounded input (DarkCollective/relix-core#98, released in 1.0.0-rc8). #37 re-enabled InputTest.Unbounded.blockingRefused, and all of InputTest passes on develop with nothing skipped. Formats, stdin, usage errors and streaming came with #34; shadowing a catalog relation came with #35.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:cliThe relix command itselfbacklogNot yet scheduledenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions