@@ -687,7 +687,10 @@ TEST_CASE("C API - RowRecord and delete data APIs", "[c_rowDelete]") {
687687 const char * pf = " root.cov_types.d1.sf" ;
688688 const char * pd = " root.cov_types.d1.sd" ;
689689 const char * pt = " root.cov_types.d1.st" ;
690- const char * tpaths[] = {pb, pi, pf, pd, pt};
690+ const char * pstr = " root.cov_types.d1.sstr" ;
691+ const char * pdate = " root.cov_types.d1.sdate" ;
692+ const char * pblob = " root.cov_types.d1.sblob" ;
693+ const char * tpaths[] = {pb, pi, pf, pd, pt, pstr, pdate, pblob};
691694 for (const char * tp : tpaths) {
692695 dropTimeseriesIfExists (g_session, tp);
693696 }
@@ -701,36 +704,56 @@ TEST_CASE("C API - RowRecord and delete data APIs", "[c_rowDelete]") {
701704 TS_COMPRESSION_SNAPPY ) == TS_OK );
702705 REQUIRE (ts_session_create_timeseries (g_session, pt, TS_TYPE_TEXT , TS_ENCODING_PLAIN ,
703706 TS_COMPRESSION_SNAPPY ) == TS_OK );
707+ REQUIRE (ts_session_create_timeseries (g_session, pstr, TS_TYPE_STRING , TS_ENCODING_PLAIN ,
708+ TS_COMPRESSION_SNAPPY ) == TS_OK );
709+ REQUIRE (ts_session_create_timeseries (g_session, pdate, TS_TYPE_DATE , TS_ENCODING_PLAIN ,
710+ TS_COMPRESSION_SNAPPY ) == TS_OK );
711+ REQUIRE (ts_session_create_timeseries (g_session, pblob, TS_TYPE_BLOB , TS_ENCODING_PLAIN ,
712+ TS_COMPRESSION_SNAPPY ) == TS_OK );
704713
705714 const char * dev = " root.cov_types.d1" ;
706- const char * names[] = {" sb" , " si" , " sf" , " sd" , " st" };
715+ const char * names[] = {" sb" , " si" , " sf" , " sd" , " st" , " sstr " , " sdate " , " sblob " };
707716 TSDataType_C types[] = {TS_TYPE_BOOLEAN , TS_TYPE_INT32 , TS_TYPE_FLOAT , TS_TYPE_DOUBLE ,
708- TS_TYPE_TEXT };
717+ TS_TYPE_TEXT , TS_TYPE_STRING , TS_TYPE_DATE , TS_TYPE_BLOB };
709718 bool bv = true ;
710719 int32_t iv = 42 ;
711720 float fv = 2 .5f ;
712721 double dv = 3.25 ;
713722 const char * tv = " hi" ;
714- const void * vals[] = {&bv, &iv, &fv, &dv, tv};
715- REQUIRE (ts_session_insert_record (g_session, dev, 500LL , 5 , names, types, vals) == TS_OK );
723+ const char * strVal = " hello" ;
724+ TSDate_C dateVal = {2025 , 5 , 7 };
725+ const char * blobVal = " blobXY" ;
726+ const void * vals[] = {&bv, &iv, &fv, &dv, tv, strVal, &dateVal, blobVal};
727+ REQUIRE (ts_session_insert_record (g_session, dev, 500LL , 8 , names, types, vals) == TS_OK );
716728
717729 CSessionDataSet* dataSet = nullptr ;
718730 REQUIRE (ts_session_execute_query (g_session,
719- " select sb,si,sf,sd,st from root.cov_types.d1 where time=500" ,
731+ " select sb,si,sf,sd,st,sstr,sdate,sblob from root.cov_types.d1 "
732+ " where time=500" ,
720733 &dataSet) == TS_OK );
721734 REQUIRE (dataSet != nullptr );
722735 REQUIRE (ts_dataset_has_next (dataSet));
723736 CRowRecord* record = ts_dataset_next (dataSet);
724737 REQUIRE (record != nullptr );
725738 REQUIRE (ts_row_record_get_timestamp (record) == 500LL );
726- REQUIRE (ts_row_record_get_field_count (record) == 5 );
739+ REQUIRE (ts_row_record_get_field_count (record) == 8 );
727740 REQUIRE_FALSE (ts_row_record_is_null (record, 0 ));
728741 REQUIRE (ts_row_record_get_bool (record, 0 ) == true );
729742 REQUIRE (ts_row_record_get_int32 (record, 1 ) == 42 );
730743 REQUIRE (std::fabs (ts_row_record_get_float (record, 2 ) - 2 .5f ) < 1e-4f );
731744 REQUIRE (std::fabs (ts_row_record_get_double (record, 3 ) - 3.25 ) < 1e-9 );
745+ REQUIRE (ts_row_record_get_data_type (record, 4 ) == TS_TYPE_TEXT );
732746 REQUIRE (std::string (ts_row_record_get_string (record, 4 )) == " hi" );
733- REQUIRE (ts_row_record_get_data_type (record, 0 ) == TS_TYPE_BOOLEAN );
747+ REQUIRE (ts_row_record_get_string_byte_length (record, 4 ) == 2 );
748+ REQUIRE (ts_row_record_get_data_type (record, 5 ) == TS_TYPE_STRING );
749+ REQUIRE (std::string (ts_row_record_get_string (record, 5 )) == " hello" );
750+ REQUIRE (ts_row_record_get_string_byte_length (record, 5 ) == 5 );
751+ REQUIRE (ts_row_record_get_date_int32 (record, 6 ) == 20250507 );
752+ REQUIRE (std::string (ts_row_record_get_string (record, 7 )) == " blobXY" );
753+ REQUIRE (ts_row_record_get_string_byte_length (record, 7 ) == 6 );
754+ for (int i = 0 ; i < 8 ; i++) {
755+ REQUIRE (ts_row_record_get_data_type (record, i) == types[i]);
756+ }
734757 ts_row_record_destroy (record);
735758 ts_dataset_destroy (dataSet);
736759
@@ -743,5 +766,8 @@ TEST_CASE("C API - RowRecord and delete data APIs", "[c_rowDelete]") {
743766 REQUIRE (ts_session_delete_timeseries (g_session, pf) == TS_OK );
744767 REQUIRE (ts_session_delete_timeseries (g_session, pd) == TS_OK );
745768 REQUIRE (ts_session_delete_timeseries (g_session, pt) == TS_OK );
769+ REQUIRE (ts_session_delete_timeseries (g_session, pstr) == TS_OK );
770+ REQUIRE (ts_session_delete_timeseries (g_session, pdate) == TS_OK );
771+ REQUIRE (ts_session_delete_timeseries (g_session, pblob) == TS_OK );
746772 REQUIRE (ts_session_delete_database (g_session, sg) == TS_OK );
747773}
0 commit comments