remove the compiler warnings
This commit is contained in:
parent
68072018b8
commit
085c2296c5
|
@ -69,7 +69,8 @@ for (int32_t i = 0; i < (ctx)->tagInfo.numOfTagCols; ++i) { \
|
|||
} \
|
||||
} while(0);
|
||||
|
||||
void noop(SQLFunctionCtx *UNUSED_PARAM(pCtx)) {}
|
||||
void noop1(SQLFunctionCtx *UNUSED_PARAM(pCtx)) {}
|
||||
void noop2(SQLFunctionCtx *UNUSED_PARAM(pCtx), int32_t UNUSED_PARAM(index)) {}
|
||||
|
||||
typedef struct tValuePair {
|
||||
tVariant v;
|
||||
|
@ -507,10 +508,10 @@ static void do_sum(SQLFunctionCtx *pCtx) {
|
|||
assert(pCtx->size >= pCtx->preAggVals.numOfNull);
|
||||
|
||||
if (pCtx->inputType >= TSDB_DATA_TYPE_TINYINT && pCtx->inputType <= TSDB_DATA_TYPE_BIGINT) {
|
||||
int64_t *retVal = pCtx->aOutputBuf;
|
||||
int64_t *retVal = (int64_t*) pCtx->aOutputBuf;
|
||||
*retVal += pCtx->preAggVals.sum;
|
||||
} else if (pCtx->inputType == TSDB_DATA_TYPE_DOUBLE || pCtx->inputType == TSDB_DATA_TYPE_FLOAT) {
|
||||
double *retVal = pCtx->aOutputBuf;
|
||||
double *retVal = (double*) pCtx->aOutputBuf;
|
||||
*retVal += GET_DOUBLE_VAL(&(pCtx->preAggVals.sum));
|
||||
}
|
||||
} else { // computing based on the true data block
|
||||
|
@ -518,7 +519,7 @@ static void do_sum(SQLFunctionCtx *pCtx) {
|
|||
notNullElems = 0;
|
||||
|
||||
if (pCtx->inputType >= TSDB_DATA_TYPE_TINYINT && pCtx->inputType <= TSDB_DATA_TYPE_BIGINT) {
|
||||
int64_t *retVal = pCtx->aOutputBuf;
|
||||
int64_t *retVal = (int64_t*) pCtx->aOutputBuf;
|
||||
|
||||
if (pCtx->inputType == TSDB_DATA_TYPE_TINYINT) {
|
||||
LIST_ADD_N(*retVal, pCtx, pData, int8_t, notNullElems, pCtx->inputType);
|
||||
|
@ -530,10 +531,10 @@ static void do_sum(SQLFunctionCtx *pCtx) {
|
|||
LIST_ADD_N(*retVal, pCtx, pData, int64_t, notNullElems, pCtx->inputType);
|
||||
}
|
||||
} else if (pCtx->inputType == TSDB_DATA_TYPE_DOUBLE) {
|
||||
double *retVal = pCtx->aOutputBuf;
|
||||
double *retVal = (double*) pCtx->aOutputBuf;
|
||||
LIST_ADD_N(*retVal, pCtx, pData, double, notNullElems, pCtx->inputType);
|
||||
} else if (pCtx->inputType == TSDB_DATA_TYPE_FLOAT) {
|
||||
double *retVal = pCtx->aOutputBuf;
|
||||
double *retVal = (double*) pCtx->aOutputBuf;
|
||||
LIST_ADD_N(*retVal, pCtx, pData, float, notNullElems, pCtx->inputType);
|
||||
}
|
||||
}
|
||||
|
@ -553,7 +554,7 @@ static void do_sum_f(SQLFunctionCtx *pCtx, int32_t index) {
|
|||
}
|
||||
|
||||
SET_VAL(pCtx, 1, 1);
|
||||
int64_t *res = pCtx->aOutputBuf;
|
||||
int64_t *res = (int64_t*) pCtx->aOutputBuf;
|
||||
|
||||
if (pCtx->inputType == TSDB_DATA_TYPE_TINYINT) {
|
||||
*res += GET_INT8_VAL(pData);
|
||||
|
@ -564,10 +565,10 @@ static void do_sum_f(SQLFunctionCtx *pCtx, int32_t index) {
|
|||
} else if (pCtx->inputType == TSDB_DATA_TYPE_BIGINT) {
|
||||
*res += GET_INT64_VAL(pData);
|
||||
} else if (pCtx->inputType == TSDB_DATA_TYPE_DOUBLE) {
|
||||
double *retVal = pCtx->aOutputBuf;
|
||||
double *retVal = (double*) pCtx->aOutputBuf;
|
||||
*retVal += GET_DOUBLE_VAL(pData);
|
||||
} else if (pCtx->inputType == TSDB_DATA_TYPE_FLOAT) {
|
||||
double *retVal = pCtx->aOutputBuf;
|
||||
double *retVal = (double*) pCtx->aOutputBuf;
|
||||
*retVal += GET_FLOAT_VAL(pData);
|
||||
}
|
||||
|
||||
|
@ -694,7 +695,7 @@ static int32_t first_dist_data_req_info(SQLFunctionCtx *pCtx, TSKEY start, TSKEY
|
|||
return BLK_DATA_NO_NEEDED;
|
||||
}
|
||||
|
||||
SFirstLastInfo *pInfo = (pCtx->aOutputBuf + pCtx->inputBytes);
|
||||
SFirstLastInfo *pInfo = (SFirstLastInfo*) (pCtx->aOutputBuf + pCtx->inputBytes);
|
||||
if (pInfo->hasResult != DATA_SET_FLAG) {
|
||||
return BLK_DATA_ALL_NEEDED;
|
||||
} else { // data in current block is not earlier than current result
|
||||
|
@ -708,7 +709,7 @@ static int32_t last_dist_data_req_info(SQLFunctionCtx *pCtx, TSKEY start, TSKEY
|
|||
return BLK_DATA_NO_NEEDED;
|
||||
}
|
||||
|
||||
SFirstLastInfo *pInfo = (pCtx->aOutputBuf + pCtx->inputBytes);
|
||||
SFirstLastInfo *pInfo = (SFirstLastInfo*) (pCtx->aOutputBuf + pCtx->inputBytes);
|
||||
if (pInfo->hasResult != DATA_SET_FLAG) {
|
||||
return BLK_DATA_ALL_NEEDED;
|
||||
} else {
|
||||
|
@ -842,7 +843,7 @@ static void avg_func_merge(SQLFunctionCtx *pCtx) {
|
|||
static void avg_func_second_merge(SQLFunctionCtx *pCtx) {
|
||||
SResultInfo *pResInfo = GET_RES_INFO(pCtx);
|
||||
|
||||
double *sum = pCtx->aOutputBuf;
|
||||
double *sum = (double*) pCtx->aOutputBuf;
|
||||
char * input = GET_INPUT_CHAR(pCtx);
|
||||
|
||||
for (int32_t i = 0; i < pCtx->size; ++i, input += pCtx->inputBytes) {
|
||||
|
@ -967,10 +968,10 @@ static void minMax_function(SQLFunctionCtx *pCtx, char *pOutput, int32_t isMin,
|
|||
TYPED_LOOPCHECK_N(int16_t, pOutput, p, pCtx, pCtx->inputType, isMin, *notNullElems);
|
||||
} else if (pCtx->inputType == TSDB_DATA_TYPE_INT) {
|
||||
int32_t *pData = p;
|
||||
int32_t *retVal = pOutput;
|
||||
int32_t *retVal = (int32_t*) pOutput;
|
||||
|
||||
for (int32_t i = 0; i < pCtx->size; ++i) {
|
||||
if (pCtx->hasNull && isNull(&pData[i], pCtx->inputType)) {
|
||||
if (pCtx->hasNull && isNull((const char*)&pData[i], pCtx->inputType)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -1215,27 +1216,27 @@ static void minMax_function_f(SQLFunctionCtx *pCtx, int32_t index, int32_t isMin
|
|||
|
||||
UPDATE_DATA(pCtx, *output, i, num, isMin, key);
|
||||
} else if (pCtx->inputType == TSDB_DATA_TYPE_SMALLINT) {
|
||||
int16_t *output = pCtx->aOutputBuf;
|
||||
int16_t *output = (int16_t*) pCtx->aOutputBuf;
|
||||
int16_t i = GET_INT16_VAL(pData);
|
||||
|
||||
UPDATE_DATA(pCtx, *output, i, num, isMin, key);
|
||||
} else if (pCtx->inputType == TSDB_DATA_TYPE_INT) {
|
||||
int32_t *output = pCtx->aOutputBuf;
|
||||
int32_t *output = (int32_t*) pCtx->aOutputBuf;
|
||||
int32_t i = GET_INT32_VAL(pData);
|
||||
|
||||
UPDATE_DATA(pCtx, *output, i, num, isMin, key);
|
||||
} else if (pCtx->inputType == TSDB_DATA_TYPE_BIGINT) {
|
||||
int64_t *output = pCtx->aOutputBuf;
|
||||
int64_t *output = (int64_t*) pCtx->aOutputBuf;
|
||||
int64_t i = GET_INT64_VAL(pData);
|
||||
|
||||
UPDATE_DATA(pCtx, *output, i, num, isMin, key);
|
||||
} else if (pCtx->inputType == TSDB_DATA_TYPE_FLOAT) {
|
||||
float *output = pCtx->aOutputBuf;
|
||||
float *output = (float*) pCtx->aOutputBuf;
|
||||
float i = GET_FLOAT_VAL(pData);
|
||||
|
||||
UPDATE_DATA(pCtx, *output, i, num, isMin, key);
|
||||
} else if (pCtx->inputType == TSDB_DATA_TYPE_DOUBLE) {
|
||||
double *output = pCtx->aOutputBuf;
|
||||
double *output = (double*) pCtx->aOutputBuf;
|
||||
double i = GET_DOUBLE_VAL(pData);
|
||||
|
||||
UPDATE_DATA(pCtx, *output, i, num, isMin, key);
|
||||
|
@ -1299,7 +1300,7 @@ static void stddev_function(SQLFunctionCtx *pCtx) {
|
|||
switch (pCtx->inputType) {
|
||||
case TSDB_DATA_TYPE_INT: {
|
||||
for (int32_t i = 0; i < pCtx->size; ++i) {
|
||||
if (pCtx->hasNull && isNull(&((int32_t *)pData)[i], pCtx->inputType)) {
|
||||
if (pCtx->hasNull && isNull((const char*) (&((int32_t *)pData)[i]), pCtx->inputType)) {
|
||||
continue;
|
||||
}
|
||||
*retVal += POW2(((int32_t *)pData)[i] - avg);
|
||||
|
@ -1583,7 +1584,7 @@ static void first_dist_func_second_merge(SQLFunctionCtx *pCtx) {
|
|||
assert(pCtx->resultInfo->superTableQ);
|
||||
|
||||
char * pData = GET_INPUT_CHAR(pCtx);
|
||||
SFirstLastInfo *pInput = (pData + pCtx->outputBytes);
|
||||
SFirstLastInfo *pInput = (SFirstLastInfo*) (pData + pCtx->outputBytes);
|
||||
if (pInput->hasResult != DATA_SET_FLAG) {
|
||||
return;
|
||||
}
|
||||
|
@ -1761,7 +1762,7 @@ static void last_dist_func_merge(SQLFunctionCtx *pCtx) {
|
|||
static void last_dist_func_second_merge(SQLFunctionCtx *pCtx) {
|
||||
char *pData = GET_INPUT_CHAR(pCtx);
|
||||
|
||||
SFirstLastInfo *pInput = (pData + pCtx->outputBytes);
|
||||
SFirstLastInfo *pInput = (SFirstLastInfo*) (pData + pCtx->outputBytes);
|
||||
if (pInput->hasResult != DATA_SET_FLAG) {
|
||||
return;
|
||||
}
|
||||
|
@ -1869,7 +1870,7 @@ static void do_top_function_add(STopBotInfo *pInfo, int32_t maxLen, void *pData,
|
|||
val.i64Key >= pList[pInfo->num - 1]->v.i64Key) ||
|
||||
((type >= TSDB_DATA_TYPE_FLOAT && type <= TSDB_DATA_TYPE_DOUBLE) &&
|
||||
val.dKey >= pList[pInfo->num - 1]->v.dKey)) {
|
||||
valuePairAssign(pList[pInfo->num], type, &val.i64Key, ts, pTags, pTagInfo, stage);
|
||||
valuePairAssign(pList[pInfo->num], type, (const char*)&val.i64Key, ts, pTags, pTagInfo, stage);
|
||||
} else {
|
||||
int32_t i = pInfo->num - 1;
|
||||
|
||||
|
@ -1885,7 +1886,7 @@ static void do_top_function_add(STopBotInfo *pInfo, int32_t maxLen, void *pData,
|
|||
}
|
||||
}
|
||||
|
||||
valuePairAssign(pList[i + 1], type, &val.i64Key, ts, pTags, pTagInfo, stage);
|
||||
valuePairAssign(pList[i + 1], type, (const char*) &val.i64Key, ts, pTags, pTagInfo, stage);
|
||||
}
|
||||
|
||||
pInfo->num++;
|
||||
|
@ -1907,7 +1908,7 @@ static void do_top_function_add(STopBotInfo *pInfo, int32_t maxLen, void *pData,
|
|||
}
|
||||
}
|
||||
|
||||
valuePairAssign(pList[i], type, &val.i64Key, ts, pTags, pTagInfo, stage);
|
||||
valuePairAssign(pList[i], type, (const char*) &val.i64Key, ts, pTags, pTagInfo, stage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1921,7 +1922,7 @@ static void do_bottom_function_add(STopBotInfo *pInfo, int32_t maxLen, void *pDa
|
|||
|
||||
if (pInfo->num < maxLen) {
|
||||
if (pInfo->num == 0) {
|
||||
valuePairAssign(pList[pInfo->num], type, &val.i64Key, ts, pTags, pTagInfo, stage);
|
||||
valuePairAssign(pList[pInfo->num], type, (const char*) &val.i64Key, ts, pTags, pTagInfo, stage);
|
||||
} else {
|
||||
int32_t i = pInfo->num - 1;
|
||||
|
||||
|
@ -1937,7 +1938,7 @@ static void do_bottom_function_add(STopBotInfo *pInfo, int32_t maxLen, void *pDa
|
|||
}
|
||||
}
|
||||
|
||||
valuePairAssign(pList[i + 1], type, &val.i64Key, ts, pTags, pTagInfo, stage);
|
||||
valuePairAssign(pList[i + 1], type, (const char*)&val.i64Key, ts, pTags, pTagInfo, stage);
|
||||
}
|
||||
|
||||
pInfo->num++;
|
||||
|
@ -1959,7 +1960,7 @@ static void do_bottom_function_add(STopBotInfo *pInfo, int32_t maxLen, void *pDa
|
|||
}
|
||||
}
|
||||
|
||||
valuePairAssign(pList[i], type, &val.i64Key, ts, pTags, pTagInfo, stage);
|
||||
valuePairAssign(pList[i], type, (const char*)&val.i64Key, ts, pTags, pTagInfo, stage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2099,7 +2100,7 @@ bool top_bot_datablock_filter(SQLFunctionCtx *pCtx, int32_t functionId, char *mi
|
|||
return true;
|
||||
}
|
||||
|
||||
tValuePair *pRes = pTopBotInfo->res;
|
||||
tValuePair *pRes = (tValuePair*) pTopBotInfo->res;
|
||||
|
||||
if (functionId == TSDB_FUNC_TOP) {
|
||||
switch (pCtx->inputType) {
|
||||
|
@ -2151,7 +2152,7 @@ static STopBotInfo *getTopBotOutputInfo(SQLFunctionCtx *pCtx) {
|
|||
|
||||
// only the first_stage_merge is directly written data into final output buffer
|
||||
if (pResInfo->superTableQ && pCtx->currentStage != SECONDARY_STAGE_MERGE) {
|
||||
return pCtx->aOutputBuf;
|
||||
return (STopBotInfo*) pCtx->aOutputBuf;
|
||||
} else { // for normal table query and super table at the secondary_stage, result is written to intermediate buffer
|
||||
return pResInfo->interResultBuf;
|
||||
}
|
||||
|
@ -2165,14 +2166,14 @@ static STopBotInfo *getTopBotOutputInfo(SQLFunctionCtx *pCtx) {
|
|||
*/
|
||||
static void buildTopBotStruct(STopBotInfo *pTopBotInfo, SQLFunctionCtx *pCtx) {
|
||||
char *tmp = (char *)pTopBotInfo + sizeof(STopBotInfo);
|
||||
pTopBotInfo->res = tmp;
|
||||
pTopBotInfo->res = (tValuePair**) tmp;
|
||||
|
||||
tmp += POINTER_BYTES * pCtx->param[0].i64Key;
|
||||
|
||||
size_t size = sizeof(tValuePair) + pCtx->tagInfo.tagsLen;
|
||||
|
||||
for (int32_t i = 0; i < pCtx->param[0].i64Key; ++i) {
|
||||
pTopBotInfo->res[i] = tmp;
|
||||
pTopBotInfo->res[i] = (tValuePair*) tmp;
|
||||
pTopBotInfo->res[i]->pTags = tmp + sizeof(tValuePair);
|
||||
tmp += size;
|
||||
}
|
||||
|
@ -2477,7 +2478,7 @@ static SAPercentileInfo *getAPerctInfo(SQLFunctionCtx *pCtx) {
|
|||
SResultInfo *pResInfo = GET_RES_INFO(pCtx);
|
||||
|
||||
if (pResInfo->superTableQ && pCtx->currentStage != SECONDARY_STAGE_MERGE) {
|
||||
return pCtx->aOutputBuf;
|
||||
return (SAPercentileInfo*) pCtx->aOutputBuf;
|
||||
} else {
|
||||
return pResInfo->interResultBuf;
|
||||
}
|
||||
|
@ -2588,8 +2589,8 @@ static void apercentile_func_merge(SQLFunctionCtx *pCtx) {
|
|||
|
||||
SAPercentileInfo *pInput = (SAPercentileInfo *)GET_INPUT_CHAR(pCtx);
|
||||
|
||||
pInput->pHisto = (char *)pInput + sizeof(SAPercentileInfo);
|
||||
pInput->pHisto->elems = (char *)pInput->pHisto + sizeof(SHistogramInfo);
|
||||
pInput->pHisto = (SHistogramInfo*) ((char *)pInput + sizeof(SAPercentileInfo));
|
||||
pInput->pHisto->elems = (SHistBin*) ((char *)pInput->pHisto + sizeof(SHistogramInfo));
|
||||
|
||||
if (pInput->pHisto->numOfElems <= 0) {
|
||||
return;
|
||||
|
@ -2602,13 +2603,13 @@ static void apercentile_func_merge(SQLFunctionCtx *pCtx) {
|
|||
|
||||
if (pHisto->numOfElems <= 0) {
|
||||
memcpy(pHisto, pInput->pHisto, size);
|
||||
pHisto->elems = (char *)pHisto + sizeof(SHistogramInfo);
|
||||
pHisto->elems = (SHistBin*) ((char *)pHisto + sizeof(SHistogramInfo));
|
||||
} else {
|
||||
pHisto->elems = (char *)pHisto + sizeof(SHistogramInfo);
|
||||
pHisto->elems = (SHistBin*) ((char *)pHisto + sizeof(SHistogramInfo));
|
||||
|
||||
SHistogramInfo *pRes = tHistogramMerge(pHisto, pInput->pHisto, MAX_HISTOGRAM_BIN);
|
||||
memcpy(pHisto, pRes, sizeof(SHistogramInfo) + sizeof(SHistBin) * MAX_HISTOGRAM_BIN);
|
||||
pHisto->elems = (char *)pHisto + sizeof(SHistogramInfo);
|
||||
pHisto->elems = (SHistBin*) ((char *)pHisto + sizeof(SHistogramInfo));
|
||||
|
||||
tHistogramDestroy(&pRes);
|
||||
}
|
||||
|
@ -2620,8 +2621,8 @@ static void apercentile_func_merge(SQLFunctionCtx *pCtx) {
|
|||
static void apercentile_func_second_merge(SQLFunctionCtx *pCtx) {
|
||||
SAPercentileInfo *pInput = (SAPercentileInfo *)GET_INPUT_CHAR(pCtx);
|
||||
|
||||
pInput->pHisto = (char *)pInput + sizeof(SAPercentileInfo);
|
||||
pInput->pHisto->elems = (char *)pInput->pHisto + sizeof(SHistogramInfo);
|
||||
pInput->pHisto = (SHistogramInfo*) ((char *)pInput + sizeof(SAPercentileInfo));
|
||||
pInput->pHisto->elems = (SHistBin*) ((char *)pInput->pHisto + sizeof(SHistogramInfo));
|
||||
|
||||
if (pInput->pHisto->numOfElems <= 0) {
|
||||
return;
|
||||
|
@ -2632,9 +2633,9 @@ static void apercentile_func_second_merge(SQLFunctionCtx *pCtx) {
|
|||
|
||||
if (pHisto->numOfElems <= 0) {
|
||||
memcpy(pHisto, pInput->pHisto, sizeof(SHistogramInfo) + sizeof(SHistBin) * (MAX_HISTOGRAM_BIN + 1));
|
||||
pHisto->elems = (char *)pHisto + sizeof(SHistogramInfo);
|
||||
pHisto->elems = (SHistBin*) ((char *)pHisto + sizeof(SHistogramInfo));
|
||||
} else {
|
||||
pHisto->elems = (char *)pHisto + sizeof(SHistogramInfo);
|
||||
pHisto->elems = (SHistBin*) ((char *)pHisto + sizeof(SHistogramInfo));
|
||||
|
||||
SHistogramInfo *pRes = tHistogramMerge(pHisto, pInput->pHisto, MAX_HISTOGRAM_BIN);
|
||||
tHistogramDestroy(&pOutput->pHisto);
|
||||
|
@ -2728,7 +2729,7 @@ static void leastsquares_function(SQLFunctionCtx *pCtx) {
|
|||
int32_t *p = pData;
|
||||
// LEASTSQR_CAL_LOOP(pCtx, param, pParamData, p);
|
||||
for (int32_t i = 0; i < pCtx->size; ++i) {
|
||||
if (pCtx->hasNull && isNull(p, pCtx->inputType)) {
|
||||
if (pCtx->hasNull && isNull((const char*) p, pCtx->inputType)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -2870,6 +2871,10 @@ static void date_col_output_function(SQLFunctionCtx *pCtx) {
|
|||
*(int64_t *)(pCtx->aOutputBuf) = pCtx->nStartQueryTimestamp;
|
||||
}
|
||||
|
||||
static FORCE_INLINE void date_col_output_function_f(SQLFunctionCtx *pCtx, int32_t index) {
|
||||
date_col_output_function(pCtx);
|
||||
}
|
||||
|
||||
static void col_project_function(SQLFunctionCtx *pCtx) {
|
||||
INC_INIT_VAL(pCtx, pCtx->size);
|
||||
|
||||
|
@ -2980,7 +2985,7 @@ static void diff_function(SQLFunctionCtx *pCtx) {
|
|||
int32_t *pOutput = (int32_t *)pCtx->aOutputBuf;
|
||||
|
||||
for (; i < pCtx->size && i >= 0; i += step) {
|
||||
if (pCtx->hasNull && isNull(&pData[i], pCtx->inputType)) {
|
||||
if (pCtx->hasNull && isNull((const char*) &pData[i], pCtx->inputType)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -3012,7 +3017,7 @@ static void diff_function(SQLFunctionCtx *pCtx) {
|
|||
int64_t *pOutput = (int64_t *)pCtx->aOutputBuf;
|
||||
|
||||
for (; i < pCtx->size && i >= 0; i += step) {
|
||||
if (pCtx->hasNull && isNull(&pData[i], pCtx->inputType)) {
|
||||
if (pCtx->hasNull && isNull((const char*) &pData[i], pCtx->inputType)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -3044,7 +3049,7 @@ static void diff_function(SQLFunctionCtx *pCtx) {
|
|||
double *pOutput = (double *)pCtx->aOutputBuf;
|
||||
|
||||
for (; i < pCtx->size && i >= 0; i += step) {
|
||||
if (pCtx->hasNull && isNull(&pData[i], pCtx->inputType)) {
|
||||
if (pCtx->hasNull && isNull((const char*) &pData[i], pCtx->inputType)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -3074,7 +3079,7 @@ static void diff_function(SQLFunctionCtx *pCtx) {
|
|||
float *pOutput = (float *)pCtx->aOutputBuf;
|
||||
|
||||
for (; i < pCtx->size && i >= 0; i += step) {
|
||||
if (pCtx->hasNull && isNull(&pData[i], pCtx->inputType)) {
|
||||
if (pCtx->hasNull && isNull((const char*) &pData[i], pCtx->inputType)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -3105,7 +3110,7 @@ static void diff_function(SQLFunctionCtx *pCtx) {
|
|||
int16_t *pOutput = (int16_t *)pCtx->aOutputBuf;
|
||||
|
||||
for (; i < pCtx->size && i >= 0; i += step) {
|
||||
if (pCtx->hasNull && isNull(&pData[i], pCtx->inputType)) {
|
||||
if (pCtx->hasNull && isNull((const char*) &pData[i], pCtx->inputType)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -3275,7 +3280,7 @@ static void arithmetic_function(SQLFunctionCtx *pCtx) {
|
|||
pCtx->aOutputBuf += pCtx->outputBytes * pCtx->size * GET_FORWARD_DIRECTION_FACTOR(pCtx->order);
|
||||
}
|
||||
|
||||
static bool arithmetic_function_f(SQLFunctionCtx *pCtx, int32_t index) {
|
||||
static void arithmetic_function_f(SQLFunctionCtx *pCtx, int32_t index) {
|
||||
INC_INIT_VAL(pCtx, 1);
|
||||
SArithmeticSupport *sas = (SArithmeticSupport *)pCtx->param[0].pz;
|
||||
|
||||
|
@ -3284,7 +3289,6 @@ static bool arithmetic_function_f(SQLFunctionCtx *pCtx, int32_t index) {
|
|||
arithmetic_callback_function);
|
||||
|
||||
pCtx->aOutputBuf += pCtx->outputBytes * GET_FORWARD_DIRECTION_FACTOR(pCtx->order);
|
||||
return true;
|
||||
}
|
||||
|
||||
#define LIST_MINMAX_N(ctx, minOutput, maxOutput, elemCnt, data, type, tsdbType, numOfNotNullElem) \
|
||||
|
@ -3707,7 +3711,7 @@ static void getStatics_i16(int64_t *primaryKey, int16_t *data, int32_t numOfRow,
|
|||
// int16_t lastVal = TSDB_DATA_SMALLINT_NULL;
|
||||
|
||||
for (int32_t i = 0; i < numOfRow; ++i) {
|
||||
if (isNull(&data[i], TSDB_DATA_TYPE_SMALLINT)) {
|
||||
if (isNull((const char*) &data[i], TSDB_DATA_TYPE_SMALLINT)) {
|
||||
(*numOfNull) += 1;
|
||||
continue;
|
||||
}
|
||||
|
@ -3747,7 +3751,7 @@ static void getStatics_i32(int64_t *primaryKey, int32_t *data, int32_t numOfRow,
|
|||
// int32_t lastVal = TSDB_DATA_INT_NULL;
|
||||
|
||||
for (int32_t i = 0; i < numOfRow; ++i) {
|
||||
if (isNull(&data[i], TSDB_DATA_TYPE_INT)) {
|
||||
if (isNull((const char*) &data[i], TSDB_DATA_TYPE_INT)) {
|
||||
(*numOfNull) += 1;
|
||||
continue;
|
||||
}
|
||||
|
@ -3784,7 +3788,7 @@ static void getStatics_i64(int64_t *primaryKey, int64_t *data, int32_t numOfRow,
|
|||
assert(numOfRow <= INT16_MAX);
|
||||
|
||||
for (int32_t i = 0; i < numOfRow; ++i) {
|
||||
if (isNull(&data[i], TSDB_DATA_TYPE_BIGINT)) {
|
||||
if (isNull((const char*) &data[i], TSDB_DATA_TYPE_BIGINT)) {
|
||||
(*numOfNull) += 1;
|
||||
continue;
|
||||
}
|
||||
|
@ -3822,7 +3826,7 @@ static void getStatics_f(int64_t *primaryKey, float *data, int32_t numOfRow, dou
|
|||
assert(numOfRow <= INT16_MAX);
|
||||
|
||||
for (int32_t i = 0; i < numOfRow; ++i) {
|
||||
if (isNull(&data[i], TSDB_DATA_TYPE_FLOAT)) {
|
||||
if (isNull((const char*) &data[i], TSDB_DATA_TYPE_FLOAT)) {
|
||||
(*numOfNull) += 1;
|
||||
continue;
|
||||
}
|
||||
|
@ -3875,7 +3879,7 @@ static void getStatics_d(int64_t *primaryKey, double *data, int32_t numOfRow, do
|
|||
assert(numOfRow <= INT16_MAX);
|
||||
|
||||
for (int32_t i = 0; i < numOfRow; ++i) {
|
||||
if (isNull(&data[i], TSDB_DATA_TYPE_DOUBLE)) {
|
||||
if (isNull((const char*) &data[i], TSDB_DATA_TYPE_DOUBLE)) {
|
||||
(*numOfNull) += 1;
|
||||
continue;
|
||||
}
|
||||
|
@ -3936,9 +3940,9 @@ void getStatistics(char *priData, char *data, int32_t size, int32_t numOfRow, in
|
|||
} else if (type == TSDB_DATA_TYPE_BIGINT || type == TSDB_DATA_TYPE_TIMESTAMP) {
|
||||
getStatics_i64(primaryKey, (int64_t *)data, numOfRow, min, max, sum, minIndex, maxIndex, numOfNull);
|
||||
} else if (type == TSDB_DATA_TYPE_DOUBLE) {
|
||||
getStatics_d(primaryKey, (double *)data, numOfRow, min, max, sum, minIndex, maxIndex, numOfNull);
|
||||
getStatics_d(primaryKey, (double *)data, numOfRow, (double*) min, (double*) max, (double*) sum, minIndex, maxIndex, numOfNull);
|
||||
} else if (type == TSDB_DATA_TYPE_FLOAT) {
|
||||
getStatics_f(primaryKey, (float *)data, numOfRow, min, max, sum, minIndex, maxIndex, numOfNull);
|
||||
getStatics_f(primaryKey, (float *)data, numOfRow, (double*) min, (double*) max, (double*) sum, minIndex, maxIndex, numOfNull);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4056,10 +4060,10 @@ static void twa_function(SQLFunctionCtx *pCtx) {
|
|||
// pCtx->numOfIteratedElems += notNullElems;
|
||||
}
|
||||
|
||||
static bool twa_function_f(SQLFunctionCtx *pCtx, int32_t index) {
|
||||
static void twa_function_f(SQLFunctionCtx *pCtx, int32_t index) {
|
||||
void *pData = GET_INPUT_CHAR_INDEX(pCtx, index);
|
||||
if (pCtx->hasNull && isNull(pData, pCtx->inputType)) {
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
|
||||
SET_VAL(pCtx, 1, 1);
|
||||
|
@ -4067,7 +4071,7 @@ static bool twa_function_f(SQLFunctionCtx *pCtx, int32_t index) {
|
|||
TSKEY *primaryKey = pCtx->ptsList;
|
||||
|
||||
SResultInfo *pResInfo = GET_RES_INFO(pCtx);
|
||||
STwaInfo * pInfo = pResInfo->interResultBuf;
|
||||
STwaInfo *pInfo = pResInfo->interResultBuf;
|
||||
|
||||
if (pInfo->lastKey == INT64_MIN) {
|
||||
pInfo->lastKey = pCtx->nStartQueryTimestamp;
|
||||
|
@ -4092,8 +4096,6 @@ static bool twa_function_f(SQLFunctionCtx *pCtx, int32_t index) {
|
|||
if (pResInfo->superTableQ) {
|
||||
memcpy(pCtx->aOutputBuf, pResInfo->interResultBuf, sizeof(STwaInfo));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static void twa_func_merge(SQLFunctionCtx *pCtx) {
|
||||
|
@ -4105,7 +4107,7 @@ static void twa_func_merge(SQLFunctionCtx *pCtx) {
|
|||
|
||||
int32_t numOfNotNull = 0;
|
||||
for (int32_t i = 0; i < pCtx->size; ++i, indicator += sizeof(STwaInfo)) {
|
||||
STwaInfo *pInput = indicator;
|
||||
STwaInfo *pInput = (STwaInfo*) indicator;
|
||||
|
||||
if (pInput->hasResult != DATA_SET_FLAG) {
|
||||
continue;
|
||||
|
@ -4207,7 +4209,7 @@ static void interp_function(SQLFunctionCtx *pCtx) {
|
|||
|
||||
if (pCtx->outputType == TSDB_DATA_TYPE_FLOAT) {
|
||||
float v = GET_DOUBLE_VAL(pVal);
|
||||
assignVal(pCtx->aOutputBuf, &v, pCtx->outputBytes, pCtx->outputType);
|
||||
assignVal(pCtx->aOutputBuf, (const char*) &v, pCtx->outputBytes, pCtx->outputType);
|
||||
} else {
|
||||
assignVal(pCtx->aOutputBuf, pVal, pCtx->outputBytes, pCtx->outputType);
|
||||
}
|
||||
|
@ -4368,7 +4370,7 @@ SQLAggFuncElem aAggs[28] = {{
|
|||
count_function,
|
||||
count_function_f,
|
||||
no_next_step,
|
||||
noop,
|
||||
noop1,
|
||||
count_func_merge,
|
||||
count_func_merge,
|
||||
count_load_data_info,
|
||||
|
@ -4444,8 +4446,8 @@ SQLAggFuncElem aAggs[28] = {{
|
|||
stddev_function_f,
|
||||
stddev_next_step,
|
||||
stddev_finalizer,
|
||||
noop,
|
||||
noop,
|
||||
noop1,
|
||||
noop1,
|
||||
data_req_load_info,
|
||||
},
|
||||
{
|
||||
|
@ -4459,8 +4461,8 @@ SQLAggFuncElem aAggs[28] = {{
|
|||
percentile_function_f,
|
||||
no_next_step,
|
||||
percentile_finalizer,
|
||||
noop,
|
||||
noop,
|
||||
noop1,
|
||||
noop1,
|
||||
data_req_load_info,
|
||||
},
|
||||
{
|
||||
|
@ -4489,8 +4491,8 @@ SQLAggFuncElem aAggs[28] = {{
|
|||
first_function_f,
|
||||
no_next_step,
|
||||
function_finalizer,
|
||||
noop,
|
||||
noop,
|
||||
noop1,
|
||||
noop1,
|
||||
first_data_req_info,
|
||||
},
|
||||
{
|
||||
|
@ -4504,8 +4506,8 @@ SQLAggFuncElem aAggs[28] = {{
|
|||
last_function_f,
|
||||
no_next_step,
|
||||
function_finalizer,
|
||||
noop,
|
||||
noop,
|
||||
noop1,
|
||||
noop1,
|
||||
last_data_req_info,
|
||||
},
|
||||
{
|
||||
|
@ -4517,10 +4519,10 @@ SQLAggFuncElem aAggs[28] = {{
|
|||
TSDB_FUNCSTATE_SELECTIVITY,
|
||||
first_last_function_setup,
|
||||
last_row_function,
|
||||
noop,
|
||||
noop2,
|
||||
no_next_step,
|
||||
last_row_finalizer,
|
||||
noop,
|
||||
noop1,
|
||||
last_dist_func_second_merge,
|
||||
data_req_load_info,
|
||||
},
|
||||
|
@ -4597,8 +4599,8 @@ SQLAggFuncElem aAggs[28] = {{
|
|||
leastsquares_function_f,
|
||||
no_next_step,
|
||||
leastsquares_finalizer,
|
||||
noop,
|
||||
noop,
|
||||
noop1,
|
||||
noop1,
|
||||
data_req_load_info,
|
||||
},
|
||||
{
|
||||
|
@ -4609,9 +4611,9 @@ SQLAggFuncElem aAggs[28] = {{
|
|||
TSDB_BASE_FUNC_SO | TSDB_FUNCSTATE_NEED_TS,
|
||||
function_setup,
|
||||
date_col_output_function,
|
||||
date_col_output_function,
|
||||
date_col_output_function_f,
|
||||
no_next_step,
|
||||
noop,
|
||||
noop1,
|
||||
copy_function,
|
||||
copy_function,
|
||||
no_data_info,
|
||||
|
@ -4623,10 +4625,10 @@ SQLAggFuncElem aAggs[28] = {{
|
|||
TSDB_FUNC_TS_DUMMY,
|
||||
TSDB_BASE_FUNC_SO | TSDB_FUNCSTATE_NEED_TS,
|
||||
function_setup,
|
||||
noop,
|
||||
noop,
|
||||
noop1,
|
||||
noop2,
|
||||
no_next_step,
|
||||
noop,
|
||||
noop1,
|
||||
copy_function,
|
||||
copy_function,
|
||||
data_req_load_info,
|
||||
|
@ -4639,9 +4641,9 @@ SQLAggFuncElem aAggs[28] = {{
|
|||
TSDB_BASE_FUNC_SO,
|
||||
function_setup,
|
||||
tag_function,
|
||||
noop,
|
||||
noop2,
|
||||
no_next_step,
|
||||
noop,
|
||||
noop1,
|
||||
copy_function,
|
||||
copy_function,
|
||||
no_data_info,
|
||||
|
@ -4671,7 +4673,7 @@ SQLAggFuncElem aAggs[28] = {{
|
|||
tag_function,
|
||||
tag_function_f,
|
||||
no_next_step,
|
||||
noop,
|
||||
noop1,
|
||||
copy_function,
|
||||
copy_function,
|
||||
no_data_info,
|
||||
|
@ -4686,7 +4688,7 @@ SQLAggFuncElem aAggs[28] = {{
|
|||
col_project_function,
|
||||
col_project_function_f,
|
||||
no_next_step,
|
||||
noop,
|
||||
noop1,
|
||||
copy_function,
|
||||
copy_function,
|
||||
data_req_load_info,
|
||||
|
@ -4701,7 +4703,7 @@ SQLAggFuncElem aAggs[28] = {{
|
|||
tag_project_function,
|
||||
tag_project_function_f,
|
||||
no_next_step,
|
||||
noop,
|
||||
noop1,
|
||||
copy_function,
|
||||
copy_function,
|
||||
no_data_info,
|
||||
|
@ -4716,7 +4718,7 @@ SQLAggFuncElem aAggs[28] = {{
|
|||
arithmetic_function,
|
||||
arithmetic_function_f,
|
||||
no_next_step,
|
||||
noop,
|
||||
noop1,
|
||||
copy_function,
|
||||
copy_function,
|
||||
data_req_load_info,
|
||||
|
@ -4731,9 +4733,9 @@ SQLAggFuncElem aAggs[28] = {{
|
|||
diff_function,
|
||||
diff_function_f,
|
||||
no_next_step,
|
||||
noop,
|
||||
noop,
|
||||
noop,
|
||||
noop1,
|
||||
noop1,
|
||||
noop1,
|
||||
data_req_load_info,
|
||||
},
|
||||
// distributed version used in two-stage aggregation processes
|
||||
|
@ -4777,8 +4779,8 @@ SQLAggFuncElem aAggs[28] = {{
|
|||
interp_function,
|
||||
do_sum_f, // todo filter handle
|
||||
no_next_step,
|
||||
noop,
|
||||
noop,
|
||||
noop1,
|
||||
noop1,
|
||||
copy_function,
|
||||
no_data_info,
|
||||
}};
|
||||
|
|
|
@ -20,13 +20,13 @@
|
|||
#include "taos.h"
|
||||
#include "taosmsg.h"
|
||||
#include "tstoken.h"
|
||||
#include "ttime.h"
|
||||
#include "tstrbuild.h"
|
||||
#include "ttime.h"
|
||||
|
||||
#include "tscSQLParser.h"
|
||||
#include "tscUtil.h"
|
||||
#include "tschemautil.h"
|
||||
#include "tsclient.h"
|
||||
#include "tscSQLParser.h"
|
||||
|
||||
#define DEFAULT_PRIMARY_TIMESTAMP_COL_NAME "_c0"
|
||||
|
||||
|
@ -51,7 +51,7 @@ typedef struct SColumnIdListRes {
|
|||
static SSqlExpr* doAddProjectCol(SSqlCmd* pCmd, int32_t outputIndex, int32_t colIdx, int32_t tableIndex);
|
||||
|
||||
static int32_t setShowInfo(SSqlObj* pSql, SSqlInfo* pInfo);
|
||||
static char* getAccountId(SSqlObj* pSql);
|
||||
static char* getAccountId(SSqlObj* pSql);
|
||||
|
||||
static bool has(tFieldList* pFieldList, int32_t startIdx, const char* name);
|
||||
static void getCurrentDBName(SSqlObj* pSql, SSQLToken* pDBToken);
|
||||
|
@ -110,7 +110,7 @@ static int32_t optrToString(tSQLExpr* pExpr, char** exprString);
|
|||
static int32_t getMeterIndex(SSQLToken* pTableToken, SSqlCmd* pCmd, SColumnIndex* pIndex);
|
||||
static int32_t doFunctionsCompatibleCheck(SSqlObj* pSql);
|
||||
static int32_t doLocalQueryProcess(SQuerySQL* pQuerySql, SSqlCmd* pCmd);
|
||||
static int32_t tscCheckCreateDbParams(SSqlCmd* pCmd, SCreateDbMsg *pCreate);
|
||||
static int32_t tscCheckCreateDbParams(SSqlCmd* pCmd, SCreateDbMsg* pCreate);
|
||||
|
||||
static SColumnList getColumnList(int32_t num, int16_t tableIndex, int32_t columnIndex);
|
||||
|
||||
|
@ -118,7 +118,7 @@ static SColumnList getColumnList(int32_t num, int16_t tableIndex, int32_t column
|
|||
* Used during parsing query sql. Since the query sql usually small in length, error position
|
||||
* is not needed in the final error message.
|
||||
*/
|
||||
static int32_t invalidSqlErrMsg(SSqlCmd *pCmd, const char* errMsg) {
|
||||
static int32_t invalidSqlErrMsg(SSqlCmd* pCmd, const char* errMsg) {
|
||||
return tscInvalidSQLErrMsg(pCmd->payload, errMsg, NULL);
|
||||
}
|
||||
|
||||
|
@ -293,7 +293,6 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
|
|||
|
||||
case ALTER_DATABASE:
|
||||
case CREATE_DATABASE: {
|
||||
|
||||
if (pInfo->sqlType == ALTER_DATABASE) {
|
||||
pCmd->command = TSDB_SQL_ALTER_DB;
|
||||
} else {
|
||||
|
@ -1018,7 +1017,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
|
|||
|
||||
setColumnOffsetValueInResultset(pCmd);
|
||||
|
||||
for(int32_t i = 0; i < pCmd->numOfTables; ++i) {
|
||||
for (int32_t i = 0; i < pCmd->numOfTables; ++i) {
|
||||
updateTagColumnIndex(pCmd, i);
|
||||
}
|
||||
|
||||
|
@ -1796,7 +1795,7 @@ int32_t addProjectionExprAndResultField(SSqlCmd* pCmd, tSQLExprItem* pItem) {
|
|||
}
|
||||
|
||||
if (index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
|
||||
SSchema colSchema = {.type = TSDB_DATA_TYPE_BINARY, .bytes = TSDB_METER_NAME_LEN};
|
||||
SSchema colSchema = {.type = TSDB_DATA_TYPE_BINARY, .bytes = TSDB_METER_NAME_LEN};
|
||||
strcpy(colSchema.name, TSQL_TBNAME_L);
|
||||
|
||||
pCmd->type = TSDB_QUERY_TYPE_STABLE_QUERY;
|
||||
|
@ -2160,7 +2159,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
|
|||
int8_t resultType = pSchema[index.columnIndex].type;
|
||||
int16_t resultSize = pSchema[index.columnIndex].bytes;
|
||||
|
||||
char val[8] = {0};
|
||||
char val[8] = {0};
|
||||
int32_t numOfAddedColumn = 1;
|
||||
if (optr == TK_PERCENTILE || optr == TK_APERCENTILE) {
|
||||
tVariantDump(pVariant, val, TSDB_DATA_TYPE_DOUBLE);
|
||||
|
@ -2186,7 +2185,6 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
|
|||
SSqlExpr* pExpr = tscSqlExprInsert(pCmd, colIdx, functionId, &index, resultType, resultSize, resultSize);
|
||||
addExprParams(pExpr, val, TSDB_DATA_TYPE_DOUBLE, sizeof(double), 0);
|
||||
} else {
|
||||
|
||||
tVariantDump(pVariant, val, TSDB_DATA_TYPE_BIGINT);
|
||||
|
||||
int64_t nTop = *((int32_t*)val);
|
||||
|
@ -2545,7 +2543,7 @@ int32_t setShowInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
|
|||
}
|
||||
}
|
||||
}
|
||||
}else if (type == SHOW_VNODES) {
|
||||
} else if (type == SHOW_VNODES) {
|
||||
if (NULL == pInfo->pDCLInfo) {
|
||||
return invalidSqlErrMsg(pCmd, "No specified ip of dnode");
|
||||
}
|
||||
|
@ -2674,8 +2672,7 @@ void tscRestoreSQLFunctionForMetricQuery(SSqlCmd* pCmd) {
|
|||
|
||||
bool hasUnsupportFunctionsForMetricQuery(SSqlCmd* pCmd) {
|
||||
const char* msg1 = "TWA not allowed to apply to super table directly";
|
||||
const char* msg2 = "functions not supported for super table";
|
||||
const char* msg3 = "TWA only support group by tbname for super table query";
|
||||
const char* msg2 = "TWA only support group by tbname for super table query";
|
||||
|
||||
// filter sql function not supported by metric query yet.
|
||||
for (int32_t i = 0; i < pCmd->fieldsInfo.numOfOutputCols; ++i) {
|
||||
|
@ -2692,7 +2689,7 @@ bool hasUnsupportFunctionsForMetricQuery(SSqlCmd* pCmd) {
|
|||
}
|
||||
|
||||
if (pCmd->groupbyExpr.numOfGroupCols != 1 || pCmd->groupbyExpr.columnInfo[0].colIdx != TSDB_TBNAME_COLUMN_INDEX) {
|
||||
invalidSqlErrMsg(pCmd, msg3);
|
||||
invalidSqlErrMsg(pCmd, msg2);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -2701,8 +2698,6 @@ bool hasUnsupportFunctionsForMetricQuery(SSqlCmd* pCmd) {
|
|||
}
|
||||
|
||||
static bool functionCompatibleCheck(SSqlCmd* pCmd) {
|
||||
const char* msg1 = "column on select clause not allowed";
|
||||
|
||||
int32_t startIdx = 0;
|
||||
int32_t functionID = tscSqlExprGet(pCmd, startIdx)->functionId;
|
||||
|
||||
|
@ -2787,7 +2782,7 @@ void updateTagColumnIndex(SSqlCmd* pCmd, int32_t tableIndex) {
|
|||
|
||||
// the join condition expression node belongs to this table(super table)
|
||||
if (pMeterMetaInfo->pMeterMeta->uid == pJoinInfo->left.uid) {
|
||||
for(int32_t i = 0; i < pMeterMetaInfo->numOfTags; ++i) {
|
||||
for (int32_t i = 0; i < pMeterMetaInfo->numOfTags; ++i) {
|
||||
if (pJoinInfo->left.tagCol == pMeterMetaInfo->tagColumnIndex[i]) {
|
||||
pJoinInfo->left.tagCol = i;
|
||||
}
|
||||
|
@ -2795,21 +2790,18 @@ void updateTagColumnIndex(SSqlCmd* pCmd, int32_t tableIndex) {
|
|||
}
|
||||
|
||||
if (pMeterMetaInfo->pMeterMeta->uid == pJoinInfo->right.uid) {
|
||||
for(int32_t i = 0; i < pMeterMetaInfo->numOfTags; ++i) {
|
||||
for (int32_t i = 0; i < pMeterMetaInfo->numOfTags; ++i) {
|
||||
if (pJoinInfo->right.tagCol == pMeterMetaInfo->tagColumnIndex[i]) {
|
||||
pJoinInfo->right.tagCol = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int32_t parseGroupbyClause(SSqlCmd* pCmd, tVariantList* pList) {
|
||||
const char* msg1 = "too many columns in group by clause";
|
||||
const char* msg2 = "invalid column name in group by clause";
|
||||
const char* msg4 = "group by only available for STable query";
|
||||
const char* msg5 = "group by columns must belong to one table";
|
||||
const char* msg6 = "only support group by one ordinary column";
|
||||
const char* msg3 = "group by columns must belong to one table";
|
||||
const char* msg7 = "not support group by expression";
|
||||
const char* msg8 = "not allowed column type for group by";
|
||||
const char* msg9 = "tags not allowed for table query";
|
||||
|
@ -2828,9 +2820,8 @@ int32_t parseGroupbyClause(SSqlCmd* pCmd, tVariantList* pList) {
|
|||
|
||||
SMeterMeta* pMeterMeta = NULL;
|
||||
SSchema* pSchema = NULL;
|
||||
SSchema s = tsGetTbnameColumnSchema();
|
||||
|
||||
SSchema s = {0};
|
||||
int32_t numOfReqTags = 0;
|
||||
int32_t tableIndex = COLUMN_INDEX_INITIAL_VAL;
|
||||
|
||||
for (int32_t i = 0; i < pList->nExpr; ++i) {
|
||||
|
@ -2844,7 +2835,7 @@ int32_t parseGroupbyClause(SSqlCmd* pCmd, tVariantList* pList) {
|
|||
}
|
||||
|
||||
if (tableIndex != index.tableIndex && tableIndex >= 0) {
|
||||
return invalidSqlErrMsg(pCmd, msg5);
|
||||
return invalidSqlErrMsg(pCmd, msg3);
|
||||
}
|
||||
|
||||
tableIndex = index.tableIndex;
|
||||
|
@ -2852,22 +2843,12 @@ int32_t parseGroupbyClause(SSqlCmd* pCmd, tVariantList* pList) {
|
|||
pMeterMetaInfo = tscGetMeterMetaInfo(pCmd, index.tableIndex);
|
||||
pMeterMeta = pMeterMetaInfo->pMeterMeta;
|
||||
|
||||
// TODO refactor!!!!!!!!!!!!!!1
|
||||
if (index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
|
||||
s.colId = TSDB_TBNAME_COLUMN_INDEX;
|
||||
s.type = TSDB_DATA_TYPE_BINARY;
|
||||
s.bytes = TSDB_METER_NAME_LEN;
|
||||
strcpy(s.name, TSQL_TBNAME_L);
|
||||
|
||||
pSchema = &s;
|
||||
} else {
|
||||
pSchema = tsGetColumnSchema(pMeterMeta, index.columnIndex);
|
||||
}
|
||||
|
||||
int16_t type = 0;
|
||||
int16_t bytes = 0;
|
||||
char* name = NULL;
|
||||
|
||||
bool groupTag = false;
|
||||
if (index.columnIndex == TSDB_TBNAME_COLUMN_INDEX || index.columnIndex >= pMeterMeta->numOfColumns) {
|
||||
groupTag = true;
|
||||
|
@ -3138,7 +3119,7 @@ static int32_t optrToString(tSQLExpr* pExpr, char** exprString) {
|
|||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
static int32_t tablenameListToString(tSQLExpr* pExpr, /*char* str*/SStringBuilder* sb) {
|
||||
static int32_t tablenameListToString(tSQLExpr* pExpr, /*char* str*/ SStringBuilder* sb) {
|
||||
tSQLExprList* pList = pExpr->pParam;
|
||||
if (pList->nExpr <= 0) {
|
||||
return TSDB_CODE_INVALID_SQL;
|
||||
|
@ -3148,7 +3129,6 @@ static int32_t tablenameListToString(tSQLExpr* pExpr, /*char* str*/SStringBuilde
|
|||
taosStringBuilderAppendStringLen(sb, QUERY_COND_REL_PREFIX_IN, QUERY_COND_REL_PREFIX_IN_LEN);
|
||||
}
|
||||
|
||||
int32_t len = 0;
|
||||
for (int32_t i = 0; i < pList->nExpr; ++i) {
|
||||
tSQLExpr* pSub = pList->a[i].pNode;
|
||||
taosStringBuilderAppendStringLen(sb, pSub->val.pz, pSub->val.nLen);
|
||||
|
@ -3165,7 +3145,7 @@ static int32_t tablenameListToString(tSQLExpr* pExpr, /*char* str*/SStringBuilde
|
|||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
static int32_t tablenameCondToString(tSQLExpr* pExpr, /*char* str*/SStringBuilder* sb) {
|
||||
static int32_t tablenameCondToString(tSQLExpr* pExpr, /*char* str*/ SStringBuilder* sb) {
|
||||
taosStringBuilderAppendStringLen(sb, QUERY_COND_REL_PREFIX_LIKE, QUERY_COND_REL_PREFIX_LIKE_LEN);
|
||||
taosStringBuilderAppendString(sb, pExpr->val.pz);
|
||||
|
||||
|
@ -3187,7 +3167,6 @@ static int32_t extractColumnFilterInfo(SSqlCmd* pCmd, SColumnIndex* pIndex, tSQL
|
|||
|
||||
const char* msg1 = "non binary column not support like operator";
|
||||
const char* msg2 = "binary column not support this operator";
|
||||
const char* msg3 = "OR is not supported on different column filter";
|
||||
|
||||
SColumnBase* pColumn = tscColumnBaseInfoInsert(pCmd, pIndex);
|
||||
SColumnFilterInfo* pColFilter = NULL;
|
||||
|
@ -3271,7 +3250,7 @@ static int32_t getTagCondString(SSqlCmd* pCmd, tSQLExpr* pExpr, char** str) {
|
|||
return tSQLExprLeafToString(pExpr, true, str);
|
||||
}
|
||||
|
||||
static int32_t getTablenameCond(SSqlCmd* pCmd, tSQLExpr* pTableCond, /*char* str*/SStringBuilder* sb) {
|
||||
static int32_t getTablenameCond(SSqlCmd* pCmd, tSQLExpr* pTableCond, /*char* str*/ SStringBuilder* sb) {
|
||||
const char* msg0 = "invalid table name list";
|
||||
|
||||
if (pTableCond == NULL) {
|
||||
|
@ -3615,10 +3594,9 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, tSQLExpr** pExpr, SCondExpr*
|
|||
const char* msg2 = "illegal column name";
|
||||
const char* msg3 = "only one query time range allowed";
|
||||
const char* msg4 = "only one join condition allowed";
|
||||
const char* msg5 = "AND is allowed to filter on different ordinary columns";
|
||||
const char* msg6 = "not support ordinary column join";
|
||||
const char* msg7 = "only one query condition on tbname allowed";
|
||||
const char* msg8 = "only in/like allowed in filter table name";
|
||||
const char* msg5 = "not support ordinary column join";
|
||||
const char* msg6 = "only one query condition on tbname allowed";
|
||||
const char* msg7 = "only in/like allowed in filter table name";
|
||||
|
||||
tSQLExpr* pLeft = (*pExpr)->pLeft;
|
||||
tSQLExpr* pRight = (*pExpr)->pRight;
|
||||
|
@ -3680,7 +3658,7 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, tSQLExpr** pExpr, SCondExpr*
|
|||
// in case of in operator, keep it in a seperate attribute
|
||||
if (index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
|
||||
if (!validTableNameOptr(*pExpr)) {
|
||||
return invalidSqlErrMsg(pCmd, msg8);
|
||||
return invalidSqlErrMsg(pCmd, msg7);
|
||||
}
|
||||
|
||||
if (pCondExpr->pTableCond == NULL) {
|
||||
|
@ -3688,7 +3666,7 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, tSQLExpr** pExpr, SCondExpr*
|
|||
pCondExpr->relType = parentOptr;
|
||||
pCondExpr->tableCondIndex = index.tableIndex;
|
||||
} else {
|
||||
return invalidSqlErrMsg(pCmd, msg7);
|
||||
return invalidSqlErrMsg(pCmd, msg6);
|
||||
}
|
||||
|
||||
*type = TSQL_EXPR_TBNAME;
|
||||
|
@ -3719,7 +3697,7 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, tSQLExpr** pExpr, SCondExpr*
|
|||
*type = TSQL_EXPR_COLUMN;
|
||||
|
||||
if (pRight->nSQLOptr == TK_ID) { // other column cannot be served as the join column
|
||||
return invalidSqlErrMsg(pCmd, msg6);
|
||||
return invalidSqlErrMsg(pCmd, msg5);
|
||||
}
|
||||
|
||||
ret = setExprToCond(pCmd, &pCondExpr->pColumnCond, *pExpr, NULL, parentOptr);
|
||||
|
@ -3886,9 +3864,9 @@ static int32_t setTableCondForMetricQuery(SSqlObj* pSql, tSQLExpr* pExpr, int16_
|
|||
|
||||
// remove the duplicated input table names
|
||||
int32_t num = 0;
|
||||
char* tableNameString = taosStringBuilderGetResult(sb, NULL);
|
||||
char* tableNameString = taosStringBuilderGetResult(sb, NULL);
|
||||
|
||||
char** segments = strsplit(tableNameString + QUERY_COND_REL_PREFIX_IN_LEN, TBNAME_LIST_SEP, &num);
|
||||
char** segments = strsplit(tableNameString + QUERY_COND_REL_PREFIX_IN_LEN, TBNAME_LIST_SEP, &num);
|
||||
qsort(segments, num, POINTER_BYTES, tableNameCompar);
|
||||
|
||||
int32_t j = 1;
|
||||
|
@ -3907,7 +3885,7 @@ static int32_t setTableCondForMetricQuery(SSqlObj* pSql, tSQLExpr* pExpr, int16_
|
|||
taosStringBuilderAppendStringLen(&sb1, TBNAME_LIST_SEP, 1);
|
||||
}
|
||||
|
||||
char idBuf[TSDB_METER_ID_LEN + 1] = {0};
|
||||
char idBuf[TSDB_METER_ID_LEN + 1] = {0};
|
||||
int32_t xlen = strlen(segments[i]);
|
||||
SSQLToken t = {.z = segments[i], .n = xlen, .type = TK_STRING};
|
||||
|
||||
|
@ -4052,7 +4030,6 @@ static void cleanQueryExpr(SCondExpr* pCondExpr) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
static void doAddJoinTagsColumnsIntoTagList(SSqlCmd* pCmd, SCondExpr* pCondExpr) {
|
||||
SMeterMetaInfo* pMeterMetaInfo = tscGetMeterMetaInfo(pCmd, 0);
|
||||
if (QUERY_IS_JOIN_QUERY(pCmd->type) && UTIL_METER_IS_METRIC(pMeterMetaInfo)) {
|
||||
|
@ -4113,9 +4090,9 @@ int32_t parseWhereClause(SSqlObj* pSql, tSQLExpr** pExpr) {
|
|||
pCmd->stime = 0;
|
||||
pCmd->etime = INT64_MAX;
|
||||
|
||||
//tags query condition may be larger than 512bytes, therefore, we need to prepare enough large space
|
||||
// tags query condition may be larger than 512bytes, therefore, we need to prepare enough large space
|
||||
SStringBuilder sb = {0};
|
||||
SCondExpr condExpr = {0};
|
||||
SCondExpr condExpr = {0};
|
||||
|
||||
if ((*pExpr)->pLeft == NULL || (*pExpr)->pRight == NULL) {
|
||||
return invalidSqlErrMsg(pCmd, msg1);
|
||||
|
@ -4447,7 +4424,6 @@ int32_t parseOrderbyClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql, SSchema* pSchema
|
|||
|
||||
bool orderByTags = false;
|
||||
bool orderByTS = false;
|
||||
bool orderByCol = false;
|
||||
|
||||
if (index.columnIndex >= pMeterMetaInfo->pMeterMeta->numOfColumns) {
|
||||
int32_t relTagIndex = index.columnIndex - pMeterMetaInfo->pMeterMeta->numOfColumns;
|
||||
|
@ -4824,7 +4800,6 @@ int32_t validateSqlFunctionInStreamSql(SSqlCmd* pCmd) {
|
|||
int32_t validateFunctionsInIntervalOrGroupbyQuery(SSqlCmd* pCmd) {
|
||||
bool isProjectionFunction = false;
|
||||
const char* msg1 = "column projection is not compatible with interval";
|
||||
const char* msg2 = "interval not allowed for tag queries";
|
||||
|
||||
// multi-output set/ todo refactor
|
||||
for (int32_t k = 0; k < pCmd->fieldsInfo.numOfOutputCols; ++k) {
|
||||
|
@ -5098,9 +5073,7 @@ static int32_t setKeepOption(SSqlCmd* pCmd, SCreateDbMsg* pMsg, SCreateDBInfo* p
|
|||
pMsg->daysToKeep2 = htonl(pKeep->a[2].pVar.i64Key);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
return invalidSqlErrMsg(pCmd, msg);
|
||||
}
|
||||
default: { return invalidSqlErrMsg(pCmd, msg); }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5121,7 +5094,7 @@ static int32_t setTimePrecisionOption(SSqlCmd* pCmd, SCreateDbMsg* pMsg, SCreate
|
|||
// time precision for this db: million second
|
||||
pMsg->precision = TSDB_TIME_PRECISION_MILLI;
|
||||
} else if (strncmp(pToken->z, TSDB_TIME_PRECISION_MICRO_STR, pToken->n) == 0 &&
|
||||
strlen(TSDB_TIME_PRECISION_MICRO_STR) == pToken->n) {
|
||||
strlen(TSDB_TIME_PRECISION_MICRO_STR) == pToken->n) {
|
||||
pMsg->precision = TSDB_TIME_PRECISION_MICRO;
|
||||
} else {
|
||||
return invalidSqlErrMsg(pCmd, msg);
|
||||
|
@ -5135,7 +5108,7 @@ static void setCreateDBOption(SCreateDbMsg* pMsg, SCreateDBInfo* pCreateDb) {
|
|||
pMsg->blocksPerMeter = htons(pCreateDb->numOfBlocksPerTable);
|
||||
pMsg->compression = pCreateDb->compressionLevel;
|
||||
|
||||
pMsg->commitLog = (char) pCreateDb->commitLog;
|
||||
pMsg->commitLog = (char)pCreateDb->commitLog;
|
||||
pMsg->commitTime = htonl(pCreateDb->commitTime);
|
||||
pMsg->maxSessions = htonl(pCreateDb->tablesPerVnode);
|
||||
pMsg->cacheNumOfBlocks.fraction = pCreateDb->numOfAvgCacheBlocks;
|
||||
|
@ -5254,9 +5227,6 @@ static void doUpdateSqlFunctionForTagPrj(SSqlCmd* pCmd) {
|
|||
}
|
||||
}
|
||||
|
||||
int16_t resType = 0;
|
||||
int16_t resBytes = 0;
|
||||
|
||||
SMeterMetaInfo* pMeterMetaInfo = tscGetMeterMetaInfo(pCmd, 0);
|
||||
SSchema* pSchema = tsGetSchema(pMeterMetaInfo->pMeterMeta);
|
||||
|
||||
|
@ -5353,11 +5323,9 @@ static void updateTagPrjFunction(SSqlCmd* pCmd) {
|
|||
*/
|
||||
static int32_t checkUpdateTagPrjFunctions(SSqlCmd* pCmd) {
|
||||
const char* msg1 = "only one selectivity function allowed in presence of tags function";
|
||||
const char* msg2 = "functions not allowed";
|
||||
const char* msg3 = "aggregation function should not be mixed up with projection";
|
||||
|
||||
bool tagColExists = false;
|
||||
int16_t numOfTimestamp = 0; // primary timestamp column
|
||||
int16_t numOfSelectivity = 0;
|
||||
int16_t numOfAggregation = 0;
|
||||
|
||||
|
@ -5499,13 +5467,10 @@ static int32_t doAddGroupbyColumnsOnDemand(SSqlCmd* pCmd) {
|
|||
|
||||
int32_t doFunctionsCompatibleCheck(SSqlObj* pSql) {
|
||||
const char* msg1 = "functions/columns not allowed in group by query";
|
||||
const char* msg2 = "interval not allowed in group by normal column";
|
||||
const char* msg3 = "group by not allowed on projection query";
|
||||
const char* msg4 = "tags retrieve not compatible with group by";
|
||||
const char* msg5 = "retrieve tags not compatible with group by or interval query";
|
||||
|
||||
SSqlCmd* pCmd = &pSql->cmd;
|
||||
SMeterMetaInfo* pMeterMetaInfo = tscGetMeterMetaInfo(pCmd, 0);
|
||||
SSqlCmd* pCmd = &pSql->cmd;
|
||||
|
||||
// only retrieve tags, group by is not supportted
|
||||
if (pCmd->command == TSDB_SQL_RETRIEVE_TAGS) {
|
||||
|
@ -5517,11 +5482,6 @@ int32_t doFunctionsCompatibleCheck(SSqlObj* pSql) {
|
|||
}
|
||||
|
||||
if (pCmd->groupbyExpr.numOfGroupCols > 0) {
|
||||
SSchema* pSchema = tsGetSchema(pMeterMetaInfo->pMeterMeta);
|
||||
int16_t bytes = 0;
|
||||
int16_t type = 0;
|
||||
char* name = NULL;
|
||||
|
||||
// check if all the tags prj columns belongs to the group by columns
|
||||
if (onlyTagPrjFunction(pCmd) && allTagPrjInGroupby(pCmd)) {
|
||||
updateTagPrjFunction(pCmd);
|
||||
|
@ -5639,14 +5599,12 @@ int32_t doLocalQueryProcess(SQuerySQL* pQuerySql, SSqlCmd* pCmd) {
|
|||
case 4:
|
||||
pCmd->command = TSDB_SQL_CURRENT_USER;
|
||||
return TSDB_CODE_SUCCESS;
|
||||
default: {
|
||||
return invalidSqlErrMsg(pCmd, msg3);
|
||||
}
|
||||
default: { return invalidSqlErrMsg(pCmd, msg3); }
|
||||
}
|
||||
}
|
||||
|
||||
// can only perform the parameters based on the macro definitation
|
||||
int32_t tscCheckCreateDbParams(SSqlCmd* pCmd, SCreateDbMsg *pCreate) {
|
||||
int32_t tscCheckCreateDbParams(SSqlCmd* pCmd, SCreateDbMsg* pCreate) {
|
||||
char msg[512] = {0};
|
||||
|
||||
if (pCreate->commitLog != -1 && (pCreate->commitLog < 0 || pCreate->commitLog > 1)) {
|
||||
|
@ -5656,8 +5614,8 @@ int32_t tscCheckCreateDbParams(SSqlCmd* pCmd, SCreateDbMsg *pCreate) {
|
|||
|
||||
if (pCreate->replications != -1 &&
|
||||
(pCreate->replications < TSDB_REPLICA_MIN_NUM || pCreate->replications > TSDB_REPLICA_MAX_NUM)) {
|
||||
snprintf(msg, tListLen(msg), "invalid db option replications: %d valid range: [%d, %d]", pCreate->replications, TSDB_REPLICA_MIN_NUM,
|
||||
TSDB_REPLICA_MAX_NUM);
|
||||
snprintf(msg, tListLen(msg), "invalid db option replications: %d valid range: [%d, %d]", pCreate->replications,
|
||||
TSDB_REPLICA_MIN_NUM, TSDB_REPLICA_MAX_NUM);
|
||||
return invalidSqlErrMsg(pCmd, msg);
|
||||
}
|
||||
|
||||
|
@ -5684,22 +5642,21 @@ int32_t tscCheckCreateDbParams(SSqlCmd* pCmd, SCreateDbMsg *pCreate) {
|
|||
|
||||
val = htonl(pCreate->maxSessions);
|
||||
if (val != -1 && (val < TSDB_MIN_TABLES_PER_VNODE || val > TSDB_MAX_TABLES_PER_VNODE)) {
|
||||
snprintf(msg, tListLen(msg), "invalid db option maxSessions: %d valid range: [%d, %d]", val, TSDB_MIN_TABLES_PER_VNODE,
|
||||
TSDB_MAX_TABLES_PER_VNODE);
|
||||
snprintf(msg, tListLen(msg), "invalid db option maxSessions: %d valid range: [%d, %d]", val,
|
||||
TSDB_MIN_TABLES_PER_VNODE, TSDB_MAX_TABLES_PER_VNODE);
|
||||
return invalidSqlErrMsg(pCmd, msg);
|
||||
}
|
||||
|
||||
if (pCreate->precision != -1 &&
|
||||
(pCreate->precision != TSDB_TIME_PRECISION_MILLI && pCreate->precision != TSDB_TIME_PRECISION_MICRO)) {
|
||||
snprintf(msg, tListLen(msg), "invalid db option timePrecision: %d valid value: [%d, %d]", pCreate->precision, TSDB_TIME_PRECISION_MILLI,
|
||||
TSDB_TIME_PRECISION_MICRO);
|
||||
if (pCreate->precision != TSDB_TIME_PRECISION_MILLI && pCreate->precision != TSDB_TIME_PRECISION_MICRO) {
|
||||
snprintf(msg, tListLen(msg), "invalid db option timePrecision: %d valid value: [%d, %d]", pCreate->precision,
|
||||
TSDB_TIME_PRECISION_MILLI, TSDB_TIME_PRECISION_MICRO);
|
||||
return invalidSqlErrMsg(pCmd, msg);
|
||||
}
|
||||
|
||||
if (pCreate->cacheNumOfBlocks.fraction != -1 && (pCreate->cacheNumOfBlocks.fraction < TSDB_MIN_AVG_BLOCKS ||
|
||||
pCreate->cacheNumOfBlocks.fraction > TSDB_MAX_AVG_BLOCKS)) {
|
||||
snprintf(msg, tListLen(msg), "invalid db option ablocks: %f valid value: [%d, %d]", pCreate->cacheNumOfBlocks.fraction,
|
||||
TSDB_MIN_AVG_BLOCKS, TSDB_MAX_AVG_BLOCKS);
|
||||
pCreate->cacheNumOfBlocks.fraction > TSDB_MAX_AVG_BLOCKS)) {
|
||||
snprintf(msg, tListLen(msg), "invalid db option ablocks: %f valid value: [%d, %d]",
|
||||
pCreate->cacheNumOfBlocks.fraction, TSDB_MIN_AVG_BLOCKS, TSDB_MAX_AVG_BLOCKS);
|
||||
return invalidSqlErrMsg(pCmd, msg);
|
||||
}
|
||||
|
||||
|
@ -5712,8 +5669,8 @@ int32_t tscCheckCreateDbParams(SSqlCmd* pCmd, SCreateDbMsg *pCreate) {
|
|||
|
||||
if (pCreate->compression != -1 &&
|
||||
(pCreate->compression < TSDB_MIN_COMPRESSION_LEVEL || pCreate->compression > TSDB_MAX_COMPRESSION_LEVEL)) {
|
||||
snprintf(msg, tListLen(msg), "invalid db option compression: %d valid range: [%d, %d]", pCreate->compression, TSDB_MIN_COMPRESSION_LEVEL,
|
||||
TSDB_MAX_COMPRESSION_LEVEL);
|
||||
snprintf(msg, tListLen(msg), "invalid db option compression: %d valid range: [%d, %d]", pCreate->compression,
|
||||
TSDB_MIN_COMPRESSION_LEVEL, TSDB_MAX_COMPRESSION_LEVEL);
|
||||
return invalidSqlErrMsg(pCmd, msg);
|
||||
}
|
||||
|
||||
|
@ -5726,11 +5683,11 @@ void tscPrintSelectClause(SSqlCmd* pCmd) {
|
|||
return;
|
||||
}
|
||||
|
||||
char* str = calloc(1, 10240);
|
||||
char* str = calloc(1, 10240);
|
||||
int32_t offset = 0;
|
||||
|
||||
offset += sprintf(str, "%d [", pCmd->exprsInfo.numOfExprs);
|
||||
for(int32_t i = 0; i < pCmd->exprsInfo.numOfExprs; ++i) {
|
||||
for (int32_t i = 0; i < pCmd->exprsInfo.numOfExprs; ++i) {
|
||||
SSqlExpr* pExpr = tscSqlExprGet(pCmd, i);
|
||||
|
||||
int32_t size = sprintf(str + offset, "%s(%d)", aAggs[pExpr->functionId].aName, pExpr->colInfo.colId);
|
||||
|
|
|
@ -83,6 +83,13 @@ struct SSchema* tsGetColumnSchema(SMeterMeta* pMeta, int32_t startCol) {
|
|||
return (SSchema*)(((char*)pMeta + sizeof(SMeterMeta)) + startCol * sizeof(SSchema));
|
||||
}
|
||||
|
||||
struct SSchema tsGetTbnameColumnSchema() {
|
||||
struct SSchema s = {.colId = TSDB_TBNAME_COLUMN_INDEX, .type = TSDB_DATA_TYPE_BINARY, .bytes = TSDB_METER_NAME_LEN};
|
||||
strcpy(s.name, TSQL_TBNAME_L);
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
/**
|
||||
* the MeterMeta data format in memory is as follows:
|
||||
*
|
||||
|
@ -123,7 +130,7 @@ bool tsMeterMetaIdentical(SMeterMeta* p1, SMeterMeta* p2) {
|
|||
return memcmp(p1, p2, size) == 0;
|
||||
}
|
||||
|
||||
//todo refactor
|
||||
// todo refactor
|
||||
static FORCE_INLINE char* skipSegments(char* input, char delimiter, int32_t num) {
|
||||
for (int32_t i = 0; i < num; ++i) {
|
||||
while (*input != 0 && *input++ != delimiter) {
|
||||
|
|
|
@ -47,6 +47,7 @@ struct SSchema *tsGetSchema(SMeterMeta *pMeta);
|
|||
struct SSchema *tsGetTagSchema(SMeterMeta *pMeta);
|
||||
|
||||
struct SSchema *tsGetColumnSchema(SMeterMeta *pMeta, int32_t startCol);
|
||||
struct SSchema tsGetTbnameColumnSchema();
|
||||
|
||||
char *tsGetTagsValue(SMeterMeta *pMeta);
|
||||
|
||||
|
|
|
@ -227,8 +227,6 @@ typedef struct SPatternCompareInfo {
|
|||
int32_t getResultDataInfo(int32_t dataType, int32_t dataBytes, int32_t functionId, int32_t param, int16_t *type,
|
||||
int16_t *len, int16_t *interResBytes, int16_t extLength, bool isSuperTable);
|
||||
|
||||
SResultInfo *getResultSupportInfo(SQLFunctionCtx *pCtx);
|
||||
|
||||
int patternMatch(const char *zPattern, const char *zString, size_t size, const SPatternCompareInfo *pInfo);
|
||||
|
||||
int WCSPatternMatch(const wchar_t *zPattern, const wchar_t *zString, size_t size, const SPatternCompareInfo *pInfo);
|
||||
|
|
|
@ -50,7 +50,7 @@ bool isNull(const char *val, int32_t type);
|
|||
void setNull(char *val, int32_t type, int32_t bytes);
|
||||
void setNullN(char *val, int32_t type, int32_t bytes, int32_t numOfElems);
|
||||
|
||||
void assignVal(char *val, char *src, int32_t len, int32_t type);
|
||||
void assignVal(char *val, const char *src, int32_t len, int32_t type);
|
||||
void tsDataSwap(void *pLeft, void *pRight, int32_t type, int32_t size);
|
||||
|
||||
// variant, each number/string/field_id has a corresponding struct during parsing sql
|
||||
|
|
|
@ -970,7 +970,7 @@ void setNullN(char *val, int32_t type, int32_t bytes, int32_t numOfElems) {
|
|||
}
|
||||
}
|
||||
|
||||
void assignVal(char *val, char *src, int32_t len, int32_t type) {
|
||||
void assignVal(char *val, const char *src, int32_t len, int32_t type) {
|
||||
switch (type) {
|
||||
case TSDB_DATA_TYPE_INT: {
|
||||
*((int32_t *)val) = GET_INT32_VAL(src);
|
||||
|
|
Loading…
Reference in New Issue