@@ -254,6 +254,53 @@ CASSANDRA_INTEGRATION_TEST_F(SchemaMetadataTest, KeyspaceMetadata) {
254
254
cass_schema_meta_free (schema_meta);
255
255
}
256
256
257
+ CASSANDRA_INTEGRATION_TEST_F (SchemaMetadataTest, TableMetadataColumnOrder) {
258
+ // The order should be: d, a, j, h, i, b, c, f, g
259
+ // First pks by position: d, a, j
260
+ // Then cks by position: h, i
261
+ // Then remaining columns alphabetically: b, c, f, g
262
+
263
+ session_.execute (format_string (" CREATE TABLE %s "
264
+ " (i int, f int, g int STATIC, b int, c int STATIC, a int, d int, j int, h int, "
265
+ " PRIMARY KEY( (d, a, j), h, i ) )" , " column_order_test" ));
266
+
267
+ const CassSchemaMeta* schema_meta = session_.schema_meta ();
268
+
269
+ const CassKeyspaceMeta* keyspace_meta = cass_schema_meta_keyspace_by_name (schema_meta, keyspace_name_.c_str ());
270
+ ASSERT_TRUE (keyspace_meta);
271
+
272
+ const CassTableMeta* table_meta = cass_keyspace_meta_table_by_name (keyspace_meta, " column_order_test" );
273
+ ASSERT_TRUE (table_meta);
274
+
275
+ ASSERT_EQ (cass_table_meta_column_count (table_meta), 9u );
276
+
277
+ ASSERT_EQ (cass_table_meta_partition_key_count (table_meta), 3u );
278
+ ASSERT_EQ (cass_table_meta_clustering_key_count (table_meta), 2u );
279
+
280
+ auto check_column = [&](size_t index , const char * name) {
281
+ const CassColumnMeta* column_meta;
282
+ const char * column_meta_name;
283
+ size_t column_meta_name_length;
284
+
285
+ column_meta = cass_table_meta_column (table_meta, index );
286
+ ASSERT_TRUE (column_meta);
287
+ cass_column_meta_name (column_meta, &column_meta_name, &column_meta_name_length);
288
+ ASSERT_EQ (std::string (column_meta_name, column_meta_name_length), name);
289
+ };
290
+
291
+ check_column (0 , " d" );
292
+ check_column (1 , " a" );
293
+ check_column (2 , " j" );
294
+ check_column (3 , " h" );
295
+ check_column (4 , " i" );
296
+ check_column (5 , " b" );
297
+ check_column (6 , " c" );
298
+ check_column (7 , " f" );
299
+ check_column (8 , " g" );
300
+
301
+ cass_schema_meta_free (schema_meta);
302
+ }
303
+
257
304
CASSANDRA_INTEGRATION_TEST_F (SchemaMetadataTest, MetadataIterator) {
258
305
const CassSchemaMeta* schema_meta = session_.schema_meta ();
259
306
0 commit comments