提交 84fd45c3 编写于 作者: wmmhello's avatar wmmhello

feat: add sort/group logic for json

上级 9e1cd759
...@@ -393,7 +393,7 @@ int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, in ...@@ -393,7 +393,7 @@ int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, in
pOut->numOfRows = pIn->numOfRows; pOut->numOfRows = pIn->numOfRows;
for (int32_t i = 0; i < pIn->numOfRows; ++i) { for (int32_t i = 0; i < pIn->numOfRows; ++i) {
if (colDataIsNull_s(pIn->columnData, i)) { if (IS_HELPER_NULL(pIn->columnData, i)) {
colDataAppendNULL(pOut->columnData, i); colDataAppendNULL(pOut->columnData, i);
continue; continue;
} }
...@@ -402,8 +402,7 @@ int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, in ...@@ -402,8 +402,7 @@ int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, in
int32_t convertType = inType; int32_t convertType = inType;
if(inType == TSDB_DATA_TYPE_JSON){ if(inType == TSDB_DATA_TYPE_JSON){
if(*data == TSDB_DATA_TYPE_NULL) { if(*data == TSDB_DATA_TYPE_NULL) {
colDataAppendNULL(pOut->columnData, i); ASSERT(0);
continue;
} }
else if(*data == TSDB_DATA_TYPE_NCHAR) { else if(*data == TSDB_DATA_TYPE_NCHAR) {
data += CHAR_BYTES; data += CHAR_BYTES;
......
...@@ -1227,7 +1227,7 @@ TEST(columnTest, json_column_logic_op) { ...@@ -1227,7 +1227,7 @@ TEST(columnTest, json_column_logic_op) {
printf("--------------------json null---------------------\n"); printf("--------------------json null---------------------\n");
key = "k3"; // (null is true) return NULL, so use DBL_MAX represent NULL key = "k3"; // (null is true) return NULL, so use DBL_MAX represent NULL
double eRes2[len+len1] = {false, false, false, false, false, false, true, false, false, false, false, false, false}; double eRes2[len+len1] = {false, false, false, false, false, false, true, false, DBL_MAX, false, false, false, false};
for(int i = 0; i < len; i++){ for(int i = 0; i < len; i++){
makeCalculate(row, key, TSDB_DATA_TYPE_INT, &input[i], eRes2[i], op[i]); makeCalculate(row, key, TSDB_DATA_TYPE_INT, &input[i], eRes2[i], op[i]);
} }
...@@ -1279,7 +1279,7 @@ TEST(columnTest, json_column_logic_op) { ...@@ -1279,7 +1279,7 @@ TEST(columnTest, json_column_logic_op) {
printf("---------------------json not exist--------------------\n"); printf("---------------------json not exist--------------------\n");
key = "k10"; // (NULL is true) return NULL, so use DBL_MAX represent NULL key = "k10"; // (NULL is true) return NULL, so use DBL_MAX represent NULL
double eRes10[len+len1] = {false, false, false, false, false, false, true, false, false, false, false, false, false}; double eRes10[len+len1] = {false, false, false, false, false, false, true, false, DBL_MAX, false, false, false, false};
for(int i = 0; i < len; i++){ for(int i = 0; i < len; i++){
makeCalculate(row, key, TSDB_DATA_TYPE_INT, &input[i], eRes10[i], op[i]); makeCalculate(row, key, TSDB_DATA_TYPE_INT, &input[i], eRes10[i], op[i]);
} }
......
...@@ -389,8 +389,8 @@ class TDTestCase: ...@@ -389,8 +389,8 @@ class TDTestCase:
tdSql.checkData(2, 1, "11.000000000") tdSql.checkData(2, 1, "11.000000000")
tdSql.checkData(5, 0, 1) tdSql.checkData(5, 0, 1)
tdSql.checkData(5, 1, "false") tdSql.checkData(5, 1, "false")
# tdSql.checkData(6, 0, 1) tdSql.checkData(6, 0, 1)
# tdSql.checkData(6, 1, "null") tdSql.checkData(6, 1, "null")
tdSql.checkData(7, 0, 2) tdSql.checkData(7, 0, 2)
tdSql.checkData(7, 1, None) tdSql.checkData(7, 1, None)
...@@ -409,7 +409,7 @@ class TDTestCase: ...@@ -409,7 +409,7 @@ class TDTestCase:
tdSql.query("select stddev(dataint),jtag->'tag1' from jsons1 group by jtag->'tag1' order by jtag->'tag1'") tdSql.query("select stddev(dataint),jtag->'tag1' from jsons1 group by jtag->'tag1' order by jtag->'tag1'")
tdSql.checkRows(8) tdSql.checkRows(8)
tdSql.checkData(0, 0, 10) tdSql.checkData(0, 0, 10)
# tdSql.checkData(0, 1, None) tdSql.checkData(0, 1, None)
tdSql.checkData(4, 0, 0) tdSql.checkData(4, 0, 0)
tdSql.checkData(4, 1, "5.000000000") tdSql.checkData(4, 1, "5.000000000")
tdSql.checkData(7, 0, 11) tdSql.checkData(7, 0, 11)
...@@ -424,10 +424,10 @@ class TDTestCase: ...@@ -424,10 +424,10 @@ class TDTestCase:
# test top/bottom with group by json tag # test top/bottom with group by json tag
tdSql.query("select top(dataint,2),jtag->'tag1' from jsons1 group by jtag->'tag1' order by jtag->'tag1'") tdSql.query("select top(dataint,2),jtag->'tag1' from jsons1 group by jtag->'tag1' order by jtag->'tag1'")
tdSql.checkRows(11) tdSql.checkRows(11)
tdSql.checkData(0, 0, 24)
tdSql.checkData(0, 1, None)
tdSql.checkData(3, 0, 3) tdSql.checkData(3, 0, 3)
tdSql.checkData(3, 1, "false") tdSql.checkData(3, 1, "false")
# tdSql.checkData(3, 0, 24)
# tdSql.checkData(3, 1, None)
tdSql.checkData(10, 0, 23) tdSql.checkData(10, 0, 23)
tdSql.checkData(10, 1, '"femail"') tdSql.checkData(10, 1, '"femail"')
...@@ -436,7 +436,7 @@ class TDTestCase: ...@@ -436,7 +436,7 @@ class TDTestCase:
# tdSql.checkRows(2) # tdSql.checkRows(2)
# subquery with json tag # subquery with json tag
tdSql.query("select * from (select jtag, dataint from jsons1)") tdSql.query("select * from (select jtag, dataint from jsons1) order by dataint")
tdSql.checkRows(11) tdSql.checkRows(11)
tdSql.checkData(1, 1, 1) tdSql.checkData(1, 1, 1)
tdSql.checkData(2, 0, '{"tag1":5,"tag2":"beijing"}') tdSql.checkData(2, 0, '{"tag1":5,"tag2":"beijing"}')
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册