MCPcopy Create free account
hub / github.com/apache/cassandra-python-driver / BatchMessage

Class BatchMessage

cassandra/protocol.py:927–983  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

925
926
927class BatchMessage(_MessageType):
928 opcode = 0x0D
929 name = 'BATCH'
930
931 def __init__(self, batch_type, queries, consistency_level,
932 serial_consistency_level=None, timestamp=None,
933 keyspace=None):
934 self.batch_type = batch_type
935 self.queries = queries
936 self.consistency_level = consistency_level
937 self.serial_consistency_level = serial_consistency_level
938 self.timestamp = timestamp
939 self.keyspace = keyspace
940
941 def send_body(self, f, protocol_version):
942 write_byte(f, self.batch_type.value)
943 write_short(f, len(self.queries))
944 for prepared, string_or_query_id, params in self.queries:
945 if not prepared:
946 write_byte(f, 0)
947 write_longstring(f, string_or_query_id)
948 else:
949 write_byte(f, 1)
950 write_short(f, len(string_or_query_id))
951 f.write(string_or_query_id)
952 write_short(f, len(params))
953 for param in params:
954 write_value(f, param)
955
956 write_consistency_level(f, self.consistency_level)
957 if protocol_version >= 3:
958 flags = 0
959 if self.serial_consistency_level:
960 flags |= _WITH_SERIAL_CONSISTENCY_FLAG
961 if self.timestamp is not None:
962 flags |= _PROTOCOL_TIMESTAMP_FLAG
963 if self.keyspace:
964 if ProtocolVersion.uses_keyspace_flag(protocol_version):
965 flags |= _WITH_KEYSPACE_FLAG
966 else:
967 raise UnsupportedOperation(
968 "Keyspaces may only be set on queries with protocol version "
969 "5 or higher. Consider setting Cluster.protocol_version to 5.")
970
971 if ProtocolVersion.uses_int_query_flags(protocol_version):
972 write_int(f, flags)
973 else:
974 write_byte(f, flags)
975
976 if self.serial_consistency_level:
977 write_consistency_level(f, self.serial_consistency_level)
978 if self.timestamp is not None:
979 write_long(f, self.timestamp)
980
981 if ProtocolVersion.uses_keyspace_flag(protocol_version):
982 if self.keyspace is not None:
983 write_string(f, self.keyspace)
984

Callers 2

Calls

no outgoing calls

Tested by 1