stmt query
This commit is contained in:
parent
0a1e3f144c
commit
33bd196ff0
|
@ -224,7 +224,7 @@ static int32_t calcConstList(SNodeList* pList) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool isEmptyResultCond(SNode** pCond) {
|
static bool isEmptyResultCond(SNode** pCond) {
|
||||||
if (QUERY_NODE_VALUE != nodeType(*pCond)) {
|
if (NULL == *pCond || QUERY_NODE_VALUE != nodeType(*pCond)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (((SValueNode*)*pCond)->datum.b) {
|
if (((SValueNode*)*pCond)->datum.b) {
|
||||||
|
|
|
@ -20,6 +20,11 @@ typedef struct {
|
||||||
bool enclose;
|
bool enclose;
|
||||||
} OperInfo;
|
} OperInfo;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char* funcName;
|
||||||
|
int32_t paramNum;
|
||||||
|
} FuncInfo;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
BP_BIND_TAG = 1,
|
BP_BIND_TAG = 1,
|
||||||
BP_BIND_COL,
|
BP_BIND_COL,
|
||||||
|
@ -44,6 +49,13 @@ OperInfo operInfo[] = {
|
||||||
int32_t operatorList[] = {0, 1, 2, 3, 4, 5, 6, 7};
|
int32_t operatorList[] = {0, 1, 2, 3, 4, 5, 6, 7};
|
||||||
int32_t varoperatorList[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
|
int32_t varoperatorList[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
|
||||||
|
|
||||||
|
FuncInfo funcInfo[] = {
|
||||||
|
{"count", 1},
|
||||||
|
{"sum", 1},
|
||||||
|
{"min", 1},
|
||||||
|
{"sin", 1},
|
||||||
|
};
|
||||||
|
|
||||||
char *bpStbPrefix = "st";
|
char *bpStbPrefix = "st";
|
||||||
char *bpTbPrefix = "t";
|
char *bpTbPrefix = "t";
|
||||||
int32_t bpDefaultStbId = 1;
|
int32_t bpDefaultStbId = 1;
|
||||||
|
@ -154,7 +166,7 @@ CaseCfg gCase[] = {
|
||||||
{"insert:AUTO1-FULL", tListLen(fullColList), fullColList, TTYPE_INSERT, true, true, insertAUTOTest1, 10, 10, 2, 0, 0, 0, 1, -1},
|
{"insert:AUTO1-FULL", tListLen(fullColList), fullColList, TTYPE_INSERT, true, true, insertAUTOTest1, 10, 10, 2, 0, 0, 0, 1, -1},
|
||||||
|
|
||||||
{"query:SUBT-COLUMN", tListLen(fullColList), fullColList, TTYPE_QUERY, false, false, queryColumnTest, 10, 10, 1, 3, 0, 0, 1, 2},
|
{"query:SUBT-COLUMN", tListLen(fullColList), fullColList, TTYPE_QUERY, false, false, queryColumnTest, 10, 10, 1, 3, 0, 0, 1, 2},
|
||||||
{"query:SUBT-MISC", tListLen(fullColList), fullColList, TTYPE_QUERY, false, false, queryMiscTest, 10, 10, 1, 3, 0, 0, 1, 2},
|
{"query:SUBT-MISC", tListLen(fullColList), fullColList, TTYPE_QUERY, false, false, queryMiscTest, 2, 10, 1, 3, 0, 0, 1, 2},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -179,6 +191,8 @@ typedef struct {
|
||||||
int32_t* bindTagTypeList;
|
int32_t* bindTagTypeList;
|
||||||
int32_t optrIdxListNum;
|
int32_t optrIdxListNum;
|
||||||
int32_t* optrIdxList;
|
int32_t* optrIdxList;
|
||||||
|
int32_t funcIdxListNum;
|
||||||
|
int32_t* funcIdxList;
|
||||||
int32_t runTimes;
|
int32_t runTimes;
|
||||||
int32_t caseIdx; // static case idx
|
int32_t caseIdx; // static case idx
|
||||||
int32_t caseNum; // num in static case list
|
int32_t caseNum; // num in static case list
|
||||||
|
@ -186,7 +200,7 @@ typedef struct {
|
||||||
int32_t caseRunNum; // total run case num
|
int32_t caseRunNum; // total run case num
|
||||||
} CaseCtrl;
|
} CaseCtrl;
|
||||||
|
|
||||||
#if 1
|
#if 0
|
||||||
CaseCtrl gCaseCtrl = { // default
|
CaseCtrl gCaseCtrl = { // default
|
||||||
.bindNullNum = 0,
|
.bindNullNum = 0,
|
||||||
.printCreateTblSql = false,
|
.printCreateTblSql = false,
|
||||||
|
@ -203,6 +217,8 @@ CaseCtrl gCaseCtrl = { // default
|
||||||
.bindTagTypeList = NULL,
|
.bindTagTypeList = NULL,
|
||||||
.optrIdxListNum = 0,
|
.optrIdxListNum = 0,
|
||||||
.optrIdxList = NULL,
|
.optrIdxList = NULL,
|
||||||
|
.funcIdxListNum = 0,
|
||||||
|
.funcIdxList = NULL,
|
||||||
.checkParamNum = false,
|
.checkParamNum = false,
|
||||||
.printRes = false,
|
.printRes = false,
|
||||||
.runTimes = 0,
|
.runTimes = 0,
|
||||||
|
@ -241,7 +257,7 @@ CaseCtrl gCaseCtrl = {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
#if 1
|
||||||
CaseCtrl gCaseCtrl = { // query case with specified col&oper
|
CaseCtrl gCaseCtrl = { // query case with specified col&oper
|
||||||
.bindNullNum = 0,
|
.bindNullNum = 0,
|
||||||
.printCreateTblSql = false,
|
.printCreateTblSql = false,
|
||||||
|
@ -255,14 +271,14 @@ CaseCtrl gCaseCtrl = { // query case with specified col&oper
|
||||||
.optrIdxListNum = 0,
|
.optrIdxListNum = 0,
|
||||||
.optrIdxList = NULL,
|
.optrIdxList = NULL,
|
||||||
.checkParamNum = false,
|
.checkParamNum = false,
|
||||||
.printRes = false,
|
.printRes = true,
|
||||||
.runTimes = 0,
|
.runTimes = 0,
|
||||||
.caseRunIdx = -1,
|
.caseRunIdx = -1,
|
||||||
.optrIdxListNum = 0,
|
.optrIdxListNum = 0,
|
||||||
.optrIdxList = NULL,
|
.optrIdxList = NULL,
|
||||||
.bindColTypeNum = 0,
|
.bindColTypeNum = 0,
|
||||||
.bindColTypeList = NULL,
|
.bindColTypeList = NULL,
|
||||||
.caseIdx = 23,
|
.caseIdx = 24,
|
||||||
.caseNum = 1,
|
.caseNum = 1,
|
||||||
.caseRunNum = 1,
|
.caseRunNum = 1,
|
||||||
};
|
};
|
||||||
|
@ -513,11 +529,83 @@ void bpAppendOperatorParam(BindData *data, int32_t *len, int32_t dataType, int32
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
printf("!!!invalid paramNum:%d\n", pInfo->paramNum);
|
printf("!!!invalid operator paramNum:%d\n", pInfo->paramNum);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void bpAppendFunctionParam(BindData *data, int32_t *len, int32_t dataType, int32_t idx) {
|
||||||
|
FuncInfo *pInfo = NULL;
|
||||||
|
|
||||||
|
if (gCaseCtrl.funcIdxListNum > 0) {
|
||||||
|
pInfo = &funcInfo[gCaseCtrl.funcIdxList[idx]];
|
||||||
|
} else {
|
||||||
|
pInfo = &funcInfo[rand() % tListLen(funcInfo)];
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (pInfo->paramNum) {
|
||||||
|
case 1:
|
||||||
|
*len += sprintf(data->sql + *len, " %s(?)", pInfo->funcName);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printf("!!!invalid function paramNum:%d\n", pInfo->paramNum);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int32_t bpAppendColumnName(BindData *data, int32_t type, int32_t len) {
|
||||||
|
switch (type) {
|
||||||
|
case TSDB_DATA_TYPE_BOOL:
|
||||||
|
return sprintf(data->sql + len, "booldata");
|
||||||
|
break;
|
||||||
|
case TSDB_DATA_TYPE_TINYINT:
|
||||||
|
return sprintf(data->sql + len, "tinydata");
|
||||||
|
break;
|
||||||
|
case TSDB_DATA_TYPE_SMALLINT:
|
||||||
|
return sprintf(data->sql + len, "smalldata");
|
||||||
|
break;
|
||||||
|
case TSDB_DATA_TYPE_INT:
|
||||||
|
return sprintf(data->sql + len, "intdata");
|
||||||
|
break;
|
||||||
|
case TSDB_DATA_TYPE_BIGINT:
|
||||||
|
return sprintf(data->sql + len, "bigdata");
|
||||||
|
break;
|
||||||
|
case TSDB_DATA_TYPE_FLOAT:
|
||||||
|
return sprintf(data->sql + len, "floatdata");
|
||||||
|
break;
|
||||||
|
case TSDB_DATA_TYPE_DOUBLE:
|
||||||
|
return sprintf(data->sql + len, "doubledata");
|
||||||
|
break;
|
||||||
|
case TSDB_DATA_TYPE_VARCHAR:
|
||||||
|
return sprintf(data->sql + len, "binarydata");
|
||||||
|
break;
|
||||||
|
case TSDB_DATA_TYPE_TIMESTAMP:
|
||||||
|
return sprintf(data->sql + len, "ts");
|
||||||
|
break;
|
||||||
|
case TSDB_DATA_TYPE_NCHAR:
|
||||||
|
return sprintf(data->sql + len, "nchardata");
|
||||||
|
break;
|
||||||
|
case TSDB_DATA_TYPE_UTINYINT:
|
||||||
|
return sprintf(data->sql + len, "utinydata");
|
||||||
|
break;
|
||||||
|
case TSDB_DATA_TYPE_USMALLINT:
|
||||||
|
return sprintf(data->sql + len, "usmalldata");
|
||||||
|
break;
|
||||||
|
case TSDB_DATA_TYPE_UINT:
|
||||||
|
return sprintf(data->sql + len, "uintdata");
|
||||||
|
break;
|
||||||
|
case TSDB_DATA_TYPE_UBIGINT:
|
||||||
|
return sprintf(data->sql + len, "ubigdata");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printf("!!!invalid col type:%d", type);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void generateQueryCondSQL(BindData *data, int32_t tblIdx) {
|
void generateQueryCondSQL(BindData *data, int32_t tblIdx) {
|
||||||
int32_t len = sprintf(data->sql, "select * from %s%d where ", bpTbPrefix, tblIdx);
|
int32_t len = sprintf(data->sql, "select * from %s%d where ", bpTbPrefix, tblIdx);
|
||||||
if (!gCurCase->fullCol) {
|
if (!gCurCase->fullCol) {
|
||||||
|
@ -525,53 +613,7 @@ void generateQueryCondSQL(BindData *data, int32_t tblIdx) {
|
||||||
if (c) {
|
if (c) {
|
||||||
len += sprintf(data->sql + len, " and ");
|
len += sprintf(data->sql + len, " and ");
|
||||||
}
|
}
|
||||||
switch (data->pBind[c].buffer_type) {
|
len += bpAppendColumnName(data, data->pBind[c].buffer_type, len);
|
||||||
case TSDB_DATA_TYPE_BOOL:
|
|
||||||
len += sprintf(data->sql + len, "booldata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_TINYINT:
|
|
||||||
len += sprintf(data->sql + len, "tinydata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_SMALLINT:
|
|
||||||
len += sprintf(data->sql + len, "smalldata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_INT:
|
|
||||||
len += sprintf(data->sql + len, "intdata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_BIGINT:
|
|
||||||
len += sprintf(data->sql + len, "bigdata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_FLOAT:
|
|
||||||
len += sprintf(data->sql + len, "floatdata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_DOUBLE:
|
|
||||||
len += sprintf(data->sql + len, "doubledata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_VARCHAR:
|
|
||||||
len += sprintf(data->sql + len, "binarydata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_TIMESTAMP:
|
|
||||||
len += sprintf(data->sql + len, "ts");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_NCHAR:
|
|
||||||
len += sprintf(data->sql + len, "nchardata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_UTINYINT:
|
|
||||||
len += sprintf(data->sql + len, "utinydata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_USMALLINT:
|
|
||||||
len += sprintf(data->sql + len, "usmalldata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_UINT:
|
|
||||||
len += sprintf(data->sql + len, "uintdata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_UBIGINT:
|
|
||||||
len += sprintf(data->sql + len, "ubigdata");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
printf("!!!invalid col type:%d", data->pBind[c].buffer_type);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
bpAppendOperatorParam(data, &len, data->pBind[c].buffer_type, c);
|
bpAppendOperatorParam(data, &len, data->pBind[c].buffer_type, c);
|
||||||
}
|
}
|
||||||
|
@ -582,64 +624,50 @@ void generateQueryCondSQL(BindData *data, int32_t tblIdx) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void bpGenerateConstInOpSQL(BindData *data, int32_t tblIdx) {
|
||||||
|
int32_t len = 0;
|
||||||
|
len = sprintf(data->sql, "select ");
|
||||||
|
|
||||||
void generateQueryMiscSQL(BindData *data, int32_t tblIdx) {
|
|
||||||
int32_t len = sprintf(data->sql, "select * from %s%d where ", bpTbPrefix, tblIdx);
|
|
||||||
if (!gCurCase->fullCol) {
|
|
||||||
for (int c = 0; c < gCurCase->bindColNum; ++c) {
|
for (int c = 0; c < gCurCase->bindColNum; ++c) {
|
||||||
if (c) {
|
if (c) {
|
||||||
len += sprintf(data->sql + len, " and ");
|
len += sprintf(data->sql + len, ", ");
|
||||||
}
|
|
||||||
switch (data->pBind[c].buffer_type) {
|
|
||||||
case TSDB_DATA_TYPE_BOOL:
|
|
||||||
len += sprintf(data->sql + len, "booldata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_TINYINT:
|
|
||||||
len += sprintf(data->sql + len, "tinydata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_SMALLINT:
|
|
||||||
len += sprintf(data->sql + len, "smalldata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_INT:
|
|
||||||
len += sprintf(data->sql + len, "intdata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_BIGINT:
|
|
||||||
len += sprintf(data->sql + len, "bigdata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_FLOAT:
|
|
||||||
len += sprintf(data->sql + len, "floatdata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_DOUBLE:
|
|
||||||
len += sprintf(data->sql + len, "doubledata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_VARCHAR:
|
|
||||||
len += sprintf(data->sql + len, "binarydata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_TIMESTAMP:
|
|
||||||
len += sprintf(data->sql + len, "ts");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_NCHAR:
|
|
||||||
len += sprintf(data->sql + len, "nchardata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_UTINYINT:
|
|
||||||
len += sprintf(data->sql + len, "utinydata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_USMALLINT:
|
|
||||||
len += sprintf(data->sql + len, "usmalldata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_UINT:
|
|
||||||
len += sprintf(data->sql + len, "uintdata");
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_UBIGINT:
|
|
||||||
len += sprintf(data->sql + len, "ubigdata");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
printf("!!!invalid col type:%d", data->pBind[c].buffer_type);
|
|
||||||
exit(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
len += bpAppendColumnName(data, data->pBind[c].buffer_type, len);
|
||||||
|
|
||||||
bpAppendOperatorParam(data, &len, data->pBind[c].buffer_type, c);
|
bpAppendOperatorParam(data, &len, data->pBind[c].buffer_type, c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
len += sprintf(data->sql + len, " from %s%d", bpTbPrefix, tblIdx);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void bpGenerateConstInFuncSQL(BindData *data, int32_t tblIdx) {
|
||||||
|
int32_t len = 0;
|
||||||
|
len = sprintf(data->sql, "select ");
|
||||||
|
|
||||||
|
for (int c = 0; c < gCurCase->bindColNum; ++c) {
|
||||||
|
if (c) {
|
||||||
|
len += sprintf(data->sql + len, ", ");
|
||||||
|
}
|
||||||
|
|
||||||
|
bpAppendFunctionParam(data, &len, data->pBind[c].buffer_type, c);
|
||||||
|
}
|
||||||
|
|
||||||
|
len += sprintf(data->sql + len, " from %s%d", bpTbPrefix, tblIdx);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void generateQueryMiscSQL(BindData *data, int32_t tblIdx) {
|
||||||
|
switch(tblIdx) {
|
||||||
|
case 0:
|
||||||
|
bpGenerateConstInOpSQL(data, tblIdx);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
//TODO FILL TEST
|
||||||
|
default:
|
||||||
|
bpGenerateConstInFuncSQL(data, tblIdx);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gCaseCtrl.printStmtSql) {
|
if (gCaseCtrl.printStmtSql) {
|
||||||
|
|
Loading…
Reference in New Issue