You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Motivation:
The Cassandra client previously supported scalar types and arrays, but
lacked support for map types which are a fundamental Cassandra collection
type. Maps are commonly used for storing key-value pairs in Cassandra
schemas (e.g., user preferences, metadata, configuration settings). Without
map support, users had to work around this limitation or couldn't use
certain Cassandra features effectively.
Modifications:
- Created Statement+Maps.swift with map binding logic for all 63 type
combinations (7 key types × 9 value types)
- Added all 63 map enum cases to Statement.Value enum
- Implemented bindMap<K,V> helper using CASS_COLLECTION_TYPE_MAP
- Created Data+Maps.swift with map reading logic for all 63 combinations
- Implemented toMap<K,V> using cass_iterator_from_map(),
cass_iterator_get_map_key(), and cass_iterator_get_map_value()
- Added 63 map properties on Column and 126 convenience methods on Row
- Extended testMapTypes to comprehensively test all 63 map combinations
- Organized map-related code in separate extension files to keep codebase clean
Supported key types: Int8, Int16, Int32, Int64, String, UUID, TimeBasedUUID
Supported value types: Int8, Int16, Int32, Int64, Float32, Double, Bool, String, UUID
Result:
Users can now bind and read all Cassandra map types with full type safety.
The implementation follows the same pattern as arrays, providing consistent
API ergonomics. All 63 map type combinations are tested and verified to
work correctly with round-trip insert/read operations.
0 commit comments