diff --git a/src/client/src/tscPrepare.c b/src/client/src/tscPrepare.c index 0df1c7ddc514f133f8c4b53852613b8c212ecfb6..b996dd958ae432300391a104f94a4cfe27f0858d 100644 --- a/src/client/src/tscPrepare.c +++ b/src/client/src/tscPrepare.c @@ -613,11 +613,13 @@ int taos_stmt_execute(TAOS_STMT* stmt) { if (sql == NULL) { ret = TSDB_CODE_TSC_OUT_OF_MEMORY; } else { - taosTFree(pStmt->pSql->sqlstr); - pStmt->pSql->sqlstr = sql; - SSqlObj* pSql = taos_query((TAOS*)pStmt->taos, pStmt->pSql->sqlstr); - ret = taos_errno(pSql); - taos_free_result(pSql); + if (pStmt->pSql != NULL) { + taos_free_result(pStmt->pSql); + pStmt->pSql = NULL; + } + pStmt->pSql = taos_query((TAOS*)pStmt->taos, sql); + ret = taos_errno(pStmt->pSql); + free(sql); } } return ret; diff --git a/src/client/src/tscSub.c b/src/client/src/tscSub.c index 0e1be926f44c2ee302c26a6695f4b93679194430..76bce19668433d8819d44c8f272ad62b1d6dd034 100644 --- a/src/client/src/tscSub.c +++ b/src/client/src/tscSub.c @@ -405,16 +405,20 @@ TAOS_SUB *taos_subscribe(TAOS *taos, int restart, const char* topic, const char return pSub; } -void taos_free_result_imp(SSqlObj* pSql, int keepCmd); - TAOS_RES *taos_consume(TAOS_SUB *tsub) { SSub *pSub = (SSub *)tsub; if (pSub == NULL) return NULL; tscSaveSubscriptionProgress(pSub); - SSqlObj* pSql = pSub->pSql; + SSqlObj *pSql = pSub->pSql; SSqlRes *pRes = &pSql->res; + SSqlCmd *pCmd = &pSql->cmd; + STableMetaInfo *pTableMetaInfo = tscGetTableMetaInfoFromCmd(pCmd, pCmd->clauseIndex, 0); + SQueryInfo *pQueryInfo = tscGetQueryInfoDetail(pCmd, 0); + if (taosArrayGetSize(pSub->progress) > 0) { // fix crash in single tabel subscription + pQueryInfo->window.skey = ((SSubscriptionProgress*)taosArrayGet(pSub->progress, 0))->key; + } if (pSub->pTimer == NULL) { int64_t duration = taosGetTimestampMs() - pSub->lastConsumeTime; @@ -436,8 +440,6 @@ TAOS_RES *taos_consume(TAOS_SUB *tsub) { tscDebug("table synchronization completed"); } - SQueryInfo* pQueryInfo = tscGetQueryInfoDetail(&pSql->cmd, 0); - uint32_t type = pQueryInfo->type; tscFreeSqlResult(pSql); pRes->numOfRows = 1; @@ -445,7 +447,7 @@ TAOS_RES *taos_consume(TAOS_SUB *tsub) { pSql->cmd.command = TSDB_SQL_SELECT; pQueryInfo->type = type; - tscGetTableMetaInfoFromCmd(&pSql->cmd, 0, 0)->vgroupIndex = 0; + pTableMetaInfo->vgroupIndex = 0; pSql->fp = asyncCallback; pSql->fetchFp = asyncCallback; diff --git a/tests/examples/c/makefile b/tests/examples/c/makefile index f9653c9c9678f572190f2f54ac10c039e8b86a44..7293a22c11d7c6049c220ca0951b5969fa344114 100644 --- a/tests/examples/c/makefile +++ b/tests/examples/c/makefile @@ -4,22 +4,24 @@ ROOT=./ TARGET=exe LFLAGS = '-Wl,-rpath,/usr/local/taos/driver/' -ltaos -lpthread -lm -lrt -CFLAGS = -O3 -g -Wall -Wno-deprecated -fPIC -Wno-unused-result -Wconversion -Wno-char-subscripts -D_REENTRANT -Wno-format -D_REENTRANT -DLINUX -msse4.2 -Wno-unused-function -D_M_X64 \ - -I/usr/local/taos/include -std=gnu99 +CFLAGS = -O3 -g -Wall -Wno-deprecated -fPIC -Wno-unused-result -Wconversion \ + -Wno-char-subscripts -D_REENTRANT -Wno-format -D_REENTRANT -DLINUX \ + -msse4.2 -Wno-unused-function -D_M_X64 -I/usr/local/taos/include -std=gnu99 all: $(TARGET) exe: - gcc $(CFLAGS) ./asyncdemo.c -o $(ROOT)/asyncdemo $(LFLAGS) - gcc $(CFLAGS) ./demo.c -o $(ROOT)/demo $(LFLAGS) - gcc $(CFLAGS) ./prepare.c -o $(ROOT)/prepare $(LFLAGS) - gcc $(CFLAGS) ./stream.c -o $(ROOT)/stream $(LFLAGS) + gcc $(CFLAGS) ./asyncdemo.c -o $(ROOT)asyncdemo $(LFLAGS) + gcc $(CFLAGS) ./demo.c -o $(ROOT)demo $(LFLAGS) + gcc $(CFLAGS) ./prepare.c -o $(ROOT)prepare $(LFLAGS) + gcc $(CFLAGS) ./stream.c -o $(ROOT)stream $(LFLAGS) gcc $(CFLAGS) ./subscribe.c -o $(ROOT)subscribe $(LFLAGS) gcc $(CFLAGS) ./apitest.c -o $(ROOT)apitest $(LFLAGS) clean: - rm $(ROOT)/asyncdemo - rm $(ROOT)/demo - rm $(ROOT)/prepare - rm $(ROOT)/stream - rm $(ROOT)/subscribe + rm $(ROOT)asyncdemo + rm $(ROOT)demo + rm $(ROOT)prepare + rm $(ROOT)stream + rm $(ROOT)subscribe + rm $(ROOT)apitest diff --git a/tests/examples/c/prepare.c b/tests/examples/c/prepare.c index ca0942035ad9f6016993aeb4f7521a9c31dc8175..7a70b744ee8561459318aa456160a54b8c6270a8 100644 --- a/tests/examples/c/prepare.c +++ b/tests/examples/c/prepare.c @@ -195,11 +195,15 @@ int main(int argc, char *argv[]) taos_print_row(temp, row, fields, num_fields); printf("%s\n", temp); } + if (rows == 2) { + printf("two rows are fetched as expectation\n"); + } else { + printf("expect two rows, but %d rows are fetched\n", rows); + } taos_free_result(result); taos_stmt_close(stmt); - - printf("Data has been written, Please press enter to return"); - return getchar(); + + return 0; } diff --git a/tests/examples/c/subscribe.c b/tests/examples/c/subscribe.c index db5ad34ee7064978a888fc0e1cedc62aabc5a6a3..8368af18f7831d9c2cbb7402104b1c59042eda72 100644 --- a/tests/examples/c/subscribe.c +++ b/tests/examples/c/subscribe.c @@ -56,7 +56,7 @@ void check_row_count(int line, TAOS_RES* res, int expected) { void do_query(TAOS* taos, const char* sql) { - TAOS_RES* res = taos_query(taos, "drop database if exists test;"); + TAOS_RES* res = taos_query(taos, sql); taos_free_result(res); }