From bae48b73c6733b65fd9abd9fa5154d12c4e2ce1e Mon Sep 17 00:00:00 2001 From: localvar Date: Mon, 13 Jan 2020 16:50:17 +0800 Subject: [PATCH] fix two bugs: 1. taos_consume block for evev 2. taos_fetch_block returns 0 in subscription --- src/client/src/tscSql.c | 2 +- src/client/src/tscSub.c | 4 ++-- tests/examples/c/subscribe.c | 15 ++++++++++++++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/client/src/tscSql.c b/src/client/src/tscSql.c index ad4a29f20e..43c1fc9ce9 100644 --- a/src/client/src/tscSql.c +++ b/src/client/src/tscSql.c @@ -344,7 +344,7 @@ int taos_fetch_block_impl(TAOS_RES *res, TAOS_ROW *rows) { SSqlRes *pRes = &pSql->res; STscObj *pObj = pSql->pTscObj; - if (pRes->qhandle == 0 || pObj->pSql != pSql) { + if (pRes->qhandle == 0) { *rows = NULL; return 0; } diff --git a/src/client/src/tscSub.c b/src/client/src/tscSub.c index 685a26a46e..17a5031fa6 100644 --- a/src/client/src/tscSub.c +++ b/src/client/src/tscSub.c @@ -348,8 +348,8 @@ TAOS_RES *taos_consume(TAOS_SUB *tsub) { SSqlRes *pRes = &pSql->res; if (pSub->pTimer == NULL) { - int duration = (int)(taosGetTimestampMs() - pSub->lastConsumeTime); - if (duration < pSub->interval) { + int64_t duration = taosGetTimestampMs() - pSub->lastConsumeTime; + if (duration < (int64_t)(pSub->interval)) { tscTrace("subscription consume too frequently, blocking..."); taosMsleep(pSub->interval - (int32_t)duration); } diff --git a/tests/examples/c/subscribe.c b/tests/examples/c/subscribe.c index 078929a9b8..04d000ba37 100644 --- a/tests/examples/c/subscribe.c +++ b/tests/examples/c/subscribe.c @@ -8,15 +8,28 @@ #include void print_result(TAOS_RES* res) { - TAOS_ROW row; + TAOS_ROW row = NULL; int num_fields = taos_num_fields(res); TAOS_FIELD* fields = taos_fetch_fields(res); +#if 0 + + int nRows = taos_fetch_block(res, &row); + for (int i = 0; i < nRows; i++) { + char temp[256]; + taos_print_row(temp, row + i, fields, num_fields); + puts(temp); + } + +#else + while ((row = taos_fetch_row(res))) { char temp[256]; taos_print_row(temp, row, fields, num_fields); puts(temp); } + +#endif } void subscribe_callback(TAOS_SUB* tsub, TAOS_RES *res, void* param, int code) { -- GitLab