Skip to content

Commit d65f06b

Browse files
committed
it: implement integration test to verify metadata column order
1 parent b596c8d commit d65f06b

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

tests/src/integration/tests/test_schema_metadata.cpp

+47
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,53 @@ CASSANDRA_INTEGRATION_TEST_F(SchemaMetadataTest, KeyspaceMetadata) {
254254
cass_schema_meta_free(schema_meta);
255255
}
256256

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+
257304
CASSANDRA_INTEGRATION_TEST_F(SchemaMetadataTest, MetadataIterator) {
258305
const CassSchemaMeta* schema_meta = session_.schema_meta();
259306

0 commit comments

Comments
 (0)