diff --git a/include/client/taos.h b/include/client/taos.h index 5e0bce6115..919ace9fc4 100644 --- a/include/client/taos.h +++ b/include/client/taos.h @@ -271,6 +271,7 @@ DLL_EXPORT int taos_affected_rows(TAOS_RES *res); DLL_EXPORT int64_t taos_affected_rows64(TAOS_RES *res); DLL_EXPORT TAOS_FIELD *taos_fetch_fields(TAOS_RES *res); +DLL_EXPORT TAOS_FIELD_E *taos_fetch_fields_e(TAOS_RES *res); DLL_EXPORT int taos_select_db(TAOS *taos, const char *db); DLL_EXPORT int taos_print_row(char *str, TAOS_ROW row, TAOS_FIELD *fields, int num_fields); DLL_EXPORT int taos_print_row_with_size(char *str, uint32_t size, TAOS_ROW row, TAOS_FIELD *fields, int num_fields); diff --git a/source/client/src/clientMain.c b/source/client/src/clientMain.c index e6c7a9f0d7..88f198ebe1 100644 --- a/source/client/src/clientMain.c +++ b/source/client/src/clientMain.c @@ -599,6 +599,14 @@ TAOS_RES *taos_query_with_reqid(TAOS *taos, const char *sql, int64_t reqid) { return taosQueryImplWithReqid(taos, sql, false, reqid); } +TAOS_FIELD_E *taos_fetch_fields_e(TAOS_RES *res) { + if (taos_num_fields(res) == 0 || TD_RES_TMQ_META(res) || TD_RES_TMQ_BATCH_META(res)) { + return NULL; + } + SReqResultInfo* pResInfo = tscGetCurResInfo(res); + return pResInfo->fields; +} + TAOS_ROW taos_fetch_row(TAOS_RES *res) { if (res == NULL) { return NULL; diff --git a/source/libs/decimal/test/decimalTest.cpp b/source/libs/decimal/test/decimalTest.cpp index 5ccbefb47a..1b21040c5e 100644 --- a/source/libs/decimal/test/decimalTest.cpp +++ b/source/libs/decimal/test/decimalTest.cpp @@ -1384,6 +1384,13 @@ TEST_F(DecimalTest, api_taos_fetch_rows) { taos_print_row(buf, row, fields, fieldNum); cout << buf << endl; } + auto* fields_e = taos_fetch_fields_e(res); + ASSERT_EQ(fields_e[0].type, TSDB_DATA_TYPE_DECIMAL64); + ASSERT_EQ(fields_e[1].type, TSDB_DATA_TYPE_DECIMAL); + ASSERT_EQ(fields_e[0].precision, 10); + ASSERT_EQ(fields_e[0].scale, 2); + ASSERT_EQ(fields_e[1].precision, 38); + ASSERT_EQ(fields_e[1].scale, 10); taos_free_result(res); res = taos_query(pTaos, sql);