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.
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:
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.