Hotfix/sangshuduo/td 4918 taosdemo sub afterconsume for develop (#6724)
* [TD-4918]<fix>: taosdemo subscribe endAfterResume. * fix heap use-after-free issue. * fix illegal input value of consume. Co-authored-by: Shuduo Sang <sdsang@taosdata.com>
This commit is contained in:
parent
a583ae2124
commit
adf01a2d6c
|
@ -4398,20 +4398,21 @@ static bool getMetaFromQueryJsonFile(cJSON* root) {
|
||||||
tstrncpy(g_queryInfo.specifiedQueryInfo.sql[j],
|
tstrncpy(g_queryInfo.specifiedQueryInfo.sql[j],
|
||||||
sqlStr->valuestring, MAX_QUERY_SQL_LENGTH);
|
sqlStr->valuestring, MAX_QUERY_SQL_LENGTH);
|
||||||
|
|
||||||
|
// default value is -1, which mean infinite loop
|
||||||
|
g_queryInfo.specifiedQueryInfo.endAfterConsume[j] = -1;
|
||||||
cJSON* endAfterConsume =
|
cJSON* endAfterConsume =
|
||||||
cJSON_GetObjectItem(specifiedQuery, "endAfterConsume");
|
cJSON_GetObjectItem(specifiedQuery, "endAfterConsume");
|
||||||
if (endAfterConsume
|
if (endAfterConsume
|
||||||
&& endAfterConsume->type == cJSON_Number) {
|
&& endAfterConsume->type == cJSON_Number) {
|
||||||
g_queryInfo.specifiedQueryInfo.endAfterConsume[j]
|
g_queryInfo.specifiedQueryInfo.endAfterConsume[j]
|
||||||
= endAfterConsume->valueint;
|
= endAfterConsume->valueint;
|
||||||
} else if (!endAfterConsume) {
|
|
||||||
// default value is -1, which mean infinite loop
|
|
||||||
g_queryInfo.specifiedQueryInfo.endAfterConsume[j] = -1;
|
|
||||||
}
|
}
|
||||||
|
if (g_queryInfo.specifiedQueryInfo.endAfterConsume[j] < -1)
|
||||||
|
g_queryInfo.specifiedQueryInfo.endAfterConsume[j] = -1;
|
||||||
|
|
||||||
|
g_queryInfo.specifiedQueryInfo.resubAfterConsume[j] = -1;
|
||||||
cJSON* resubAfterConsume =
|
cJSON* resubAfterConsume =
|
||||||
cJSON_GetObjectItem(specifiedQuery, "resubAfterConsume");
|
cJSON_GetObjectItem(specifiedQuery, "resubAfterConsume");
|
||||||
g_queryInfo.specifiedQueryInfo.resubAfterConsume[j] = -1;
|
|
||||||
if ((resubAfterConsume)
|
if ((resubAfterConsume)
|
||||||
&& (resubAfterConsume->type == cJSON_Number)
|
&& (resubAfterConsume->type == cJSON_Number)
|
||||||
&& (resubAfterConsume->valueint >= 0)) {
|
&& (resubAfterConsume->valueint >= 0)) {
|
||||||
|
@ -4419,6 +4420,9 @@ static bool getMetaFromQueryJsonFile(cJSON* root) {
|
||||||
= resubAfterConsume->valueint;
|
= resubAfterConsume->valueint;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (g_queryInfo.specifiedQueryInfo.resubAfterConsume[j] < -1)
|
||||||
|
g_queryInfo.specifiedQueryInfo.resubAfterConsume[j] = -1;
|
||||||
|
|
||||||
cJSON *result = cJSON_GetObjectItem(sql, "result");
|
cJSON *result = cJSON_GetObjectItem(sql, "result");
|
||||||
if ((NULL != result) && (result->type == cJSON_String)
|
if ((NULL != result) && (result->type == cJSON_String)
|
||||||
&& (result->valuestring != NULL)) {
|
&& (result->valuestring != NULL)) {
|
||||||
|
@ -4560,26 +4564,30 @@ static bool getMetaFromQueryJsonFile(cJSON* root) {
|
||||||
g_queryInfo.superQueryInfo.subscribeKeepProgress = 0;
|
g_queryInfo.superQueryInfo.subscribeKeepProgress = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// default value is -1, which mean do not resub
|
||||||
|
g_queryInfo.superQueryInfo.endAfterConsume = -1;
|
||||||
cJSON* superEndAfterConsume =
|
cJSON* superEndAfterConsume =
|
||||||
cJSON_GetObjectItem(superQuery, "endAfterConsume");
|
cJSON_GetObjectItem(superQuery, "endAfterConsume");
|
||||||
if (superEndAfterConsume
|
if (superEndAfterConsume
|
||||||
&& superEndAfterConsume->type == cJSON_Number) {
|
&& superEndAfterConsume->type == cJSON_Number) {
|
||||||
g_queryInfo.superQueryInfo.endAfterConsume =
|
g_queryInfo.superQueryInfo.endAfterConsume =
|
||||||
superEndAfterConsume->valueint;
|
superEndAfterConsume->valueint;
|
||||||
} else if (!superEndAfterConsume) {
|
|
||||||
// default value is -1, which mean do not resub
|
|
||||||
g_queryInfo.superQueryInfo.endAfterConsume = -1;
|
|
||||||
}
|
}
|
||||||
|
if (g_queryInfo.superQueryInfo.endAfterConsume < -1)
|
||||||
|
g_queryInfo.superQueryInfo.endAfterConsume = -1;
|
||||||
|
|
||||||
|
// default value is -1, which mean do not resub
|
||||||
|
g_queryInfo.superQueryInfo.resubAfterConsume = -1;
|
||||||
cJSON* superResubAfterConsume =
|
cJSON* superResubAfterConsume =
|
||||||
cJSON_GetObjectItem(superQuery, "resubAfterConsume");
|
cJSON_GetObjectItem(superQuery, "resubAfterConsume");
|
||||||
g_queryInfo.superQueryInfo.resubAfterConsume = -1;
|
|
||||||
if ((superResubAfterConsume)
|
if ((superResubAfterConsume)
|
||||||
&& (superResubAfterConsume->type == cJSON_Number)
|
&& (superResubAfterConsume->type == cJSON_Number)
|
||||||
&& (superResubAfterConsume->valueint >= 0)) {
|
&& (superResubAfterConsume->valueint >= 0)) {
|
||||||
g_queryInfo.superQueryInfo.resubAfterConsume =
|
g_queryInfo.superQueryInfo.resubAfterConsume =
|
||||||
superResubAfterConsume->valueint;
|
superResubAfterConsume->valueint;
|
||||||
}
|
}
|
||||||
|
if (g_queryInfo.superQueryInfo.resubAfterConsume < -1)
|
||||||
|
g_queryInfo.superQueryInfo.resubAfterConsume = -1;
|
||||||
|
|
||||||
// supert table sqls
|
// supert table sqls
|
||||||
cJSON* superSqls = cJSON_GetObjectItem(superQuery, "sqls");
|
cJSON* superSqls = cJSON_GetObjectItem(superQuery, "sqls");
|
||||||
|
|
Loading…
Reference in New Issue