Skip to content

feat: Standardize otap nullable and optional columns#2450

Open
JakeDern wants to merge 15 commits intoopen-telemetry:mainfrom
JakeDern:otap-nullability
Open

feat: Standardize otap nullable and optional columns#2450
JakeDern wants to merge 15 commits intoopen-telemetry:mainfrom
JakeDern:otap-nullability

Conversation

@JakeDern
Copy link
Copy Markdown
Contributor

Change Summary

This is a spec compliance PR overhauling the relationship between nullable and optional columns as described in #2149 across both go and rust implementations.

Major changes:

  • [spec] Removed the "nullable" column from payload specification tables since "required" is sufficient
  • [spec] Changed logs "time_unix_nano" field to optional because I believe this is consistent with the otlp spec
  • [spec] clarified the relationship between nullable and optional columns in a few spots
  • [spec] added "flags" to the spans table which was missing
  • [spec] added "zero_threshold" to the exp histogram dp table which was missing
  • [spec] made span links "trace_id" and "span_id" columns required
  • [rust] Updated the "required" property of some fields in payloads.rs to match the spec
  • [go] Updated the optional and required metadata across many fields to match the spec

What issue does this PR close?

How are these changes tested?

Are there any user-facing changes?

@github-actions github-actions bot added go Pull requests that update go code rust Pull requests that update Rust code labels Mar 27, 2026
@codecov
Copy link
Copy Markdown

codecov bot commented Mar 27, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 88.17%. Comparing base (b4867bf) to head (d00d4ac).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2450      +/-   ##
==========================================
- Coverage   88.18%   88.17%   -0.01%     
==========================================
  Files         604      604              
  Lines      214589   214724     +135     
==========================================
+ Hits       189235   189342     +107     
- Misses      24828    24858      +30     
+ Partials      526      524       -2     
Components Coverage Δ
otap-dataflow 90.11% <100.00%> (-0.02%) ⬇️
query_abstraction 80.61% <ø> (ø)
query_engine 90.74% <ø> (ø)
syslog_cef_receivers ∅ <ø> (∅)
otel-arrow-go 52.45% <100.00%> (+0.01%) ⬆️
quiver 91.94% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Copy Markdown
Contributor

@lquerel lquerel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@github-actions github-actions bot added query-engine Query Engine / Transform related tasks query-engine-columnar Columnar query engine which uses DataFusion to process OTAP Batches labels Mar 30, 2026
@JakeDern JakeDern marked this pull request as ready for review March 31, 2026 00:56
@JakeDern JakeDern requested a review from a team as a code owner March 31, 2026 00:56
@JakeDern
Copy link
Copy Markdown
Contributor Author

I think the test failures here are also unrelated, but it still makes me a bit uncomfortable as this is a riskier change.

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

Labels

go Pull requests that update go code query-engine Query Engine / Transform related tasks query-engine-columnar Columnar query engine which uses DataFusion to process OTAP Batches rust Pull requests that update Rust code

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

Proposal: Standardize the relationship between nullable and optional columns

2 participants