fix: error in schemaless with same timestamp
This commit is contained in:
parent
c54fc87afe
commit
4481bb4e5c
|
@ -1297,8 +1297,8 @@ static int32_t smlKvTimeArrayCompare(const void* key1, const void* key2) {
|
|||
static int32_t smlKvTimeHashCompare(const void* key1, const void* key2) {
|
||||
SHashObj *s1 = *(SHashObj **)key1;
|
||||
SHashObj *s2 = *(SHashObj **)key2;
|
||||
SSmlKv *kv1 = (SSmlKv *)taosHashGet(s1, TS, TS_LEN);
|
||||
SSmlKv *kv2 = (SSmlKv *)taosHashGet(s2, TS, TS_LEN);
|
||||
SSmlKv *kv1 = *(SSmlKv **)taosHashGet(s1, TS, TS_LEN);
|
||||
SSmlKv *kv2 = *(SSmlKv **)taosHashGet(s2, TS, TS_LEN);
|
||||
ASSERT(kv1->type == TSDB_DATA_TYPE_TIMESTAMP);
|
||||
ASSERT(kv2->type == TSDB_DATA_TYPE_TIMESTAMP);
|
||||
if (kv1->i < kv2->i) {
|
||||
|
@ -1316,17 +1316,17 @@ static int32_t smlDealCols(SSmlTableInfo* oneTable, bool dataFormat, SArray *col
|
|||
if(p == NULL){
|
||||
taosArrayPush(oneTable->cols, &cols);
|
||||
}else{ // to make the sort stable for update data
|
||||
SArray *sa = (SArray *)p;
|
||||
SSmlKv *cur = (SSmlKv*)taosArrayGet(sa, 0);
|
||||
SSmlKv *dCur = (SSmlKv*)taosArrayGet(cols, 0);
|
||||
SArray *sa = *(SArray **)p;
|
||||
SSmlKv *cur = (SSmlKv*)taosArrayGetP(sa, 0);
|
||||
SSmlKv *dCur = (SSmlKv*)taosArrayGetP(cols, 0);
|
||||
if(cur->i > dCur->i){
|
||||
taosArrayInsert(oneTable->cols, TARRAY_ELEM_IDX(oneTable->cols, p), &cols);
|
||||
}else{
|
||||
ASSERT(cur->i == dCur->i);
|
||||
int32_t index = TARRAY_ELEM_IDX(oneTable->cols, p) + 1;
|
||||
for(; index < taosArrayGetSize(oneTable->cols); index++){
|
||||
SArray *tmp = (SArray *)taosArrayGet(oneTable->cols, index);
|
||||
SSmlKv *curTs = (SSmlKv*)taosArrayGet(tmp, 0);
|
||||
SArray *tmp = (SArray *)taosArrayGetP(oneTable->cols, index);
|
||||
SSmlKv *curTs = (SSmlKv*)taosArrayGetP(tmp, 0);
|
||||
if(curTs->i > dCur->i){
|
||||
break;
|
||||
}
|
||||
|
@ -1351,22 +1351,22 @@ static int32_t smlDealCols(SSmlTableInfo* oneTable, bool dataFormat, SArray *col
|
|||
if(p == NULL){
|
||||
taosArrayPush(oneTable->cols, &kvHash);
|
||||
}else{ // to make the sort stable for update data
|
||||
SHashObj *sa = (SHashObj *)p;
|
||||
SSmlKv *cur = (SSmlKv *)taosHashGet(sa, TS, TS_LEN);
|
||||
SSmlKv *dCur = (SSmlKv*)taosArrayGet(cols, 0);
|
||||
SHashObj *sa = *(SHashObj **)p;
|
||||
SSmlKv *cur = *(SSmlKv **)taosHashGet(sa, TS, TS_LEN);
|
||||
SSmlKv *dCur = (SSmlKv*)taosArrayGetP(cols, 0);
|
||||
if(cur->i > dCur->i){
|
||||
taosArrayInsert(oneTable->cols, TARRAY_ELEM_IDX(oneTable->cols, p), &cols);
|
||||
}else{
|
||||
ASSERT(cur->i == dCur->i);
|
||||
int32_t index = TARRAY_ELEM_IDX(oneTable->cols, p) + 1;
|
||||
for(; index < taosArrayGetSize(oneTable->cols); index++){
|
||||
SHashObj *tmp = (SHashObj *)taosArrayGet(oneTable->cols, index);
|
||||
SSmlKv *curTs = (SSmlKv *)taosHashGet(tmp, TS, TS_LEN);
|
||||
SHashObj *tmp = (SHashObj *)taosArrayGetP(oneTable->cols, index);
|
||||
SSmlKv *curTs = *(SSmlKv **)taosHashGet(tmp, TS, TS_LEN);
|
||||
if(curTs->i > dCur->i){
|
||||
break;
|
||||
}
|
||||
}
|
||||
taosArrayInsert(oneTable->cols, index, &cols);
|
||||
taosArrayInsert(oneTable->cols, index, &kvHash);
|
||||
}
|
||||
}
|
||||
return TSDB_CODE_SUCCESS;
|
||||
|
|
|
@ -1260,4 +1260,28 @@ TEST(testCase, sml_16368_Test) {
|
|||
pRes = taos_schemaless_insert(taos, (char**)sql, sizeof(sql)/sizeof(sql[0]), TSDB_SML_JSON_PROTOCOL, TSDB_SML_TIMESTAMP_MICRO_SECONDS);
|
||||
ASSERT_EQ(taos_errno(pRes), 0);
|
||||
taos_free_result(pRes);
|
||||
}*/
|
||||
}
|
||||
|
||||
TEST(testCase, sml_dup_time_Test) {
|
||||
TAOS *taos = taos_connect("localhost", "root", "taosdata", NULL, 0);
|
||||
ASSERT_NE(taos, nullptr);
|
||||
|
||||
TAOS_RES* pRes = taos_query(taos, "create database if not exists dup_time schemaless 1");
|
||||
taos_free_result(pRes);
|
||||
|
||||
const char *sql[] = {
|
||||
//"test_ms,t0=t c0=f 1626006833641",
|
||||
"ubzlsr,id=qmtcvgd,t0=t,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"binaryTagValue\",t8=L\"ncharTagValue\" c0=false,c1=1i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"xcxvwjvf\",c8=L\"ncharColValue\",c9=7u64 1626006833639000000",
|
||||
"ubzlsr,id=qmtcvgd,t0=t,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"binaryTagValue\",t8=L\"ncharTagValue\" c0=T,c1=2i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"fixrzcuq\",c8=L\"ncharColValue\",c9=7u64 1626006833639000000",
|
||||
"ubzlsr,id=qmtcvgd,t0=t,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"binaryTagValue\",t8=L\"ncharTagValue\" c0=t,c1=3i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"iupzdqub\",c8=L\"ncharColValue\",c9=7u64 1626006833639000000",
|
||||
"ubzlsr,id=qmtcvgd,t0=t,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"binaryTagValue\",t8=L\"ncharTagValue\" c0=t,c1=4i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"yvvtzzof\",c8=L\"ncharColValue\",c9=7u64 1626006833639000000",
|
||||
"ubzlsr,id=qmtcvgd,t0=t,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"binaryTagValue\",t8=L\"ncharTagValue\" c0=t,c1=5i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"vbxpilkj\",c8=L\"ncharColValue\",c9=7u64 1626006833639000000"
|
||||
};
|
||||
pRes = taos_query(taos, "use dup_time");
|
||||
taos_free_result(pRes);
|
||||
|
||||
pRes = taos_schemaless_insert(taos, (char**)sql, sizeof(sql)/sizeof(sql[0]), TSDB_SML_LINE_PROTOCOL, 0);
|
||||
ASSERT_EQ(taos_errno(pRes), 0);
|
||||
taos_free_result(pRes);
|
||||
}
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue