1212using namespace NYdb ::NOdbc;
1313using namespace NYdb ;
1414
15- void CheckProtoValue (const Ydb::Value& value, const std::string& expected) {
15+ template <typename T>
16+ void CheckProto (const T& value, const std::string& expected) {
1617 std::string protoStr;
1718 google::protobuf::TextFormat::PrintToString (value, &protoStr);
1819 ASSERT_EQ (protoStr, expected);
@@ -36,7 +37,8 @@ TEST(OdbcConvert, Int64ToYdb) {
3637 auto params = paramsBuilder.Build ();
3738 auto value = params.GetValue (" $p1" );
3839 ASSERT_TRUE (value);
39- CheckProtoValue (value->GetProto (), " int64_value: 42\n " );
40+ CheckProto (value->GetType ().GetProto (), " optional_type {\n item {\n type_id: INT64\n }\n }\n " );
41+ CheckProto (value->GetProto (), " int64_value: 42\n " );
4042}
4143
4244TEST (OdbcConvert, Uint64ToYdb) {
@@ -49,7 +51,8 @@ TEST(OdbcConvert, Uint64ToYdb) {
4951 auto params = paramsBuilder.Build ();
5052 auto value = params.GetValue (" $p1" );
5153 ASSERT_TRUE (value);
52- CheckProtoValue (value->GetProto (), " uint64_value: 123\n " );
54+ CheckProto (value->GetType ().GetProto (), " optional_type {\n item {\n type_id: UINT64\n }\n }\n " );
55+ CheckProto (value->GetProto (), " uint64_value: 123\n " );
5356}
5457
5558TEST (OdbcConvert, DoubleToYdb) {
@@ -62,7 +65,8 @@ TEST(OdbcConvert, DoubleToYdb) {
6265 auto params = paramsBuilder.Build ();
6366 auto value = params.GetValue (" $p1" );
6467 ASSERT_TRUE (value);
65- CheckProtoValue (value->GetProto (), " double_value: 3.14\n " );
68+ CheckProto (value->GetType ().GetProto (), " optional_type {\n item {\n type_id: DOUBLE\n }\n }\n " );
69+ CheckProto (value->GetProto (), " double_value: 3.14\n " );
6670}
6771
6872TEST (OdbcConvert, StringToYdbUtf8) {
@@ -76,21 +80,23 @@ TEST(OdbcConvert, StringToYdbUtf8) {
7680 auto params = paramsBuilder.Build ();
7781 auto value = params.GetValue (" $p1" );
7882 ASSERT_TRUE (value);
79- CheckProtoValue (value->GetProto (), " text_value: \" hello\"\n " );
83+ CheckProto (value->GetType ().GetProto (), " optional_type {\n item {\n type_id: UTF8\n }\n }\n " );
84+ CheckProto (value->GetProto (), " text_value: \" hello\"\n " );
8085}
8186
8287TEST (OdbcConvert, StringToYdbBinary) {
8388 const char * str = " bin\x01\x02 " ;
8489 SQLLEN len = 5 ;
8590 TBoundParam param{
86- 1 , SQL_PARAM_INPUT, SQL_C_CHAR , SQL_BINARY, 0 , 0 , (SQLPOINTER)str, len, nullptr
91+ 1 , SQL_PARAM_INPUT, SQL_C_BINARY , SQL_BINARY, 0 , 0 , (SQLPOINTER)str, len, nullptr
8792 };
8893 TParamsBuilder paramsBuilder;
8994 ConvertValue (param, paramsBuilder.AddParam (" $p1" ));
9095 auto params = paramsBuilder.Build ();
9196 auto value = params.GetValue (" $p1" );
9297 ASSERT_TRUE (value);
93- ASSERT_EQ (value->GetProto ().bytes_value (), std::string (str, len));
98+ CheckProto (value->GetType ().GetProto (), " optional_type {\n item {\n type_id: STRING\n }\n }\n " );
99+ CheckProto (value->GetProto (), " bytes_value: \" bin\\ 001\\ 002\"\n " );
94100}
95101
96102TEST (OdbcConvert, Int64NullToYdb) {
@@ -104,7 +110,8 @@ TEST(OdbcConvert, Int64NullToYdb) {
104110 auto params = paramsBuilder.Build ();
105111 auto value = params.GetValue (" $p1" );
106112 ASSERT_TRUE (value);
107- ASSERT_EQ (value->GetProto ().null_flag_value (), ::google::protobuf::NullValue::NULL_VALUE);
113+ CheckProto (value->GetType ().GetProto (), " optional_type {\n item {\n type_id: INT64\n }\n }\n " );
114+ CheckProto (value->GetProto (), " null_flag_value: NULL_VALUE\n " );
108115}
109116
110117TEST (OdbcConvert, StringNullToYdb) {
@@ -118,5 +125,6 @@ TEST(OdbcConvert, StringNullToYdb) {
118125 auto params = paramsBuilder.Build ();
119126 auto value = params.GetValue (" $p1" );
120127 ASSERT_TRUE (value);
121- ASSERT_EQ (value->GetProto ().null_flag_value (), ::google::protobuf::NullValue::NULL_VALUE);
128+ CheckProto (value->GetType ().GetProto (), " optional_type {\n item {\n type_id: UTF8\n }\n }\n " );
129+ CheckProto (value->GetProto (), " null_flag_value: NULL_VALUE\n " );
122130}
0 commit comments