[td-225] refactor code and fix error sim script.
This commit is contained in:
parent
fe91d3d978
commit
9d652bed82
|
@ -16,16 +16,16 @@
|
||||||
#ifndef TDENGINE_TAST_H
|
#ifndef TDENGINE_TAST_H
|
||||||
#define TDENGINE_TAST_H
|
#define TDENGINE_TAST_H
|
||||||
|
|
||||||
#include <tbuffer.h>
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <tskiplist.h>
|
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
|
|
||||||
#include "taosmsg.h"
|
#include "taosmsg.h"
|
||||||
#include "taosdef.h"
|
#include "taosdef.h"
|
||||||
|
#include "tskiplist.h"
|
||||||
|
#include "tbuffer.h"
|
||||||
#include "tvariant.h"
|
#include "tvariant.h"
|
||||||
|
|
||||||
struct tExprNode;
|
struct tExprNode;
|
||||||
|
@ -75,10 +75,6 @@ typedef struct tExprNode {
|
||||||
};
|
};
|
||||||
} tExprNode;
|
} tExprNode;
|
||||||
|
|
||||||
void tSQLBinaryExprFromString(tExprNode **pExpr, SSchema *pSchema, int32_t numOfCols, char *src, int32_t len);
|
|
||||||
|
|
||||||
void tSQLBinaryExprToString(tExprNode *pExpr, char *dst, int32_t *len);
|
|
||||||
|
|
||||||
void tExprTreeDestroy(tExprNode **pExprs, void (*fp)(void*));
|
void tExprTreeDestroy(tExprNode **pExprs, void (*fp)(void*));
|
||||||
|
|
||||||
void tExprTreeTraverse(tExprNode *pExpr, SSkipList *pSkipList, SArray *result, SExprTraverseSupp *param);
|
void tExprTreeTraverse(tExprNode *pExpr, SSkipList *pSkipList, SArray *result, SExprTraverseSupp *param);
|
||||||
|
@ -86,12 +82,9 @@ void tExprTreeTraverse(tExprNode *pExpr, SSkipList *pSkipList, SArray *result, S
|
||||||
void tExprTreeCalcTraverse(tExprNode *pExprs, int32_t numOfRows, char *pOutput, void *param, int32_t order,
|
void tExprTreeCalcTraverse(tExprNode *pExprs, int32_t numOfRows, char *pOutput, void *param, int32_t order,
|
||||||
char *(*cb)(void *, const char*, int32_t));
|
char *(*cb)(void *, const char*, int32_t));
|
||||||
|
|
||||||
// todo refactor: remove it
|
|
||||||
void tSQLBinaryExprTrv(tExprNode *pExprs, SArray* res);
|
|
||||||
|
|
||||||
uint8_t getBinaryExprOptr(SSQLToken *pToken);
|
uint8_t getBinaryExprOptr(SSQLToken *pToken);
|
||||||
|
|
||||||
void tExprNodeDestroy(tExprNode *pNode, void (*fp)(void *));
|
void tExprNodeDestroy(tExprNode *pNode, void (*fp)(void *));
|
||||||
void exprTreeToBinary(SBufferWriter* bw, tExprNode* pExprTree);
|
void exprTreeToBinary(SBufferWriter* bw, tExprNode* pExprTree);
|
||||||
|
|
||||||
tExprNode* exprTreeFromBinary(const void* data, size_t size);
|
tExprNode* exprTreeFromBinary(const void* data, size_t size);
|
||||||
|
|
|
@ -327,104 +327,6 @@ static tExprNode *createSyntaxTree(SSchema *pSchema, int32_t numOfCols, char *st
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void tSQLBinaryExprFromString(tExprNode **pExpr, SSchema *pSchema, int32_t numOfCols, char *src, int32_t len) {
|
|
||||||
*pExpr = NULL;
|
|
||||||
|
|
||||||
if (len <= 0 || src == NULL || pSchema == NULL || numOfCols <= 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t pos = 0;
|
|
||||||
|
|
||||||
*pExpr = createSyntaxTree(pSchema, numOfCols, src, &pos);
|
|
||||||
if (*pExpr != NULL) {
|
|
||||||
assert((*pExpr)->nodeType == TSQL_NODE_EXPR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t tSQLBinaryExprToStringImpl(tExprNode *pNode, char *dst, uint8_t type) {
|
|
||||||
int32_t len = 0;
|
|
||||||
if (type == TSQL_NODE_EXPR) {
|
|
||||||
*dst = '(';
|
|
||||||
tSQLBinaryExprToString(pNode, dst + 1, &len);
|
|
||||||
len += 2;
|
|
||||||
*(dst + len - 1) = ')';
|
|
||||||
} else if (type == TSQL_NODE_COL) {
|
|
||||||
len = sprintf(dst, "%s", pNode->pSchema->name);
|
|
||||||
} else {
|
|
||||||
len = tVariantToString(pNode->pVal, dst);
|
|
||||||
}
|
|
||||||
return len;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO REFACTOR WITH SQL PARSER
|
|
||||||
static char *tSQLOptrToString(uint8_t optr, char *dst) {
|
|
||||||
switch (optr) {
|
|
||||||
case TSDB_RELATION_LESS: {
|
|
||||||
*dst = '<';
|
|
||||||
dst += 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TSDB_RELATION_LESS_EQUAL: {
|
|
||||||
*dst = '<';
|
|
||||||
*(dst + 1) = '=';
|
|
||||||
dst += 2;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TSDB_RELATION_EQUAL: {
|
|
||||||
*dst = '=';
|
|
||||||
dst += 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TSDB_RELATION_GREATER: {
|
|
||||||
*dst = '>';
|
|
||||||
dst += 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TSDB_RELATION_GREATER_EQUAL: {
|
|
||||||
*dst = '>';
|
|
||||||
*(dst + 1) = '=';
|
|
||||||
dst += 2;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TSDB_RELATION_NOT_EQUAL: {
|
|
||||||
*dst = '<';
|
|
||||||
*(dst + 1) = '>';
|
|
||||||
dst += 2;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TSDB_RELATION_OR: {
|
|
||||||
memcpy(dst, "or", 2);
|
|
||||||
dst += 2;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TSDB_RELATION_AND: {
|
|
||||||
memcpy(dst, "and", 3);
|
|
||||||
dst += 3;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:;
|
|
||||||
}
|
|
||||||
return dst;
|
|
||||||
}
|
|
||||||
|
|
||||||
void tSQLBinaryExprToString(tExprNode *pExpr, char *dst, int32_t *len) {
|
|
||||||
if (pExpr == NULL) {
|
|
||||||
*dst = 0;
|
|
||||||
*len = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t lhs = tSQLBinaryExprToStringImpl(pExpr->_node.pLeft, dst, pExpr->_node.pLeft->nodeType);
|
|
||||||
dst += lhs;
|
|
||||||
*len = lhs;
|
|
||||||
|
|
||||||
char *start = tSQLOptrToString(pExpr->_node.optr, dst);
|
|
||||||
*len += (start - dst);
|
|
||||||
|
|
||||||
*len += tSQLBinaryExprToStringImpl(pExpr->_node.pRight, start, pExpr->_node.pRight->nodeType);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void UNUSED_FUNC destroySyntaxTree(tExprNode *pNode) { tExprNodeDestroy(pNode, NULL); }
|
static void UNUSED_FUNC destroySyntaxTree(tExprNode *pNode) { tExprNodeDestroy(pNode, NULL); }
|
||||||
|
|
||||||
void tExprNodeDestroy(tExprNode *pNode, void (*fp)(void *)) {
|
void tExprNodeDestroy(tExprNode *pNode, void (*fp)(void *)) {
|
||||||
|
@ -976,27 +878,27 @@ void tExprTreeCalcTraverse(tExprNode *pExprs, int32_t numOfRows, char *pOutput,
|
||||||
free(pRightOutput);
|
free(pRightOutput);
|
||||||
}
|
}
|
||||||
|
|
||||||
void tSQLBinaryExprTrv(tExprNode *pExprs, SArray* res) {
|
//void tSQLBinaryExprTrv(tExprNode *pExprs, SArray* res) {
|
||||||
if (pExprs == NULL) {
|
// if (pExprs == NULL) {
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
tExprNode *pLeft = pExprs->_node.pLeft;
|
// tExprNode *pLeft = pExprs->_node.pLeft;
|
||||||
tExprNode *pRight = pExprs->_node.pRight;
|
// tExprNode *pRight = pExprs->_node.pRight;
|
||||||
|
//
|
||||||
// recursive traverse left child branch
|
// // recursive traverse left child branch
|
||||||
if (pLeft->nodeType == TSQL_NODE_EXPR) {
|
// if (pLeft->nodeType == TSQL_NODE_EXPR) {
|
||||||
tSQLBinaryExprTrv(pLeft, res);
|
// tSQLBinaryExprTrv(pLeft, res);
|
||||||
} else if (pLeft->nodeType == TSQL_NODE_COL) {
|
// } else if (pLeft->nodeType == TSQL_NODE_COL) {
|
||||||
taosArrayPush(res, &pLeft->pSchema->colId);
|
// taosArrayPush(res, &pLeft->pSchema->colId);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
if (pRight->nodeType == TSQL_NODE_EXPR) {
|
// if (pRight->nodeType == TSQL_NODE_EXPR) {
|
||||||
tSQLBinaryExprTrv(pRight, res);
|
// tSQLBinaryExprTrv(pRight, res);
|
||||||
} else if (pRight->nodeType == TSQL_NODE_COL) {
|
// } else if (pRight->nodeType == TSQL_NODE_COL) {
|
||||||
taosArrayPush(res, &pRight->pSchema->colId);
|
// taosArrayPush(res, &pRight->pSchema->colId);
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
static void exprTreeToBinaryImpl(SBufferWriter* bw, tExprNode* expr) {
|
static void exprTreeToBinaryImpl(SBufferWriter* bw, tExprNode* expr) {
|
||||||
tbufWriteUint8(bw, expr->nodeType);
|
tbufWriteUint8(bw, expr->nodeType);
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
#include "exception.h"
|
#include "exception.h"
|
||||||
|
|
||||||
#include "../../../query/inc/qast.h" // todo move to common module
|
#include "../../../query/inc/qast.h" // todo move to common module
|
||||||
#include "../../../query/inc/tlosertree.h" // todo move to util module
|
#include "tlosertree.h"
|
||||||
#include "tsdb.h"
|
#include "tsdb.h"
|
||||||
#include "tsdbMain.h"
|
#include "tsdbMain.h"
|
||||||
|
|
||||||
|
@ -577,6 +577,8 @@ static SArray* getDefaultLoadColumns(STsdbQueryHandle* pQueryHandle, bool loadTS
|
||||||
|
|
||||||
static bool doLoadFileDataBlock(STsdbQueryHandle* pQueryHandle, SCompBlock* pBlock, STableCheckInfo* pCheckInfo) {
|
static bool doLoadFileDataBlock(STsdbQueryHandle* pQueryHandle, SCompBlock* pBlock, STableCheckInfo* pCheckInfo) {
|
||||||
STsdbRepo *pRepo = pQueryHandle->pTsdb;
|
STsdbRepo *pRepo = pQueryHandle->pTsdb;
|
||||||
|
|
||||||
|
// TODO refactor
|
||||||
SCompData* data = calloc(1, sizeof(SCompData) + sizeof(SCompCol) * pBlock->numOfCols);
|
SCompData* data = calloc(1, sizeof(SCompData) + sizeof(SCompCol) * pBlock->numOfCols);
|
||||||
|
|
||||||
data->numOfCols = pBlock->numOfCols;
|
data->numOfCols = pBlock->numOfCols;
|
||||||
|
@ -606,8 +608,9 @@ static bool doLoadFileDataBlock(STsdbQueryHandle* pQueryHandle, SCompBlock* pBlo
|
||||||
}
|
}
|
||||||
|
|
||||||
SDataCols* pCols = pQueryHandle->rhelper.pDataCols[0];
|
SDataCols* pCols = pQueryHandle->rhelper.pDataCols[0];
|
||||||
assert(pCols->numOfRows != 0);
|
assert(pCols->numOfRows != 0 && pCols->numOfRows <= pBlock->numOfRows);
|
||||||
|
|
||||||
|
pBlock->numOfRows = pCols->numOfRows;
|
||||||
taosArrayDestroy(sa);
|
taosArrayDestroy(sa);
|
||||||
tfree(data);
|
tfree(data);
|
||||||
|
|
||||||
|
|
|
@ -13,10 +13,10 @@
|
||||||
* 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 "tlosertree.h"
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
#include "taosmsg.h"
|
#include "taosmsg.h"
|
||||||
#include "tlosertree.h"
|
#include "tulog.h"
|
||||||
#include "queryLog.h"
|
|
||||||
|
|
||||||
// set initial value for loser tree
|
// set initial value for loser tree
|
||||||
void tLoserTreeInit(SLoserTreeInfo* pTree) {
|
void tLoserTreeInit(SLoserTreeInfo* pTree) {
|
||||||
|
@ -45,7 +45,7 @@ uint32_t tLoserTreeCreate(SLoserTreeInfo** pTree, int32_t numOfEntries, void* pa
|
||||||
|
|
||||||
*pTree = (SLoserTreeInfo*)calloc(1, sizeof(SLoserTreeInfo) + sizeof(SLoserTreeNode) * totalEntries);
|
*pTree = (SLoserTreeInfo*)calloc(1, sizeof(SLoserTreeInfo) + sizeof(SLoserTreeNode) * totalEntries);
|
||||||
if ((*pTree) == NULL) {
|
if ((*pTree) == NULL) {
|
||||||
qError("allocate memory for loser-tree failed. reason:%s", strerror(errno));
|
uError("allocate memory for loser-tree failed. reason:%s", strerror(errno));
|
||||||
return TSDB_CODE_QRY_OUT_OF_MEMORY;
|
return TSDB_CODE_QRY_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
|
@ -448,15 +448,14 @@ sql insert into um2 using m2 tags(9) values(1000001, 10)(2000000, 20);
|
||||||
sql_error select count(*) from m1,m2 where m1.a=m2.a and m1.ts=m2.ts;
|
sql_error select count(*) from m1,m2 where m1.a=m2.a and m1.ts=m2.ts;
|
||||||
|
|
||||||
#empty table join test, add for no result join test
|
#empty table join test, add for no result join test
|
||||||
create database ux1;
|
sql create database ux1;
|
||||||
use ux1;
|
sql use ux1;
|
||||||
create table m1(ts timestamp, k int) tags(a binary(12), b int);
|
sql create table m1(ts timestamp, k int) tags(a binary(12), b int);
|
||||||
create table tm0 using m1 tags('abc', 1);
|
sql create table tm0 using m1 tags('abc', 1);
|
||||||
|
sql create table m2(ts timestamp, k int) tags(a int, b binary(12));
|
||||||
create table m2(ts timestamp, k int) tags(a int, b binary(12));
|
sql create table tm2 using m2 tags(2, 'abc');
|
||||||
create table tm2 using m2 tags(2, 'abc');
|
sql select count(*) from tm0, tm2 where tm0.ts=tm2.ts;
|
||||||
select count(*) from tm0, tm2 where tm0.ts=tm2.ts;
|
sql select count(*) from m1, m2 where m1.ts=m2.ts and m1.b=m2.a
|
||||||
select count(*) from m1, m2 where m1.ts=m2.ts and m1.b=m2.a
|
sql drop database ux1;
|
||||||
drop database ux1;
|
|
||||||
|
|
||||||
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
Loading…
Reference in New Issue