@@ -380,15 +380,15 @@ def from_message(cls, query_id, column_metadata, pk_indexes, cluster_metadata, q
380380 partition_key_columns = None
381381 routing_key_indexes = None
382382
383- ks_name , table_name , _ , _ = column_metadata [0 ]
384- ks_meta = cluster_metadata .keyspaces .get (ks_name )
383+ first_col = column_metadata [0 ]
384+ ks_meta = cluster_metadata .keyspaces .get (first_col . keyspace_name )
385385 if ks_meta :
386- table_meta = ks_meta .tables .get (table_name )
386+ table_meta = ks_meta .tables .get (first_col . table_name )
387387 if table_meta :
388388 partition_key_columns = table_meta .partition_key
389389
390390 # make a map of {column_name: index} for each column in the statement
391- statement_indexes = dict ((c [ 2 ] , i ) for i , c in enumerate (column_metadata ))
391+ statement_indexes = dict ((c . name , i ) for i , c in enumerate (column_metadata ))
392392
393393 # a list of which indexes in the statement correspond to partition key items
394394 try :
@@ -447,7 +447,7 @@ def __init__(self, prepared_statement, *args, **kwargs):
447447
448448 meta = prepared_statement .column_metadata
449449 if meta :
450- self .keyspace = meta [0 ][ 0 ]
450+ self .keyspace = meta [0 ]. keyspace_name
451451
452452 Statement .__init__ (self , * args , ** kwargs )
453453
@@ -472,18 +472,16 @@ def bind(self, values):
472472 # sort values accordingly
473473 for col in col_meta :
474474 try :
475- values .append (dict_values [col [ 2 ] ])
475+ values .append (dict_values [col . name ])
476476 except KeyError :
477477 raise KeyError (
478478 'Column name `%s` not found in bound dict.' %
479- (col [ 2 ] ))
479+ (col . name ))
480480
481481 # ensure a 1-to-1 dict keys to columns relationship
482482 if len (dict_values ) != len (col_meta ):
483483 # find expected columns
484- columns = set ()
485- for col in col_meta :
486- columns .add (col [2 ])
484+ columns = set (col .name for col in col_meta )
487485
488486 # generate error message
489487 if len (dict_values ) > len (col_meta ):
@@ -516,17 +514,12 @@ def bind(self, values):
516514 if value is None :
517515 self .values .append (None )
518516 else :
519- col_type = col_spec [- 1 ]
520-
521517 try :
522- self .values .append (col_type .serialize (value , proto_version ))
518+ self .values .append (col_spec . type .serialize (value , proto_version ))
523519 except (TypeError , struct .error ) as exc :
524- col_name = col_spec [2 ]
525- expected_type = col_type
526520 actual_type = type (value )
527-
528521 message = ('Received an argument of invalid type for column "%s". '
529- 'Expected: %s, Got: %s; (%s)' % (col_name , expected_type , actual_type , exc ))
522+ 'Expected: %s, Got: %s; (%s)' % (col_spec . name , col_spec . type , actual_type , exc ))
530523 raise TypeError (message )
531524
532525 return self
0 commit comments