From 655652ad1312b0b88b91da970e43d7171a0e7299 Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Thu, 21 Sep 2023 18:46:04 +0800 Subject: [PATCH] fix: set tbname for every one --- src/taosdump.c | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/src/taosdump.c b/src/taosdump.c index 97f5ed99..cc2387e3 100644 --- a/src/taosdump.c +++ b/src/taosdump.c @@ -6969,8 +6969,10 @@ static int64_t dumpInAvroDataImpl( avro_value_get_current_branch(&tbname_value, &tbname_branch); size_t tbname_size; + char * avroName = NULL; avro_value_get_string(&tbname_branch, - (const char **)&tbName, &tbname_size); + (const char **)&avroName, &tbname_size); + tbName = strdup(avroName); } else { tbName = malloc(TSDB_TABLE_NAME_LEN+1); ASSERT(tbName); @@ -7040,7 +7042,7 @@ static int64_t dumpInAvroDataImpl( "reason: %s\n", escapedTbName, taos_stmt_errstr(stmt)); free(escapedTbName); - freeTbNameIfLooseMode(tbName); + free(tbName); tbName = NULL; continue; } @@ -7061,8 +7063,28 @@ static int64_t dumpInAvroDataImpl( #ifdef WEBSOCKET } #endif - } + } } // tbName +#ifndef TD_VER_COMPATIBLE_3_0_0_0 + else { + // 2.6 need call taos_stmt_set_tbname every loop + const int escapedTbNameLen = TSDB_DB_NAME_LEN + TSDB_TABLE_NAME_LEN + 3; + char *escapedTbName = calloc(1, escapedTbNameLen); + snprintf(escapedTbName, escapedTbNameLen, "%s%s%s", + g_escapeChar, tbName, g_escapeChar); + + if (0 != taos_stmt_set_tbname(stmt, escapedTbName)) { + errorPrint("Failed to execute taos_stmt_set_tbname(%s)." + "reason: %s\n", + escapedTbName, taos_stmt_errstr(stmt)); + free(escapedTbName); + freeTbNameIfLooseMode(tbName); + tbName = NULL; + continue; + } + free(escapedTbName); + } +#endif debugPrint("%s() LN%d, count: %"PRId64"\n", __func__, __LINE__, count); @@ -7343,7 +7365,7 @@ static int64_t dumpInAvroDataImpl( } } - freeTbNameIfLooseMode(tbName); + free(tbName); avro_value_decref(&value); avro_value_iface_decref(value_class); tfree(bindArray);