DataStax C++ドライバでは、ユーザタイプを別のユーザタイプ(ネストされたUDT)に設定しようとしています。DataStax C++ CassandraネストされたUDT
しかし、何らかの理由で、別のユーザー定義型でユーザー定義型のフィールドを設定しようとするとエラーが発生します。
CassDataType* outerDataType = cass_data_type_new_udt(1);
cass_data_type_add_sub_value_type_by_name(outerDataType, "OUTER_FIELD", CASS_VALUE_TYPE_UDT);
CassUserType* outerUserType = cass_user_type_new_from_data_type(outerDataType);
CassDataType* innerDataType = cass_data_type_new_udt(1);
cass_data_type_add_sub_value_type_by_name(innerDataType, "INNER_FIELD", CASS_VALUE_TYPE_INT);
CassUserType* innerUserType = cass_user_type_new_from_data_type(innerDataType);
// Bind values to user type fields
// No error, CASS_OK
CassError err = cass_user_type_set_int32_by_name(innerUserType, "INNER_FIELD", 32);
// CASS_ERROR_LIB_INVALID_VALUE_TYPE
err = cass_user_type_set_user_type_by_name(outerUserType, "OUTER_FIELD", innerUserType);
// Error: Invalid value type
printf(cass_error_desc(err));
cass_data_type_free(innerDataType);
cass_data_type_free(outerDataType);
cass_user_type_free(innerUserType);
cass_user_type_free(outerUserType);
誰にこのようなケースが分かりますか? Cassandra自体はネストされたUDTを許可するように見えます。
- UDTフィールドの設定方法に問題がありますか?
- C++ドライバで入れ子になっているUDTはできませんか?この場合、関数は、cass_user_type_set_user_type()に対応していますか?