Skip to content

Support multi-line syntax for extension relations with many arguments #97

@wackywendell

Description

@wackywendell

Problem

Extension relations (ExtensionLeaf, ExtensionSingle, ExtensionMulti) can carry complex detail messages with many fields. When rendered as a single bracket expression, these become very long and hard to read or edit by hand.

For example, consider a hypothetical custom scan extension with connection parameters, auth config, partitioning info, and a schema:

ExtensionLeaf:KafkaRead[brokers="broker1:9092,broker2:9092", topic="events", consumer_group="cg-analytics", offset_reset=&EARLIEST, format=&AVRO, schema_registry="https://registry.internal:8081", max_poll_records=500, session_timeout_ms=30000, filter="event_type IN ('click', 'purchase')" => user_id:string, event_type:string, timestamp:i64, payload:string?]

This is technically lossless and round-trippable, but it's painful to read, diff, or write by hand — which undermines the purpose of the text format.

Request

Support some form of multi-line representation for extension arguments, so that extensions with many fields can be spread across multiple lines while remaining fully parseable and round-trippable.

This would make the text format practical for extensions that wrap complex domain-specific messages, which is one of the main use cases for Substrait's extension relation system.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions