Merge pull request #22008 from taosdata/fix/TS-3648
fix: fix interp fill value unsigned type not being handled
This commit is contained in:
commit
39a58c354d
|
@ -315,7 +315,7 @@ static bool genInterpolationResult(STimeSliceOperatorInfo* pSliceInfo, SExprSupp
|
|||
if (pDst->info.type == TSDB_DATA_TYPE_FLOAT) {
|
||||
float v = 0;
|
||||
if (!IS_VAR_DATA_TYPE(pVar->nType)) {
|
||||
GET_TYPED_DATA(v, float, pVar->nType, &pVar->i);
|
||||
GET_TYPED_DATA(v, float, pVar->nType, &pVar->f);
|
||||
} else {
|
||||
v = taosStr2Float(varDataVal(pVar->pz), NULL);
|
||||
}
|
||||
|
@ -323,7 +323,7 @@ static bool genInterpolationResult(STimeSliceOperatorInfo* pSliceInfo, SExprSupp
|
|||
} else if (pDst->info.type == TSDB_DATA_TYPE_DOUBLE) {
|
||||
double v = 0;
|
||||
if (!IS_VAR_DATA_TYPE(pVar->nType)) {
|
||||
GET_TYPED_DATA(v, double, pVar->nType, &pVar->i);
|
||||
GET_TYPED_DATA(v, double, pVar->nType, &pVar->d);
|
||||
} else {
|
||||
v = taosStr2Double(varDataVal(pVar->pz), NULL);
|
||||
}
|
||||
|
@ -333,7 +333,15 @@ static bool genInterpolationResult(STimeSliceOperatorInfo* pSliceInfo, SExprSupp
|
|||
if (!IS_VAR_DATA_TYPE(pVar->nType)) {
|
||||
GET_TYPED_DATA(v, int64_t, pVar->nType, &pVar->i);
|
||||
} else {
|
||||
v = taosStr2int64(varDataVal(pVar->pz));
|
||||
v = taosStr2Int64(varDataVal(pVar->pz), NULL, 10);
|
||||
}
|
||||
colDataSetVal(pDst, rows, (char*)&v, false);
|
||||
} else if (IS_UNSIGNED_NUMERIC_TYPE(pDst->info.type)) {
|
||||
uint64_t v = 0;
|
||||
if (!IS_VAR_DATA_TYPE(pVar->nType)) {
|
||||
GET_TYPED_DATA(v, uint64_t, pVar->nType, &pVar->u);
|
||||
} else {
|
||||
v = taosStr2UInt64(varDataVal(pVar->pz), NULL, 10);
|
||||
}
|
||||
colDataSetVal(pDst, rows, (char*)&v, false);
|
||||
} else if (IS_BOOLEAN_TYPE(pDst->info.type)) {
|
||||
|
|
|
@ -44,7 +44,7 @@ class TDTestCase:
|
|||
|
||||
tdSql.execute(
|
||||
f'''create table if not exists {dbname}.{tbname}
|
||||
(ts timestamp, c0 tinyint, c1 smallint, c2 int, c3 bigint, c4 double, c5 float, c6 bool, c7 varchar(10), c8 nchar(10))
|
||||
(ts timestamp, c0 tinyint, c1 smallint, c2 int, c3 bigint, c4 double, c5 float, c6 bool, c7 varchar(10), c8 nchar(10), c9 tinyint unsigned, c10 smallint unsigned, c11 int unsigned, c12 bigint unsigned)
|
||||
'''
|
||||
)
|
||||
|
||||
|
@ -52,9 +52,9 @@ class TDTestCase:
|
|||
|
||||
tdSql.execute(f"use db")
|
||||
|
||||
tdSql.execute(f"insert into {dbname}.{tbname} values ('2020-02-01 00:00:05', 5, 5, 5, 5, 5.0, 5.0, true, 'varchar', 'nchar')")
|
||||
tdSql.execute(f"insert into {dbname}.{tbname} values ('2020-02-01 00:00:10', 10, 10, 10, 10, 10.0, 10.0, true, 'varchar', 'nchar')")
|
||||
tdSql.execute(f"insert into {dbname}.{tbname} values ('2020-02-01 00:00:15', 15, 15, 15, 15, 15.0, 15.0, true, 'varchar', 'nchar')")
|
||||
tdSql.execute(f"insert into {dbname}.{tbname} values ('2020-02-01 00:00:05', 5, 5, 5, 5, 5.0, 5.0, true, 'varchar', 'nchar', 5, 5, 5, 5)")
|
||||
tdSql.execute(f"insert into {dbname}.{tbname} values ('2020-02-01 00:00:10', 10, 10, 10, 10, 10.0, 10.0, true, 'varchar', 'nchar', 10, 10, 10, 10)")
|
||||
tdSql.execute(f"insert into {dbname}.{tbname} values ('2020-02-01 00:00:15', 15, 15, 15, 15, 15.0, 15.0, true, 'varchar', 'nchar', 15, 15, 15, 15)")
|
||||
|
||||
tdLog.printNoPrefix("==========step3:fill null")
|
||||
|
||||
|
@ -129,21 +129,71 @@ class TDTestCase:
|
|||
tdLog.printNoPrefix("==========step4:fill value")
|
||||
|
||||
## {. . .}
|
||||
tdSql.query(f"select interp(c0) from {dbname}.{tbname} range('2020-02-01 00:00:04', '2020-02-01 00:00:16') every(1s) fill(value, 1)")
|
||||
col_list = {'c0', 'c1', 'c2', 'c3', 'c9', 'c10', 'c11', 'c12'}
|
||||
for col in col_list:
|
||||
tdSql.query(f"select interp({col}) from {dbname}.{tbname} range('2020-02-01 00:00:04', '2020-02-01 00:00:16') every(1s) fill(value, 1)")
|
||||
tdSql.checkRows(13)
|
||||
tdSql.checkData(0, 0, 1)
|
||||
tdSql.checkData(1, 0, 5)
|
||||
tdSql.checkData(2, 0, 1)
|
||||
tdSql.checkData(3, 0, 1)
|
||||
tdSql.checkData(4, 0, 1)
|
||||
tdSql.checkData(5, 0, 1)
|
||||
tdSql.checkData(6, 0, 10)
|
||||
tdSql.checkData(7, 0, 1)
|
||||
tdSql.checkData(8, 0, 1)
|
||||
tdSql.checkData(9, 0, 1)
|
||||
tdSql.checkData(10, 0, 1)
|
||||
tdSql.checkData(11, 0, 15)
|
||||
tdSql.checkData(12, 0, 1)
|
||||
|
||||
tdSql.query(f"select interp(c4) from {dbname}.{tbname} range('2020-02-01 00:00:04', '2020-02-01 00:00:16') every(1s) fill(value, 1)")
|
||||
tdSql.checkRows(13)
|
||||
tdSql.checkData(0, 0, 1)
|
||||
tdSql.checkData(1, 0, 5)
|
||||
tdSql.checkData(2, 0, 1)
|
||||
tdSql.checkData(3, 0, 1)
|
||||
tdSql.checkData(4, 0, 1)
|
||||
tdSql.checkData(5, 0, 1)
|
||||
tdSql.checkData(6, 0, 10)
|
||||
tdSql.checkData(7, 0, 1)
|
||||
tdSql.checkData(8, 0, 1)
|
||||
tdSql.checkData(9, 0, 1)
|
||||
tdSql.checkData(10, 0, 1)
|
||||
tdSql.checkData(11, 0, 15)
|
||||
tdSql.checkData(12, 0, 1)
|
||||
tdSql.checkData(0, 0, 1.0)
|
||||
tdSql.checkData(1, 0, 5.0)
|
||||
tdSql.checkData(2, 0, 1.0)
|
||||
tdSql.checkData(3, 0, 1.0)
|
||||
tdSql.checkData(4, 0, 1.0)
|
||||
tdSql.checkData(5, 0, 1.0)
|
||||
tdSql.checkData(6, 0, 10.0)
|
||||
tdSql.checkData(7, 0, 1.0)
|
||||
tdSql.checkData(8, 0, 1.0)
|
||||
tdSql.checkData(9, 0, 1.0)
|
||||
tdSql.checkData(10, 0, 1.0)
|
||||
tdSql.checkData(11, 0, 15.0)
|
||||
tdSql.checkData(12, 0, 1.0)
|
||||
|
||||
tdSql.query(f"select interp(c5) from {dbname}.{tbname} range('2020-02-01 00:00:04', '2020-02-01 00:00:16') every(1s) fill(value, 1)")
|
||||
tdSql.checkRows(13)
|
||||
tdSql.checkData(0, 0, 1.0)
|
||||
tdSql.checkData(1, 0, 5.0)
|
||||
tdSql.checkData(2, 0, 1.0)
|
||||
tdSql.checkData(3, 0, 1.0)
|
||||
tdSql.checkData(4, 0, 1.0)
|
||||
tdSql.checkData(5, 0, 1.0)
|
||||
tdSql.checkData(6, 0, 10.0)
|
||||
tdSql.checkData(7, 0, 1.0)
|
||||
tdSql.checkData(8, 0, 1.0)
|
||||
tdSql.checkData(9, 0, 1.0)
|
||||
tdSql.checkData(10, 0, 1.0)
|
||||
tdSql.checkData(11, 0, 15.0)
|
||||
tdSql.checkData(12, 0, 1.0)
|
||||
|
||||
tdSql.query(f"select interp(c6) from {dbname}.{tbname} range('2020-02-01 00:00:04', '2020-02-01 00:00:16') every(1s) fill(value, 1)")
|
||||
tdSql.checkRows(13)
|
||||
tdSql.checkData(0, 0, True)
|
||||
tdSql.checkData(1, 0, True)
|
||||
tdSql.checkData(2, 0, True)
|
||||
tdSql.checkData(3, 0, True)
|
||||
tdSql.checkData(4, 0, True)
|
||||
tdSql.checkData(5, 0, True)
|
||||
tdSql.checkData(6, 0, True)
|
||||
tdSql.checkData(7, 0, True)
|
||||
tdSql.checkData(8, 0, True)
|
||||
tdSql.checkData(9, 0, True)
|
||||
tdSql.checkData(10, 0, True)
|
||||
tdSql.checkData(11, 0, True)
|
||||
tdSql.checkData(12, 0, True)
|
||||
|
||||
## {} ...
|
||||
tdSql.query(f"select interp(c0) from {dbname}.{tbname} range('2020-02-01 00:00:01', '2020-02-01 00:00:04') every(1s) fill(value, 1)")
|
||||
|
|
Loading…
Reference in New Issue