Environment
- Data shape: legacy v1 transaction spans where attributes are stored under deprecated keys
- Query path: user-facing
has: syntax in Sentry (exists_filter)
Steps to Reproduce
- Use v1 transaction span data where only deprecated keys are populated for a coalesced stable attribute (canonical key absent), e.g.
http.response_content_length present and http.response.body.size missing.
- Run an existence check on the canonical key, e.g.
has:http.response.body.size (RPC exists_filter).
Expected Result
exists_filter on the canonical key should match when the value exists under a mapped deprecated key (consistent with canonical value-filter behavior).
Actual Result
Canonical value comparison matches, but canonical exists_filter does not match rows where only deprecated-key storage exists (observed on v1 spans).
Dependents
Currently blocks migration of Sentry dashboards that need consistent filtering across both v1 and v2 spans.
Environment
has:syntax in Sentry (exists_filter)Steps to Reproduce
http.response_content_lengthpresent andhttp.response.body.sizemissing.has:http.response.body.size(RPCexists_filter).Expected Result
exists_filteron the canonical key should match when the value exists under a mapped deprecated key (consistent with canonical value-filter behavior).Actual Result
Canonical value comparison matches, but canonical
exists_filterdoes not match rows where only deprecated-key storage exists (observed on v1 spans).Dependents
Currently blocks migration of Sentry dashboards that need consistent filtering across both v1 and v2 spans.