Skip to content

Commit 4f3c748

Browse files
committed
(improvement) extract the try/except clause so it won't be per every row
Instead, do it outside the loop. Signed-off-by: Yaniv Kaul <yaniv.kaul@scylladb.com>
1 parent d87f917 commit 4f3c748

1 file changed

Lines changed: 20 additions & 22 deletions

File tree

cassandra/obj_parser.pyx

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,13 @@ cdef class TupleRowParser(RowParser):
7575
cdef tuple res = tuple_new(desc.rowsize)
7676

7777
ce_policy = desc.column_encryption_policy
78-
for i in range(rowsize):
79-
# Read the next few bytes
80-
get_buf(reader, &buf)
78+
try:
79+
for i in range(rowsize):
80+
# Read the next few bytes
81+
get_buf(reader, &buf)
8182

82-
# Deserialize bytes to python object
83-
deserializer = desc.deserializers[i]
84-
try:
83+
# Deserialize bytes to python object
84+
deserializer = desc.deserializers[i]
8585
coldesc = desc.coldescs[i]
8686
uses_ce = ce_policy.contains_column(coldesc)
8787
if uses_ce:
@@ -94,34 +94,32 @@ cdef class TupleRowParser(RowParser):
9494
val = from_binary(deserializer, &buf, desc.protocol_version)
9595
# Insert new object into tuple
9696
tuple_set(res, i, val)
97-
except Exception as e:
98-
raise DriverException('Failed decoding result column "%s" of type %s: %s' % (desc.colnames[i],
99-
desc.coltypes[i].cql_parameterized_type(),
100-
str(e)))
97+
except Exception as e:
98+
raise DriverException('Failed decoding result column "%s" of type %s: %s' % (desc.colnames[i],
99+
desc.coltypes[i].cql_parameterized_type(),
100+
str(e)))
101101

102102
return res
103103

104104
cpdef unpack_plain_row(self, BytesIOReader reader, ParseDesc desc):
105-
assert desc.rowsize >= 0
106-
107105
cdef Buffer buf
108106
cdef Py_ssize_t i, rowsize = desc.rowsize
109107
cdef Deserializer deserializer
110108
cdef tuple res = tuple_new(desc.rowsize)
111109

112-
for i in range(rowsize):
113-
# Read the next few bytes
114-
get_buf(reader, &buf)
110+
try:
111+
for i in range(rowsize):
112+
# Read the next few bytes
113+
get_buf(reader, &buf)
115114

116-
# Deserialize bytes to python object
117-
deserializer = desc.deserializers[i]
118-
try:
115+
# Deserialize bytes to python object
116+
deserializer = desc.deserializers[i]
119117
val = from_binary(deserializer, &buf, desc.protocol_version)
120118
# Insert new object into tuple
121119
tuple_set(res, i, val)
122-
except Exception as e:
123-
raise DriverException('Failed decoding result column "%s" of type %s: %s' % (desc.colnames[i],
124-
desc.coltypes[i].cql_parameterized_type(),
125-
str(e)))
120+
except Exception as e:
121+
raise DriverException('Failed decoding result column "%s" of type %s: %s' % (desc.colnames[i],
122+
desc.coltypes[i].cql_parameterized_type(),
123+
str(e)))
126124

127125
return res

0 commit comments

Comments
 (0)