Properly SerDes nested collections when protocol_version < 3

Description

nested collections are only serialized with v3 encoding, regardless of protocol version in use.
v3 as a requirement is documented, but we should be able to detect and warn about this condition to avoid confusing silent failures.

This can be done during schema build.

More important now, as default protocol version is still v2.

Environment

None

Pull Requests

None

Activity

Show:
Greg Bestland
November 23, 2015, 6:36 PM

This as been fixed. Test case is now added.

Adam Holmberg
November 23, 2015, 5:16 PM

Does not reproduce with pure Python. This was another oversight on the cython side.
https://github.com/datastax/python-driver/commit/b0bb19bd5eff8f2d0f56140bd7d6833f08c2ff0f

Greg Bestland
November 20, 2015, 6:26 PM

So I improved my test based on some feedback. I found an issue.

Here is a link to the improved TestCase.

https://github.com/datastax/python-driver/blob/master/tests/integration/standard/test_types.py#L766-L856

It would appear that set types are not deserializing appropriately with protocol version 1 and 2. The result when using those protocol versions always contains an empty set. They are being inserted appropriately, as even when inserted with protocol v1, they can be read with protocol v3/v4, but the results of a select query never contain a populated set when using protocol v1/v2.

Here is the output from the test when the asserts are disabled.

Greg Bestland
November 18, 2015, 9:43 PM
Michael Penick
November 12, 2015, 7:20 PM

+1 @ 3b10ce5 For better or worse this is what the cpp-driver does.

Fixed

Assignee

Greg Bestland

Reporter

Adam Holmberg

Fix versions

PM Priority

C

Reviewer

Michael Penick