Stop writing to the attributes_array column in the EAP consumer#8179
Merged
Conversation
Array-valued attributes are already written to the typed `Map(String, Array(T))` columns (attributes_array_string/int/float/bool) added in migration 0059, which the read path uses for filtering, aggregation, and key enumeration. The legacy `attributes_array` JSON column is no longer needed on the write path. Remove the `attributes_array` field from the `AttributeMap` and `EAPItemRow` structs, drop it from the RowBinary insert column list, and stop serializing it in `TryFrom<EAPItem>`. `insert_array` now only populates the typed columns. The unused `EAPValue` enum is removed and tests are updated to assert against the typed columns. The physical column is left in the ClickHouse schema; since it is excluded from the explicit insert column list, ClickHouse fills it with its default value. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KuSMmqtpjLyDRuq4yY3LuX
onewland
approved these changes
Jul 13, 2026
onewland
left a comment
Contributor
There was a problem hiding this comment.
🚀
curious to see if we immediately see load reduced for merges getting much simpler after dropping this column
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Array-valued attributes are already written to the typed
Map(String, Array(T))columns (attributes_array_string/_int/_float/_bool) added in migration 0059, which the read path uses for filtering, aggregation, and key enumeration viamapKeys(...). The legacyattributes_arrayJSON column is no longer needed on the write path.This PR removes the
attributes_arraycolumn from the EAP consumer processor:attributes_arrayfield from theAttributeMapandEAPItemRowstructs."attributes_array"fromEAPItemRow::COLUMN_NAMES, so it is excluded from the explicit RowBinary insert column list.TryFrom<EAPItem>;insert_arraynow only populates the typed columns.EAPValueenum.The physical
attributes_arraycolumn is intentionally left in the ClickHouse schema (migrations and storage YAML are unchanged). Because it is excluded from the explicit insert column list, ClickHouse fills it with its default value on every insert. Removing the column itself would be a separate migration.Testing
cargo check --liband theeap_itemsunit tests pass. The only failing test istest_row_binary_clickhouse_insert, which requires a live ClickHouse instance and fails here with connection-refused (unrelated to this change); its generated insert column list correctly skipsattributes_array.Legal Boilerplate
Look, I get it. The entity doing business as "Sentry" was incorporated in the State of Delaware in 2015 as Functional Software, Inc. and is gonna need some rights from me in order to utilize my contributions in this here PR. So here's the deal: I retain all rights, title and interest in and to my contributions, and by keeping this boilerplate intact I confirm that Sentry can use, modify, copy, and redistribute my contributions, under Sentry's choice of terms.
🤖 Generated with Claude Code
Generated by Claude Code