| 636 | |
| 637 | |
| 638 | class ExecuteMessage(_QueryMessage): |
| 639 | opcode = 0x0A |
| 640 | name = 'EXECUTE' |
| 641 | |
| 642 | def __init__(self, query_id, query_params, consistency_level, |
| 643 | serial_consistency_level=None, fetch_size=None, |
| 644 | paging_state=None, timestamp=None, skip_meta=False, |
| 645 | continuous_paging_options=None, result_metadata_id=None): |
| 646 | self.query_id = query_id |
| 647 | self.result_metadata_id = result_metadata_id |
| 648 | super(ExecuteMessage, self).__init__(query_params, consistency_level, serial_consistency_level, fetch_size, |
| 649 | paging_state, timestamp, skip_meta, continuous_paging_options) |
| 650 | |
| 651 | def _write_query_params(self, f, protocol_version): |
| 652 | if protocol_version == 1: |
| 653 | if self.serial_consistency_level: |
| 654 | raise UnsupportedOperation( |
| 655 | "Serial consistency levels require the use of protocol version " |
| 656 | "2 or higher. Consider setting Cluster.protocol_version to 2 " |
| 657 | "to support serial consistency levels.") |
| 658 | if self.fetch_size or self.paging_state: |
| 659 | raise UnsupportedOperation( |
| 660 | "Automatic query paging may only be used with protocol version " |
| 661 | "2 or higher. Consider setting Cluster.protocol_version to 2.") |
| 662 | write_short(f, len(self.query_params)) |
| 663 | for param in self.query_params: |
| 664 | write_value(f, param) |
| 665 | write_consistency_level(f, self.consistency_level) |
| 666 | else: |
| 667 | super(ExecuteMessage, self)._write_query_params(f, protocol_version) |
| 668 | |
| 669 | def send_body(self, f, protocol_version): |
| 670 | write_string(f, self.query_id) |
| 671 | if ProtocolVersion.uses_prepared_metadata(protocol_version): |
| 672 | write_string(f, self.result_metadata_id) |
| 673 | self._write_query_params(f, protocol_version) |
| 674 | |
| 675 | |
| 676 | CUSTOM_TYPE = object() |
no outgoing calls