Skip to content

Commit 3ec0c94

Browse files
committed
perf: skip ColDesc namedtuple allocation when no column encryption policy
When column_encryption_policy is None (the common case), the ColDesc namedtuple list is never accessed by unpack_plain_row(). Skip building it entirely, passing None to ParseDesc instead. This avoids N namedtuple allocations per query (where N = number of columns) on the Cython fast path for non-encrypted workloads.
1 parent 20e7ed6 commit 3ec0c94

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

cassandra/row_parser.pyx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@ def make_recv_results_rows(ColumnParser colparser):
3232
self.column_names = [md[2] for md in column_metadata]
3333
self.column_types = [md[3] for md in column_metadata]
3434

35+
coldescs = [ColDesc(md[0], md[1], md[2]) for md in column_metadata] if column_encryption_policy else None
3536
desc = ParseDesc(self.column_names, self.column_types, column_encryption_policy,
36-
[ColDesc(md[0], md[1], md[2]) for md in column_metadata],
37+
coldescs,
3738
make_deserializers(self.column_types), protocol_version)
3839
reader = BytesIOReader(f.read())
3940
try:

0 commit comments

Comments
 (0)