Merge branch '3.0' of https://github.com/taosdata/TDengine into feat/row_refact
This commit is contained in:
commit
e907d58d78
|
@ -373,9 +373,6 @@ static FORCE_INLINE void ncharToVar(char* buf, SScalarParam* pOut, int32_t rowIn
|
||||||
|
|
||||||
//TODO opt performance, tmp is not needed.
|
//TODO opt performance, tmp is not needed.
|
||||||
int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, int32_t inType, int32_t outType) {
|
int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, int32_t inType, int32_t outType) {
|
||||||
int32_t bufSize = pIn->columnData->info.bytes;
|
|
||||||
char *tmp = taosMemoryMalloc(bufSize + VARSTR_HEADER_SIZE);
|
|
||||||
|
|
||||||
bool vton = false;
|
bool vton = false;
|
||||||
|
|
||||||
_bufConverteFunc func = NULL;
|
_bufConverteFunc func = NULL;
|
||||||
|
@ -423,6 +420,12 @@ int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, in
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
int32_t bufSize = pIn->columnData->info.bytes;
|
||||||
|
char *tmp = taosMemoryMalloc(varDataTLen(data));
|
||||||
|
if(!tmp){
|
||||||
|
sclError("out of memory in vectorConvertFromVarData");
|
||||||
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
if (vton) {
|
if (vton) {
|
||||||
memcpy(tmp, data, varDataTLen(data));
|
memcpy(tmp, data, varDataTLen(data));
|
||||||
} else {
|
} else {
|
||||||
|
@ -444,9 +447,9 @@ int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, in
|
||||||
}
|
}
|
||||||
|
|
||||||
(*func)(tmp, pOut, i);
|
(*func)(tmp, pOut, i);
|
||||||
|
taosMemoryFreeClear(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
taosMemoryFreeClear(tmp);
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1674,6 +1677,14 @@ void vectorNotNull(SScalarParam* pLeft, SScalarParam* pRight, SScalarParam *pOut
|
||||||
|
|
||||||
void vectorIsTrue(SScalarParam* pLeft, SScalarParam* pRight, SScalarParam *pOut, int32_t _ord) {
|
void vectorIsTrue(SScalarParam* pLeft, SScalarParam* pRight, SScalarParam *pOut, int32_t _ord) {
|
||||||
vectorConvertImpl(pLeft, pOut);
|
vectorConvertImpl(pLeft, pOut);
|
||||||
|
for(int32_t i = 0; i < pOut->numOfRows; ++i) {
|
||||||
|
if(colDataIsNull_s(pOut->columnData, i)) {
|
||||||
|
int8_t v = 0;
|
||||||
|
colDataAppendInt8(pOut->columnData, i, &v);
|
||||||
|
colDataSetNotNull_f(pOut->columnData->nullbitmap, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pOut->columnData->hasNull = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
STagVal getJsonValue(char *json, char *key, bool *isExist) {
|
STagVal getJsonValue(char *json, char *key, bool *isExist) {
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
* This program is free software: you can use, redistribute, and/or modify
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
* it under the terms of the GNU Affero General Public License, version 3
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
* or later ("AGPL"), as published by the Free Software Foundation.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
@ -1328,7 +1328,7 @@ TEST(columnTest, json_column_logic_op) {
|
||||||
printf("--------------------json null---null {1, 8, 2, 2, 3, 0, 0, 0, 0}------------------\n");
|
printf("--------------------json null---null {1, 8, 2, 2, 3, 0, 0, 0, 0}------------------\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, DBL_MAX, false, false, false, false};
|
bool eRes2[len+len1] = {false, false, false, false, false, false, true, false, false, 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], false);
|
makeCalculate(row, key, TSDB_DATA_TYPE_INT, &input[i], eRes2[i], op[i], false);
|
||||||
}
|
}
|
||||||
|
@ -1456,7 +1456,7 @@ TEST(columnTest, json_column_logic_op) {
|
||||||
printf("---------------------json not exist-- NULL {1, 8, 2, 2, 3, 0, 0, 0, 0}------------------\n");
|
printf("---------------------json not exist-- NULL {1, 8, 2, 2, 3, 0, 0, 0, 0}------------------\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 eRes9[len+len1] = {false, false, false, false, false, false, true, false, DBL_MAX, false, false, false, false};
|
bool eRes9[len+len1] = {false, false, false, false, false, false, true, false, false, 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], eRes9[i], op[i], false);
|
makeCalculate(row, key, TSDB_DATA_TYPE_INT, &input[i], eRes9[i], op[i], false);
|
||||||
}
|
}
|
||||||
|
@ -2040,7 +2040,7 @@ void scltMakeDataBlock(SScalarParam **pInput, int32_t type, void *pVal, int32_t
|
||||||
colDataAppend(input->columnData, i, (const char*) pVal, false);
|
colDataAppend(input->columnData, i, (const char*) pVal, false);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// memset(input->data, 0, num * bytes);
|
// memset(input->data, 0, num * bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
*pInput = input;
|
*pInput = input;
|
||||||
|
|
|
@ -109,9 +109,6 @@ class TDTestCase:
|
||||||
# print("============== STEP 3 ===== query table")
|
# print("============== STEP 3 ===== query table")
|
||||||
# # test error syntax
|
# # test error syntax
|
||||||
tdSql.error("select * from jsons1 where jtag->tag1='beijing'")
|
tdSql.error("select * from jsons1 where jtag->tag1='beijing'")
|
||||||
#tdSql.error("select * from jsons1 where jtag->'location'")
|
|
||||||
#tdSql.error("select * from jsons1 where jtag->''")
|
|
||||||
#tdSql.error("select * from jsons1 where jtag->''=9")
|
|
||||||
tdSql.error("select -> from jsons1")
|
tdSql.error("select -> from jsons1")
|
||||||
tdSql.error("select * from jsons1 where contains")
|
tdSql.error("select * from jsons1 where contains")
|
||||||
tdSql.error("select * from jsons1 where jtag->")
|
tdSql.error("select * from jsons1 where jtag->")
|
||||||
|
@ -341,6 +338,13 @@ class TDTestCase:
|
||||||
# tdSql.checkRows(3)
|
# tdSql.checkRows(3)
|
||||||
# tdSql.query("select * from jsons1 where jtag->'tag1' between 'femail' and 'beijing'")
|
# tdSql.query("select * from jsons1 where jtag->'tag1' between 'femail' and 'beijing'")
|
||||||
# tdSql.checkRows(2)
|
# tdSql.checkRows(2)
|
||||||
|
|
||||||
|
# test is true
|
||||||
|
tdSql.query("select * from jsons1 where jtag->'location'")
|
||||||
|
tdSql.checkRows(0)
|
||||||
|
tdSql.query("select * from jsons1 where jtag->'tag1'")
|
||||||
|
tdSql.checkRows(3)
|
||||||
|
|
||||||
#
|
#
|
||||||
# # test with tbname/normal column
|
# # test with tbname/normal column
|
||||||
tdSql.query("select * from jsons1 where tbname = 'jsons1_1'")
|
tdSql.query("select * from jsons1 where tbname = 'jsons1_1'")
|
||||||
|
|
Loading…
Reference in New Issue