Skip to content

Commit 0115d21

Browse files
committed
CHANGELOG entry & test fixes
1 parent 3952810 commit 0115d21

File tree

5 files changed

+27
-17
lines changed

5 files changed

+27
-17
lines changed

CHANGELOG.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Features
77
* Add IPv4Address/IPv6Address support for inet types (PYTHON-751)
88
* WriteType.CDC and VIEW missing (PYTHON-794)
99
* Warn on Cluster init if contact points are specified but LBP isn't (PYTHON-812)
10+
* Include hash of result set metadata in prepared stmt id (PYTHON-808)
1011

1112
Bug Fixes
1213
---------

cassandra/protocol.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -614,6 +614,7 @@ class ResultMessage(_MessageType):
614614
_FLAGS_GLOBAL_TABLES_SPEC = 0x0001
615615
_HAS_MORE_PAGES_FLAG = 0x0002
616616
_NO_METADATA_FLAG = 0x0004
617+
_METADATA_ID_FLAG = 0x0008
617618

618619
def __init__(self, kind, results, paging_state=None, col_types=None):
619620
self.kind = kind
@@ -686,7 +687,7 @@ def recv_results_metadata(cls, f, user_type_map):
686687
else:
687688
paging_state = None
688689

689-
if flags & 0x0008:
690+
if flags & cls._METADATA_ID_FLAG:
690691
result_metadata_id = read_binary_string(f)
691692
else:
692693
result_metadata_id = None

tests/unit/test_parameter_binding.py

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -77,21 +77,21 @@ def test_float_precision(self):
7777

7878
class BoundStatementTestV1(unittest.TestCase):
7979

80-
protocol_version=1
80+
protocol_version = 1
8181

8282
@classmethod
8383
def setUpClass(cls):
84-
cls.prepared = PreparedStatement(column_metadata=[
85-
ColumnMetadata('keyspace', 'cf', 'rk0', Int32Type),
86-
ColumnMetadata('keyspace', 'cf', 'rk1', Int32Type),
87-
ColumnMetadata('keyspace', 'cf', 'ck0', Int32Type),
88-
ColumnMetadata('keyspace', 'cf', 'v0', Int32Type)
89-
],
84+
column_metadata = [ColumnMetadata('keyspace', 'cf', 'rk0', Int32Type),
85+
ColumnMetadata('keyspace', 'cf', 'rk1', Int32Type),
86+
ColumnMetadata('keyspace', 'cf', 'ck0', Int32Type),
87+
ColumnMetadata('keyspace', 'cf', 'v0', Int32Type)]
88+
cls.prepared = PreparedStatement(column_metadata=column_metadata,
9089
query_id=None,
9190
routing_key_indexes=[1, 0],
9291
query=None,
9392
keyspace='keyspace',
94-
protocol_version=cls.protocol_version, result_metadata=None)
93+
protocol_version=cls.protocol_version, result_metadata=None,
94+
result_metadata_id=None)
9595
cls.bound = BoundStatement(prepared_statement=cls.prepared)
9696

9797
def test_invalid_argument_type(self):
@@ -131,7 +131,8 @@ def test_inherit_fetch_size(self):
131131
query=None,
132132
keyspace=keyspace,
133133
protocol_version=self.protocol_version,
134-
result_metadata=None)
134+
result_metadata=None,
135+
result_metadata_id=None)
135136
prepared_statement.fetch_size = 1234
136137
bound_statement = BoundStatement(prepared_statement=prepared_statement)
137138
self.assertEqual(1234, bound_statement.fetch_size)
@@ -165,7 +166,8 @@ def test_values_none(self):
165166
query=None,
166167
keyspace='whatever',
167168
protocol_version=self.protocol_version,
168-
result_metadata=None)
169+
result_metadata=None,
170+
result_metadata_id=None)
169171
bound = prepared_statement.bind(None)
170172
self.assertListEqual(bound.values, [])
171173

@@ -184,15 +186,15 @@ def test_unset_value(self):
184186

185187

186188
class BoundStatementTestV2(BoundStatementTestV1):
187-
protocol_version=2
189+
protocol_version = 2
188190

189191

190192
class BoundStatementTestV3(BoundStatementTestV1):
191-
protocol_version=3
193+
protocol_version = 3
192194

193195

194196
class BoundStatementTestV4(BoundStatementTestV1):
195-
protocol_version=4
197+
protocol_version = 4
196198

197199
def test_dict_missing_routing_key(self):
198200
# in v4 it implicitly binds UNSET_VALUE for missing items,
@@ -214,6 +216,8 @@ def test_unset_value(self):
214216
self.bound.bind({'rk0': 0, 'rk1': 0, 'ck0': 0, 'v0': UNSET_VALUE})
215217
self.assertEqual(self.bound.values[-1], UNSET_VALUE)
216218

217-
old_values = self.bound.values
218219
self.bound.bind((0, 0, 0, UNSET_VALUE))
219220
self.assertEqual(self.bound.values[-1], UNSET_VALUE)
221+
222+
class BoundStatementTestV5(BoundStatementTestV4):
223+
protocol_version = 5

tests/unit/test_protocol.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,13 @@ def test_execute_message(self):
4040
self._check_calls(io, [(b'\x00\x01',), (b'1',), (b'\x00\x04',), (b'\x01',), (b'\x00\x00',)])
4141

4242
io.reset_mock()
43+
message.result_metadata_id = 'foo'
4344
message.send_body(io, 5)
4445

45-
self._check_calls(io, [(b'\x00\x01',), (b'1',), (b'\x00\x04',), (b'\x00\x00\x00\x01',), (b'\x00\x00',)])
46+
self._check_calls(io, [(b'\x00\x01',), (b'1',),
47+
(b'\x00\x03',), (b'foo',),
48+
(b'\x00\x04',),
49+
(b'\x00\x00\x00\x01',), (b'\x00\x00',)])
4650

4751
def test_query_message(self):
4852
"""

tests/unit/test_response_future.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -517,7 +517,7 @@ def test_repeat_orig_query_after_succesful_reprepare(self):
517517
rf = self.make_response_future(session)
518518

519519
response = Mock(spec=ResultMessage, kind=RESULT_KIND_PREPARED)
520-
response.results = (None, None, None, None)
520+
response.results = (None, None, None, None, None)
521521

522522
rf._query = Mock(return_value=True)
523523
rf._execute_after_prepare('host', None, None, response)

0 commit comments

Comments
 (0)