@@ -1777,12 +1777,9 @@ def _build_table_metadata(self, row, col_rows=None, trigger_rows=None):
17771777 comparator = types .lookup_casstype (row ["comparator" ])
17781778 table_meta .comparator = comparator
17791779
1780- if issubclass (comparator , types .CompositeType ):
1781- column_name_types = comparator .subtypes
1782- is_composite_comparator = True
1783- else :
1784- column_name_types = (comparator ,)
1785- is_composite_comparator = False
1780+ is_dct_comparator = issubclass (comparator , types .DynamicCompositeType )
1781+ is_composite_comparator = issubclass (comparator , types .CompositeType )
1782+ column_name_types = comparator .subtypes if is_composite_comparator else (comparator ,)
17861783
17871784 num_column_name_components = len (column_name_types )
17881785 last_col = column_name_types [- 1 ]
@@ -1796,7 +1793,8 @@ def _build_table_metadata(self, row, col_rows=None, trigger_rows=None):
17961793
17971794 if column_aliases is not None :
17981795 column_aliases = json .loads (column_aliases )
1799- else :
1796+
1797+ if not column_aliases : # json load failed or column_aliases empty PYTHON-562
18001798 column_aliases = [r .get ('column_name' ) for r in clustering_rows ]
18011799
18021800 if is_composite_comparator :
@@ -1819,10 +1817,10 @@ def _build_table_metadata(self, row, col_rows=None, trigger_rows=None):
18191817
18201818 # Some thrift tables define names in composite types (see PYTHON-192)
18211819 if not column_aliases and hasattr (comparator , 'fieldnames' ):
1822- column_aliases = comparator .fieldnames
1820+ column_aliases = filter ( None , comparator .fieldnames )
18231821 else :
18241822 is_compact = True
1825- if column_aliases or not col_rows :
1823+ if column_aliases or not col_rows or is_dct_comparator :
18261824 has_value = True
18271825 clustering_size = num_column_name_components
18281826 else :
@@ -1867,7 +1865,7 @@ def _build_table_metadata(self, row, col_rows=None, trigger_rows=None):
18671865 if len (column_aliases ) > i :
18681866 column_name = column_aliases [i ]
18691867 else :
1870- column_name = "column%d" % i
1868+ column_name = "column%d" % ( i + 1 )
18711869
18721870 data_type = column_name_types [i ]
18731871 cql_type = _cql_from_cass_type (data_type )
0 commit comments