(cls, query_id, column_metadata, pk_indexes, cluster_metadata,
query, prepared_keyspace, protocol_version, result_metadata,
result_metadata_id, column_encryption_policy=None)
| 416 | |
| 417 | @classmethod |
| 418 | def from_message(cls, query_id, column_metadata, pk_indexes, cluster_metadata, |
| 419 | query, prepared_keyspace, protocol_version, result_metadata, |
| 420 | result_metadata_id, column_encryption_policy=None): |
| 421 | if not column_metadata: |
| 422 | return PreparedStatement(column_metadata, query_id, None, |
| 423 | query, prepared_keyspace, protocol_version, result_metadata, |
| 424 | result_metadata_id, column_encryption_policy) |
| 425 | |
| 426 | if pk_indexes: |
| 427 | routing_key_indexes = pk_indexes |
| 428 | else: |
| 429 | routing_key_indexes = None |
| 430 | |
| 431 | first_col = column_metadata[0] |
| 432 | ks_meta = cluster_metadata.keyspaces.get(first_col.keyspace_name) |
| 433 | if ks_meta: |
| 434 | table_meta = ks_meta.tables.get(first_col.table_name) |
| 435 | if table_meta: |
| 436 | partition_key_columns = table_meta.partition_key |
| 437 | |
| 438 | # make a map of {column_name: index} for each column in the statement |
| 439 | statement_indexes = dict((c.name, i) for i, c in enumerate(column_metadata)) |
| 440 | |
| 441 | # a list of which indexes in the statement correspond to partition key items |
| 442 | try: |
| 443 | routing_key_indexes = [statement_indexes[c.name] |
| 444 | for c in partition_key_columns] |
| 445 | except KeyError: # we're missing a partition key component in the prepared |
| 446 | pass # statement; just leave routing_key_indexes as None |
| 447 | |
| 448 | return PreparedStatement(column_metadata, query_id, routing_key_indexes, |
| 449 | query, prepared_keyspace, protocol_version, result_metadata, |
| 450 | result_metadata_id, column_encryption_policy) |
| 451 | |
| 452 | def bind(self, values): |
| 453 | """ |
no test coverage detected