Skip to content

Commit 8fe0a3f

Browse files
committed
cass_result: implement missing functions
Implemented two missing CassResult functions: - cass_result_column_type - cass_result_column_data_type
1 parent 3e156ea commit 8fe0a3f

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

scylla-rust-wrapper/src/query_result.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -922,6 +922,38 @@ pub unsafe extern "C" fn cass_result_column_name(
922922
CassError::CASS_OK
923923
}
924924

925+
#[no_mangle]
926+
pub unsafe extern "C" fn cass_result_column_type(
927+
result: *const CassResult,
928+
index: size_t,
929+
) -> CassValueType {
930+
let result_from_raw: &CassResult = ptr_to_ref(result);
931+
let index_usize: usize = index.try_into().unwrap();
932+
933+
result_from_raw
934+
.metadata
935+
.col_data_types
936+
.get(index_usize)
937+
.map(|arc_data_type| cass_data_type_type(Arc::as_ptr(arc_data_type)))
938+
.unwrap_or(CassValueType::CASS_VALUE_TYPE_UNKNOWN)
939+
}
940+
941+
#[no_mangle]
942+
pub unsafe extern "C" fn cass_result_column_data_type(
943+
result: *const CassResult,
944+
index: size_t,
945+
) -> *const CassDataType {
946+
let result_from_raw: &CassResult = ptr_to_ref(result);
947+
let index_usize: usize = index.try_into().unwrap();
948+
949+
result_from_raw
950+
.metadata
951+
.col_data_types
952+
.get(index_usize)
953+
.map(Arc::as_ptr)
954+
.unwrap_or(std::ptr::null())
955+
}
956+
925957
#[no_mangle]
926958
pub unsafe extern "C" fn cass_value_type(value: *const CassValue) -> CassValueType {
927959
let value_from_raw = ptr_to_ref(value);

0 commit comments

Comments
 (0)