Correct v2 ExecuteMessage encoding
This commit is contained in:
		| @@ -364,39 +364,28 @@ class SupportedMessage(_MessageType): | ||||
|         return cls(cql_versions=cql_versions, options=options) | ||||
|  | ||||
|  | ||||
| # used for QueryMessage and ExecuteMessage | ||||
| _VALUES_FLAG = 0x01 | ||||
| _SKIP_METADATA_FLAG = 0x01 | ||||
| _PAGE_SIZE_FLAG = 0x04 | ||||
| _WITH_PAGING_STATE_SIZE_FLAG = 0x08 | ||||
| _WITH_SERIAL_CONSISTENCY_FLAG = 0x10 | ||||
|  | ||||
|  | ||||
| class QueryMessage(_MessageType): | ||||
|     opcode = 0x07 | ||||
|     name = 'QUERY' | ||||
|  | ||||
|     _VALUES_FLAG = 0x01 | ||||
|     _SKIP_METADATA_FLAG = 0x01 | ||||
|     _PAGE_SIZE_FLAG = 0x04 | ||||
|     _WITH_PAGING_STATE_SIZE_FLAG = 0x08 | ||||
|     _WITH_SERIAL_CONSISTENCY_FLAG = 0x10 | ||||
|  | ||||
|     def __init__(self, query, consistency_level, values=None): | ||||
|     def __init__(self, query, consistency_level): | ||||
|         self.query = query | ||||
|         self.consistency_level = consistency_level | ||||
|         self.values = values | ||||
|  | ||||
|     def send_body(self, f, protocol_version): | ||||
|         write_longstring(f, self.query) | ||||
|         write_consistency_level(f, self.consistency_level) | ||||
|         if protocol_version < 2: | ||||
|             assert not self.values, "QueryMessage got unbound values with protocol v1" | ||||
|             return | ||||
|  | ||||
|         flags = 0x00 | ||||
|         if self.values: | ||||
|             flags |= self._VALUES_FLAG | ||||
|  | ||||
|         write_byte(f, flags) | ||||
|  | ||||
|         if self.values: | ||||
|             write_short(f, len(self.values)) | ||||
|             for value in self.values: | ||||
|                 write_value(f, value) | ||||
|  | ||||
|  | ||||
| CUSTOM_TYPE = object() | ||||
|  | ||||
| @@ -548,10 +537,18 @@ class ExecuteMessage(_MessageType): | ||||
|  | ||||
|     def send_body(self, f, protocol_version): | ||||
|         write_string(f, self.query_id) | ||||
|         write_short(f, len(self.query_params)) | ||||
|         for param in self.query_params: | ||||
|             write_value(f, param) | ||||
|         write_consistency_level(f, self.consistency_level) | ||||
|         if protocol_version == 1: | ||||
|             write_short(f, len(self.query_params)) | ||||
|             for param in self.query_params: | ||||
|                 write_value(f, param) | ||||
|             write_consistency_level(f, self.consistency_level) | ||||
|         else: | ||||
|             write_consistency_level(f, self.consistency_level) | ||||
|             flags = _VALUES_FLAG | ||||
|             write_byte(f, flags) | ||||
|             write_short(f, len(self.query_params)) | ||||
|             for param in self.query_params: | ||||
|                 write_value(f, param) | ||||
|  | ||||
|  | ||||
| class BatchMessage(_MessageType): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Tyler Hobbs
					Tyler Hobbs