From 754d07b49e56073bc5b55d32237355d231b7008d Mon Sep 17 00:00:00 2001 From: "seer-by-sentry[bot]" <157164994+seer-by-sentry[bot]@users.noreply.github.com> Date: Tue, 4 Nov 2025 15:05:39 +0000 Subject: [PATCH 1/2] fix: Handle columns without a column type in TraceItemTableRequestVisitor --- .../v1/visitors/trace_item_table_request_visitor.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/snuba/web/rpc/v1/visitors/trace_item_table_request_visitor.py b/snuba/web/rpc/v1/visitors/trace_item_table_request_visitor.py index 8332caeec1b..5286c82b875 100644 --- a/snuba/web/rpc/v1/visitors/trace_item_table_request_visitor.py +++ b/snuba/web/rpc/v1/visitors/trace_item_table_request_visitor.py @@ -113,7 +113,13 @@ def visit_TraceItemTableRequest(self, node: TraceItemTableRequest) -> None: def visit_Column(self, node: Column, new_label: str) -> None: node.label = new_label - match node.WhichOneof("column"): + column_type = node.WhichOneof("column") + # Handle columns that only have a label but no column type + # (e.g., order_by columns that reference existing columns by label) + if column_type is None: + return + + match column_type: case "key": self.visit(node.key, new_label) case "aggregation": @@ -125,7 +131,7 @@ def visit_Column(self, node: Column, new_label: str) -> None: case "literal": self.visit(node.literal, new_label) case _: - raise ValueError(f"Unknown column type: {node.WhichOneof('column')}") + raise ValueError(f"Unknown column type: {column_type}") def visit_AttributeKey(self, node: AttributeKey, new_label: str) -> None: return From a9e1ce1aa5a96c5dc04b04a565dce2df44de8738 Mon Sep 17 00:00:00 2001 From: "getsantry[bot]" <66042841+getsantry[bot]@users.noreply.github.com> Date: Tue, 4 Nov 2025 15:06:47 +0000 Subject: [PATCH 2/2] [getsentry/action-github-commit] Auto commit --- .../v1/visitors/trace_item_table_request_visitor.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/snuba/web/rpc/v1/visitors/trace_item_table_request_visitor.py b/snuba/web/rpc/v1/visitors/trace_item_table_request_visitor.py index 5286c82b875..fcb0ebe05f2 100644 --- a/snuba/web/rpc/v1/visitors/trace_item_table_request_visitor.py +++ b/snuba/web/rpc/v1/visitors/trace_item_table_request_visitor.py @@ -36,9 +36,7 @@ def visit_TraceItemTableRequest(self, node: TraceItemTableRequest) -> None: if column.label == "": continue if column.label in self.column_labels: - raise BadSnubaRPCRequestException( - f"Duplicate column label: {column.label}" - ) + raise BadSnubaRPCRequestException(f"Duplicate column label: {column.label}") self.column_labels.add(column.label) for column in node.columns: @@ -136,9 +134,7 @@ def visit_Column(self, node: Column, new_label: str) -> None: def visit_AttributeKey(self, node: AttributeKey, new_label: str) -> None: return - def visit_AttributeAggregation( - self, node: AttributeAggregation, new_label: str - ) -> None: + def visit_AttributeAggregation(self, node: AttributeAggregation, new_label: str) -> None: node.label = new_label def visit_AttributeConditionalAggregation( @@ -194,7 +190,5 @@ def visit_Column(self, node: Column) -> None: def visit_AttributeAggregation(self, node: AttributeAggregation) -> None: node.label = self.current_label - def visit_AttributeConditionalAggregation( - self, node: AttributeConditionalAggregation - ) -> None: + def visit_AttributeConditionalAggregation(self, node: AttributeConditionalAggregation) -> None: node.label = self.current_label