commit
c455f8976e
|
@ -42,11 +42,13 @@ static void tscAsyncFetchSingleRowProxy(void *param, TAOS_RES *tres, int numOfRo
|
||||||
int doAsyncParseSql(SSqlObj* pSql) {
|
int doAsyncParseSql(SSqlObj* pSql) {
|
||||||
SSqlCmd* pCmd = &pSql->cmd;
|
SSqlCmd* pCmd = &pSql->cmd;
|
||||||
SSqlRes* pRes = &pSql->res;
|
SSqlRes* pRes = &pSql->res;
|
||||||
|
|
||||||
int32_t code = tscAllocPayload(pCmd, TSDB_DEFAULT_PAYLOAD_SIZE);
|
int32_t code = tscAllocPayload(pCmd, TSDB_DEFAULT_PAYLOAD_SIZE);
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
tscError("failed to malloc payload");
|
tscError("failed to malloc payload");
|
||||||
|
pSql->res.code = code;
|
||||||
|
|
||||||
tscQueueAsyncRes(pSql);
|
tscQueueAsyncRes(pSql);
|
||||||
// tscQueueAsyncRes(pSql->fp, pSql->param, TSDB_CODE_TSC_OUT_OF_MEMORY);
|
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1354,7 +1354,7 @@ int tsParseSql(SSqlObj *pSql, bool initialParse) {
|
||||||
if (TSDB_CODE_SUCCESS != ret) {
|
if (TSDB_CODE_SUCCESS != ret) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
SSqlInfo SQLInfo = qSQLParse(pSql->sqlstr);
|
SSqlInfo SQLInfo = qSQLParse(pSql->sqlstr);
|
||||||
ret = tscToSQLCmd(pSql, &SQLInfo);
|
ret = tscToSQLCmd(pSql, &SQLInfo);
|
||||||
SQLInfoDestroy(&SQLInfo);
|
SQLInfoDestroy(&SQLInfo);
|
||||||
|
|
|
@ -1482,7 +1482,8 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr
|
||||||
const char* msg5 = "parameter is out of range [0, 100]";
|
const char* msg5 = "parameter is out of range [0, 100]";
|
||||||
const char* msg6 = "function applied to tags not allowed";
|
const char* msg6 = "function applied to tags not allowed";
|
||||||
const char* msg7 = "normal table can not apply this function";
|
const char* msg7 = "normal table can not apply this function";
|
||||||
|
const char* msg8 = "multi-columns selection does not support alias column name";
|
||||||
|
|
||||||
switch (optr) {
|
switch (optr) {
|
||||||
case TK_COUNT: {
|
case TK_COUNT: {
|
||||||
if (pItem->pNode->pParam != NULL && pItem->pNode->pParam->nExpr != 1) {
|
if (pItem->pNode->pParam != NULL && pItem->pNode->pParam->nExpr != 1) {
|
||||||
|
@ -1689,6 +1690,10 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr
|
||||||
return invalidSqlErrMsg(pQueryInfo->msg, msg3);
|
return invalidSqlErrMsg(pQueryInfo->msg, msg3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pItem->pNode->pParam->nExpr > 1 && strlen(pItem->aliasName) > 0) {
|
||||||
|
return invalidSqlErrMsg(pQueryInfo->msg, msg8);
|
||||||
|
}
|
||||||
|
|
||||||
/* in first/last function, multiple columns can be add to resultset */
|
/* in first/last function, multiple columns can be add to resultset */
|
||||||
for (int32_t i = 0; i < pItem->pNode->pParam->nExpr; ++i) {
|
for (int32_t i = 0; i < pItem->pNode->pParam->nExpr; ++i) {
|
||||||
tSQLExprItem* pParamElem = &(pItem->pNode->pParam->a[i]);
|
tSQLExprItem* pParamElem = &(pItem->pNode->pParam->a[i]);
|
||||||
|
@ -1755,6 +1760,11 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr
|
||||||
} else { // select * from xxx
|
} else { // select * from xxx
|
||||||
int32_t numOfFields = 0;
|
int32_t numOfFields = 0;
|
||||||
|
|
||||||
|
// multicolumn selection does not support alias name
|
||||||
|
if (strlen(pItem->aliasName) != 0) {
|
||||||
|
return invalidSqlErrMsg(pQueryInfo->msg, msg8);
|
||||||
|
}
|
||||||
|
|
||||||
for (int32_t j = 0; j < pQueryInfo->numOfTables; ++j) {
|
for (int32_t j = 0; j < pQueryInfo->numOfTables; ++j) {
|
||||||
pTableMetaInfo = tscGetMetaInfo(pQueryInfo, j);
|
pTableMetaInfo = tscGetMetaInfo(pQueryInfo, j);
|
||||||
SSchema* pSchema = tscGetTableSchema(pTableMetaInfo->pTableMeta);
|
SSchema* pSchema = tscGetTableSchema(pTableMetaInfo->pTableMeta);
|
||||||
|
|
|
@ -1896,7 +1896,8 @@ int32_t tscHandleMultivnodeInsert(SSqlObj *pSql) {
|
||||||
tscTrace("%p submit data to %d vnode(s)", pSql, pDataBlocks->nSize);
|
tscTrace("%p submit data to %d vnode(s)", pSql, pDataBlocks->nSize);
|
||||||
SSubqueryState *pState = calloc(1, sizeof(SSubqueryState));
|
SSubqueryState *pState = calloc(1, sizeof(SSubqueryState));
|
||||||
pState->numOfTotal = pSql->numOfSubs;
|
pState->numOfTotal = pSql->numOfSubs;
|
||||||
|
pState->numOfRemain = pState->numOfTotal;
|
||||||
|
|
||||||
pRes->code = TSDB_CODE_SUCCESS;
|
pRes->code = TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
int32_t i = 0;
|
int32_t i = 0;
|
||||||
|
@ -1917,8 +1918,7 @@ int32_t tscHandleMultivnodeInsert(SSqlObj *pSql) {
|
||||||
*/
|
*/
|
||||||
pNew->fetchFp = pNew->fp;
|
pNew->fetchFp = pNew->fp;
|
||||||
pSql->pSubs[i] = pNew;
|
pSql->pSubs[i] = pNew;
|
||||||
pNew->fetchFp = pNew->fp;
|
|
||||||
|
|
||||||
tscTrace("%p sub:%p create subObj success. orderOfSub:%d", pSql, pNew, i);
|
tscTrace("%p sub:%p create subObj success. orderOfSub:%d", pSql, pNew, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1581,24 +1581,6 @@ void tscClearSubqueryInfo(SSqlCmd* pCmd) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void doRemoveTableMetaInfo(SQueryInfo* pQueryInfo, int32_t index, bool removeFromCache) {
|
|
||||||
if (index < 0 || index >= pQueryInfo->numOfTables) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index);
|
|
||||||
|
|
||||||
tscClearTableMetaInfo(pTableMetaInfo, removeFromCache);
|
|
||||||
free(pTableMetaInfo);
|
|
||||||
|
|
||||||
int32_t after = pQueryInfo->numOfTables - index - 1;
|
|
||||||
if (after > 0) {
|
|
||||||
memmove(&pQueryInfo->pTableMetaInfo[index], &pQueryInfo->pTableMetaInfo[index + 1], after * POINTER_BYTES);
|
|
||||||
}
|
|
||||||
|
|
||||||
pQueryInfo->numOfTables -= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void clearAllTableMetaInfo(SQueryInfo* pQueryInfo, const char* address, bool removeFromCache) {
|
void clearAllTableMetaInfo(SQueryInfo* pQueryInfo, const char* address, bool removeFromCache) {
|
||||||
tscTrace("%p deref the table meta in cache, numOfTables:%d", address, pQueryInfo->numOfTables);
|
tscTrace("%p deref the table meta in cache, numOfTables:%d", address, pQueryInfo->numOfTables);
|
||||||
|
|
||||||
|
|
|
@ -365,8 +365,10 @@ static int32_t mnodeProcessDnodeStatusMsg(SMnodeMsg *pMsg) {
|
||||||
mnodeUpdateVgroupStatus(pVgroup, pDnode, pVload);
|
mnodeUpdateVgroupStatus(pVgroup, pDnode, pVload);
|
||||||
pAccess->vgId = htonl(pVload->vgId);
|
pAccess->vgId = htonl(pVload->vgId);
|
||||||
pAccess->accessState = pVgroup->accessState;
|
pAccess->accessState = pVgroup->accessState;
|
||||||
|
pAccess++;
|
||||||
mnodeDecVgroupRef(pVgroup);
|
mnodeDecVgroupRef(pVgroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pDnode->status == TAOS_DN_STATUS_OFFLINE) {
|
if (pDnode->status == TAOS_DN_STATUS_OFFLINE) {
|
||||||
|
|
|
@ -191,9 +191,7 @@ int WCSPatternMatch(const wchar_t *patterStr, const wchar_t *str, size_t size, c
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
str++;
|
int32_t ret = WCSPatternMatch(&patterStr[i], ++str, size - n - 1, pInfo);
|
||||||
|
|
||||||
int32_t ret = WCSPatternMatch(&patterStr[i], str, wcslen(str), pInfo);
|
|
||||||
if (ret != TSDB_PATTERN_NOMATCH) {
|
if (ret != TSDB_PATTERN_NOMATCH) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -241,9 +239,11 @@ static int32_t compareFindStrInArray(const void* pLeft, const void* pRight) {
|
||||||
|
|
||||||
static int32_t compareWStrPatternComp(const void* pLeft, const void* pRight) {
|
static int32_t compareWStrPatternComp(const void* pLeft, const void* pRight) {
|
||||||
SPatternCompareInfo pInfo = {'%', '_'};
|
SPatternCompareInfo pInfo = {'%', '_'};
|
||||||
|
|
||||||
wchar_t pattern[128] = {0};
|
wchar_t pattern[128] = {0};
|
||||||
memcpy(pattern, varDataVal(pRight), varDataLen(pRight)/TSDB_NCHAR_SIZE);
|
assert(TSDB_PATTERN_STRING_MAX_LEN < 128);
|
||||||
|
|
||||||
|
memcpy(pattern, varDataVal(pRight), varDataLen(pRight));
|
||||||
assert(varDataLen(pRight) < 128);
|
assert(varDataLen(pRight) < 128);
|
||||||
|
|
||||||
int32_t ret = WCSPatternMatch(pattern, varDataVal(pLeft), varDataLen(pLeft)/TSDB_NCHAR_SIZE, &pInfo);
|
int32_t ret = WCSPatternMatch(pattern, varDataVal(pLeft), varDataLen(pLeft)/TSDB_NCHAR_SIZE, &pInfo);
|
||||||
|
|
Loading…
Reference in New Issue