提交 2e25f684 编写于 作者: wmmhello's avatar wmmhello

refactor:fix error data incomplete if dataformat=true

上级 65c77f57
...@@ -148,8 +148,8 @@ static int32_t smlBuildInvalidDataMsg(SSmlMsgBuf* pBuf, const char *msg1, const ...@@ -148,8 +148,8 @@ static int32_t smlBuildInvalidDataMsg(SSmlMsgBuf* pBuf, const char *msg1, const
} }
static int smlCompareKv(const void* p1, const void* p2) { static int smlCompareKv(const void* p1, const void* p2) {
SSmlKv* kv1 = (SSmlKv*)p1; SSmlKv* kv1 = *(SSmlKv**)p1;
SSmlKv* kv2 = (SSmlKv*)p2; SSmlKv* kv2 = *(SSmlKv**)p2;
int32_t kvLen1 = kv1->keyLen; int32_t kvLen1 = kv1->keyLen;
int32_t kvLen2 = kv2->keyLen; int32_t kvLen2 = kv2->keyLen;
int32_t res = strncasecmp(kv1->key, kv2->key, TMIN(kvLen1, kvLen2)); int32_t res = strncasecmp(kv1->key, kv2->key, TMIN(kvLen1, kvLen2));
......
...@@ -1707,7 +1707,7 @@ int32_t smlBindData(void *handle, SArray *tags, SArray *colsFormat, SArray *cols ...@@ -1707,7 +1707,7 @@ int32_t smlBindData(void *handle, SArray *tags, SArray *colsFormat, SArray *cols
} }
// 1. set the parsed value from sql string // 1. set the parsed value from sql string
for (int c = 0; c < spd->numOfBound; ++c) { for (int c = 0, j = 0; c < spd->numOfBound; ++c) {
SSchema* pColSchema = &pSchema[spd->boundColumns[c] - 1]; SSchema* pColSchema = &pSchema[spd->boundColumns[c] - 1];
param.schema = pColSchema; param.schema = pColSchema;
...@@ -1715,20 +1715,14 @@ int32_t smlBindData(void *handle, SArray *tags, SArray *colsFormat, SArray *cols ...@@ -1715,20 +1715,14 @@ int32_t smlBindData(void *handle, SArray *tags, SArray *colsFormat, SArray *cols
SSmlKv *kv = NULL; SSmlKv *kv = NULL;
if(format){ if(format){
do{ if(j < rowDataSize){
if(rowDataSize >= c){ kv = taosArrayGetP(rowData, j);
break; if (rowDataSize != spd->numOfBound && (kv->keyLen != strlen(pColSchema->name) || strncmp(kv->key, pColSchema->name, kv->keyLen) != 0)){
} kv = NULL;
kv = taosArrayGetP(rowData, c); }else{
if (rowDataSize != spd->numOfBound && kv && (kv->keyLen != strlen(pColSchema->name) || strncmp(kv->key, pColSchema->name, kv->keyLen) != 0)){ j++;
MemRowAppend(&pBuf, NULL, 0, &param);
c++;
if(c >= spd->numOfBound) break;
pColSchema = &pSchema[spd->boundColumns[c] - 1];
continue;
} }
break; }
}while(1);
}else{ }else{
void **p =taosHashGet(rowData, pColSchema->name, strlen(pColSchema->name)); void **p =taosHashGet(rowData, pColSchema->name, strlen(pColSchema->name));
if(p) kv = *p; if(p) kv = *p;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册