Skip to content

Commit 92a5963

Browse files
Copilotmykaul
andcommitted
Only create col_descs when needed
Per review feedback, optimized to only create col_descs when necessary: - Created inside 'if column_encryption_policy:' block when policy is enabled - Created in exception handler when needed for error reporting - NOT created when no policy and no exceptions (the common fast path) This avoids unnecessary list comprehension when column_encryption_policy is None. Co-authored-by: mykaul <[email protected]>
1 parent 8e82b03 commit 92a5963

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

cassandra/protocol.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -718,11 +718,12 @@ def recv_results_rows(self, f, protocol_version, user_type_map, result_metadata,
718718
rows = [self.recv_row(f, len(column_metadata)) for _ in range(rowcount)]
719719
self.column_names = [c[2] for c in column_metadata]
720720
self.column_types = [c[3] for c in column_metadata]
721-
col_descs = [ColDesc(md[0], md[1], md[2]) for md in column_metadata]
722721

723722
# Optimize by checking column_encryption_policy once per result message.
724723
# This avoids checking if the policy exists for every single value decoded.
725724
if column_encryption_policy:
725+
col_descs = [ColDesc(md[0], md[1], md[2]) for md in column_metadata]
726+
726727
def decode_val(val, col_md, col_desc):
727728
uses_ce = column_encryption_policy.contains_column(col_desc)
728729
col_type = column_encryption_policy.column_type(col_desc) if uses_ce else col_md[3]
@@ -739,6 +740,8 @@ def decode_row(row):
739740
try:
740741
self.parsed_rows = [decode_row(row) for row in rows]
741742
except Exception:
743+
# Create col_descs only if needed for error reporting
744+
col_descs = [ColDesc(md[0], md[1], md[2]) for md in column_metadata]
742745
for row in rows:
743746
for val, col_md, col_desc in zip(row, column_metadata, col_descs):
744747
try:

0 commit comments

Comments
 (0)