pub static SPANS: LazyLock<SchemaRef>Expand description
SPANS root table.
One deviation from the wire format, and it is the only one: OTLP sends
start_time_unix_nano and end_time_unix_nano; we store the start and a
duration_nano. Two reasons, and end time is recoverable exactly from the
pair either way.
Duration is what trace search actually filters on — “spans slower than 500ms” is the query every tracing UI opens with — so it deserves to be a column rather than a subtraction across two others. And it compresses: durations are small integers clustered near zero, absolute nanosecond timestamps are 19-digit numbers that share only their high bytes.
name is a dictionary because the semantic conventions require span names
to be low-cardinality; if an instrumentation library violates that badly
enough to fill 65536 slots, the block seals early and nothing is lost.