make create table work
This commit is contained in:
parent
dd4dd52edd
commit
77100ef11a
|
@ -17,7 +17,8 @@ static bool has(SArray* pFieldList, int32_t startIndex, const char* name) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t setShowInfo(SShowInfo* pShowInfo, SParseBasicCtx *pCtx, void** output, int32_t* outputLen, SMsgBuf* pMsgBuf) {
|
static int32_t setShowInfo(SShowInfo* pShowInfo, SParseBasicCtx* pCtx, void** output, int32_t* outputLen,
|
||||||
|
SMsgBuf* pMsgBuf) {
|
||||||
const char* msg1 = "invalid name";
|
const char* msg1 = "invalid name";
|
||||||
const char* msg2 = "wildcard string should be less than %d characters";
|
const char* msg2 = "wildcard string should be less than %d characters";
|
||||||
const char* msg3 = "database name too long";
|
const char* msg3 = "database name too long";
|
||||||
|
@ -29,7 +30,7 @@ static int32_t setShowInfo(SShowInfo* pShowInfo, SParseBasicCtx *pCtx, void** ou
|
||||||
* database prefix in pInfo->pMiscInfo->a[0]
|
* database prefix in pInfo->pMiscInfo->a[0]
|
||||||
* wildcard in like clause in pInfo->pMiscInfo->a[1]
|
* wildcard in like clause in pInfo->pMiscInfo->a[1]
|
||||||
*/
|
*/
|
||||||
int16_t showType = pShowInfo->showType;
|
int16_t showType = pShowInfo->showType;
|
||||||
if (showType == TSDB_MGMT_TABLE_STB || showType == TSDB_MGMT_TABLE_VGROUP) {
|
if (showType == TSDB_MGMT_TABLE_STB || showType == TSDB_MGMT_TABLE_VGROUP) {
|
||||||
SToken* pDbPrefixToken = &pShowInfo->prefix;
|
SToken* pDbPrefixToken = &pShowInfo->prefix;
|
||||||
if (pDbPrefixToken->type != 0) {
|
if (pDbPrefixToken->type != 0) {
|
||||||
|
@ -80,7 +81,7 @@ static int32_t setShowInfo(SShowInfo* pShowInfo, SParseBasicCtx *pCtx, void** ou
|
||||||
}
|
}
|
||||||
|
|
||||||
*output = buildShowMsg(pShowInfo, pCtx, pMsgBuf->buf, pMsgBuf->len);
|
*output = buildShowMsg(pShowInfo, pCtx, pMsgBuf->buf, pMsgBuf->len);
|
||||||
*outputLen = sizeof(SShowMsg)/* + htons(pShowMsg->payloadLen)*/;
|
*outputLen = sizeof(SShowMsg) /* + htons(pShowMsg->payloadLen)*/;
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,8 +117,8 @@ static int32_t doCheckDbOptions(SCreateDbMsg* pCreate, SMsgBuf* pMsgBuf) {
|
||||||
|
|
||||||
int32_t val = htonl(pCreate->daysPerFile);
|
int32_t val = htonl(pCreate->daysPerFile);
|
||||||
if (val != -1 && (val < TSDB_MIN_DAYS_PER_FILE || val > TSDB_MAX_DAYS_PER_FILE)) {
|
if (val != -1 && (val < TSDB_MIN_DAYS_PER_FILE || val > TSDB_MAX_DAYS_PER_FILE)) {
|
||||||
snprintf(msg, tListLen(msg), "invalid db option daysPerFile: %d valid range: [%d, %d]", val,
|
snprintf(msg, tListLen(msg), "invalid db option daysPerFile: %d valid range: [%d, %d]", val, TSDB_MIN_DAYS_PER_FILE,
|
||||||
TSDB_MIN_DAYS_PER_FILE, TSDB_MAX_DAYS_PER_FILE);
|
TSDB_MAX_DAYS_PER_FILE);
|
||||||
return buildInvalidOperationMsg(pMsgBuf, msg);
|
return buildInvalidOperationMsg(pMsgBuf, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,15 +138,15 @@ static int32_t doCheckDbOptions(SCreateDbMsg* pCreate, SMsgBuf* pMsgBuf) {
|
||||||
|
|
||||||
val = htonl(pCreate->commitTime);
|
val = htonl(pCreate->commitTime);
|
||||||
if (val != -1 && (val < TSDB_MIN_COMMIT_TIME || val > TSDB_MAX_COMMIT_TIME)) {
|
if (val != -1 && (val < TSDB_MIN_COMMIT_TIME || val > TSDB_MAX_COMMIT_TIME)) {
|
||||||
snprintf(msg, tListLen(msg), "invalid db option commitTime: %d valid range: [%d, %d]", val,
|
snprintf(msg, tListLen(msg), "invalid db option commitTime: %d valid range: [%d, %d]", val, TSDB_MIN_COMMIT_TIME,
|
||||||
TSDB_MIN_COMMIT_TIME, TSDB_MAX_COMMIT_TIME);
|
TSDB_MAX_COMMIT_TIME);
|
||||||
return buildInvalidOperationMsg(pMsgBuf, msg);
|
return buildInvalidOperationMsg(pMsgBuf, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
val = htonl(pCreate->fsyncPeriod);
|
val = htonl(pCreate->fsyncPeriod);
|
||||||
if (val != -1 && (val < TSDB_MIN_FSYNC_PERIOD || val > TSDB_MAX_FSYNC_PERIOD)) {
|
if (val != -1 && (val < TSDB_MIN_FSYNC_PERIOD || val > TSDB_MAX_FSYNC_PERIOD)) {
|
||||||
snprintf(msg, tListLen(msg), "invalid db option fsyncPeriod: %d valid range: [%d, %d]", val,
|
snprintf(msg, tListLen(msg), "invalid db option fsyncPeriod: %d valid range: [%d, %d]", val, TSDB_MIN_FSYNC_PERIOD,
|
||||||
TSDB_MIN_FSYNC_PERIOD, TSDB_MAX_FSYNC_PERIOD);
|
TSDB_MAX_FSYNC_PERIOD);
|
||||||
return buildInvalidOperationMsg(pMsgBuf, msg);
|
return buildInvalidOperationMsg(pMsgBuf, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -284,7 +285,8 @@ int32_t doCheckForCreateTable(SSqlInfo* pInfo, SMsgBuf* pMsgBuf) {
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t doCheckForCreateCTable(SSqlInfo* pInfo, SParseBasicCtx *pCtx, SMsgBuf* pMsgBuf, char** pOutput, int32_t* len, SEpSet* pEpSet) {
|
int32_t doCheckForCreateCTable(SSqlInfo* pInfo, SParseBasicCtx* pCtx, SMsgBuf* pMsgBuf, char** pOutput, int32_t* len,
|
||||||
|
SEpSet* pEpSet) {
|
||||||
const char* msg1 = "invalid table name";
|
const char* msg1 = "invalid table name";
|
||||||
const char* msg2 = "tags number not matched";
|
const char* msg2 = "tags number not matched";
|
||||||
const char* msg3 = "tag value too long";
|
const char* msg3 = "tag value too long";
|
||||||
|
@ -293,13 +295,13 @@ int32_t doCheckForCreateCTable(SSqlInfo* pInfo, SParseBasicCtx *pCtx, SMsgBuf* p
|
||||||
SCreateTableSql* pCreateTable = pInfo->pCreateTableInfo;
|
SCreateTableSql* pCreateTable = pInfo->pCreateTableInfo;
|
||||||
|
|
||||||
// super table name, create table by using dst
|
// super table name, create table by using dst
|
||||||
int32_t numOfTables = (int32_t) taosArrayGetSize(pCreateTable->childTableInfo);
|
int32_t numOfTables = (int32_t)taosArrayGetSize(pCreateTable->childTableInfo);
|
||||||
for(int32_t j = 0; j < numOfTables; ++j) {
|
for (int32_t j = 0; j < numOfTables; ++j) {
|
||||||
SCreatedTableInfo* pCreateTableInfo = taosArrayGet(pCreateTable->childTableInfo, j);
|
SCreatedTableInfo* pCreateTableInfo = taosArrayGet(pCreateTable->childTableInfo, j);
|
||||||
|
|
||||||
SToken* pSTableNameToken = &pCreateTableInfo->stbName;
|
SToken* pSTableNameToken = &pCreateTableInfo->stbName;
|
||||||
|
|
||||||
char buf[TSDB_TABLE_FNAME_LEN];
|
char buf[TSDB_TABLE_FNAME_LEN];
|
||||||
SToken sTblToken;
|
SToken sTblToken;
|
||||||
sTblToken.z = buf;
|
sTblToken.z = buf;
|
||||||
|
|
||||||
|
@ -315,7 +317,7 @@ int32_t doCheckForCreateCTable(SSqlInfo* pInfo, SParseBasicCtx *pCtx, SMsgBuf* p
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* pStableName = tNameGetTableName(&name);
|
const char* pStableName = tNameGetTableName(&name);
|
||||||
SArray* pValList = pCreateTableInfo->pTagVals;
|
SArray* pValList = pCreateTableInfo->pTagVals;
|
||||||
|
|
||||||
size_t numOfInputTag = taosArrayGetSize(pValList);
|
size_t numOfInputTag = taosArrayGetSize(pValList);
|
||||||
STableMeta* pSuperTableMeta = NULL;
|
STableMeta* pSuperTableMeta = NULL;
|
||||||
|
@ -327,9 +329,9 @@ int32_t doCheckForCreateCTable(SSqlInfo* pInfo, SParseBasicCtx *pCtx, SMsgBuf* p
|
||||||
assert(pSuperTableMeta != NULL);
|
assert(pSuperTableMeta != NULL);
|
||||||
|
|
||||||
// too long tag values will return invalid sql, not be truncated automatically
|
// too long tag values will return invalid sql, not be truncated automatically
|
||||||
SSchema *pTagSchema = getTableTagSchema(pSuperTableMeta);
|
SSchema* pTagSchema = getTableTagSchema(pSuperTableMeta);
|
||||||
STableComInfo tinfo = getTableInfo(pSuperTableMeta);
|
STableComInfo tinfo = getTableInfo(pSuperTableMeta);
|
||||||
STagData *pTag = &pCreateTableInfo->tagdata;
|
STagData* pTag = &pCreateTableInfo->tagdata;
|
||||||
|
|
||||||
SKVRowBuilder kvRowBuilder = {0};
|
SKVRowBuilder kvRowBuilder = {0};
|
||||||
if (tdInitKVRowBuilder(&kvRowBuilder) < 0) {
|
if (tdInitKVRowBuilder(&kvRowBuilder) < 0) {
|
||||||
|
@ -353,17 +355,17 @@ int32_t doCheckForCreateCTable(SSqlInfo* pInfo, SParseBasicCtx *pCtx, SMsgBuf* p
|
||||||
for (int32_t i = 0; i < nameSize; ++i) {
|
for (int32_t i = 0; i < nameSize; ++i) {
|
||||||
SToken* sToken = taosArrayGet(pNameList, i);
|
SToken* sToken = taosArrayGet(pNameList, i);
|
||||||
|
|
||||||
char tmpTokenBuf[TSDB_MAX_BYTES_PER_ROW] = {0}; // create tmp buf to avoid alter orginal sqlstr
|
char tmpTokenBuf[TSDB_MAX_BYTES_PER_ROW] = {0}; // create tmp buf to avoid alter orginal sqlstr
|
||||||
strncpy(tmpTokenBuf, sToken->z, sToken->n);
|
strncpy(tmpTokenBuf, sToken->z, sToken->n);
|
||||||
sToken->z = tmpTokenBuf;
|
sToken->z = tmpTokenBuf;
|
||||||
|
|
||||||
// if (TK_STRING == sToken->type) {
|
// if (TK_STRING == sToken->type) {
|
||||||
// tscDequoteAndTrimToken(sToken);
|
// tscDequoteAndTrimToken(sToken);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// if (TK_ID == sToken->type) {
|
// if (TK_ID == sToken->type) {
|
||||||
// tscRmEscapeAndTrimToken(sToken);
|
// tscRmEscapeAndTrimToken(sToken);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
SListItem* pItem = taosArrayGet(pValList, i);
|
SListItem* pItem = taosArrayGet(pValList, i);
|
||||||
|
|
||||||
|
@ -372,7 +374,7 @@ int32_t doCheckForCreateCTable(SSqlInfo* pInfo, SParseBasicCtx *pCtx, SMsgBuf* p
|
||||||
// todo speedup by using hash list
|
// todo speedup by using hash list
|
||||||
for (int32_t t = 0; t < schemaSize; ++t) {
|
for (int32_t t = 0; t < schemaSize; ++t) {
|
||||||
if (strncmp(sToken->z, pTagSchema[t].name, sToken->n) == 0 && strlen(pTagSchema[t].name) == sToken->n) {
|
if (strncmp(sToken->z, pTagSchema[t].name, sToken->n) == 0 && strlen(pTagSchema[t].name) == sToken->n) {
|
||||||
SSchema* pSchema = &pTagSchema[t];
|
SSchema* pSchema = &pTagSchema[t];
|
||||||
|
|
||||||
char tagVal[TSDB_MAX_TAGS_LEN] = {0};
|
char tagVal[TSDB_MAX_TAGS_LEN] = {0};
|
||||||
if (pSchema->type == TSDB_DATA_TYPE_BINARY || pSchema->type == TSDB_DATA_TYPE_NCHAR) {
|
if (pSchema->type == TSDB_DATA_TYPE_BINARY || pSchema->type == TSDB_DATA_TYPE_NCHAR) {
|
||||||
|
@ -382,10 +384,10 @@ int32_t doCheckForCreateCTable(SSqlInfo* pInfo, SParseBasicCtx *pCtx, SMsgBuf* p
|
||||||
}
|
}
|
||||||
} else if (pSchema->type == TSDB_DATA_TYPE_TIMESTAMP) {
|
} else if (pSchema->type == TSDB_DATA_TYPE_TIMESTAMP) {
|
||||||
if (pItem->pVar.nType == TSDB_DATA_TYPE_BINARY) {
|
if (pItem->pVar.nType == TSDB_DATA_TYPE_BINARY) {
|
||||||
// code = convertTimestampStrToInt64(&(pItem->pVar), tinfo.precision);
|
// code = convertTimestampStrToInt64(&(pItem->pVar), tinfo.precision);
|
||||||
// if (code != TSDB_CODE_SUCCESS) {
|
// if (code != TSDB_CODE_SUCCESS) {
|
||||||
// return buildInvalidOperationMsg(pMsgBuf, msg4);
|
// return buildInvalidOperationMsg(pMsgBuf, msg4);
|
||||||
// }
|
// }
|
||||||
} else if (pItem->pVar.nType == TSDB_DATA_TYPE_TIMESTAMP) {
|
} else if (pItem->pVar.nType == TSDB_DATA_TYPE_TIMESTAMP) {
|
||||||
pItem->pVar.i = convertTimePrecision(pItem->pVar.i, TSDB_TIME_PRECISION_NANO, tinfo.precision);
|
pItem->pVar.i = convertTimePrecision(pItem->pVar.i, TSDB_TIME_PRECISION_NANO, tinfo.precision);
|
||||||
}
|
}
|
||||||
|
@ -416,7 +418,7 @@ int32_t doCheckForCreateCTable(SSqlInfo* pInfo, SParseBasicCtx *pCtx, SMsgBuf* p
|
||||||
|
|
||||||
if (!findColumnIndex) {
|
if (!findColumnIndex) {
|
||||||
tdDestroyKVRowBuilder(&kvRowBuilder);
|
tdDestroyKVRowBuilder(&kvRowBuilder);
|
||||||
// return buildInvalidOperationMsg(pMsgBuf, "invalid tag name", sToken->z);
|
// return buildInvalidOperationMsg(pMsgBuf, "invalid tag name", sToken->z);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -426,8 +428,8 @@ int32_t doCheckForCreateCTable(SSqlInfo* pInfo, SParseBasicCtx *pCtx, SMsgBuf* p
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int32_t i = 0; i < numOfInputTag; ++i) {
|
for (int32_t i = 0; i < numOfInputTag; ++i) {
|
||||||
SSchema *pSchema = &pTagSchema[i];
|
SSchema* pSchema = &pTagSchema[i];
|
||||||
SToken* pItem = taosArrayGet(pValList, i);
|
SToken* pItem = taosArrayGet(pValList, i);
|
||||||
|
|
||||||
if (pSchema->type == TSDB_DATA_TYPE_BINARY || pSchema->type == TSDB_DATA_TYPE_NCHAR) {
|
if (pSchema->type == TSDB_DATA_TYPE_BINARY || pSchema->type == TSDB_DATA_TYPE_NCHAR) {
|
||||||
if (pItem->n > pSchema->bytes) {
|
if (pItem->n > pSchema->bytes) {
|
||||||
|
@ -435,17 +437,17 @@ int32_t doCheckForCreateCTable(SSqlInfo* pInfo, SParseBasicCtx *pCtx, SMsgBuf* p
|
||||||
return buildInvalidOperationMsg(pMsgBuf, msg3);
|
return buildInvalidOperationMsg(pMsgBuf, msg3);
|
||||||
}
|
}
|
||||||
} else if (pSchema->type == TSDB_DATA_TYPE_TIMESTAMP) {
|
} else if (pSchema->type == TSDB_DATA_TYPE_TIMESTAMP) {
|
||||||
// if (pItem->pVar.nType == TSDB_DATA_TYPE_BINARY) {
|
// if (pItem->pVar.nType == TSDB_DATA_TYPE_BINARY) {
|
||||||
//// code = convertTimestampStrToInt64(&(pItem->pVar), tinfo.precision);
|
//// code = convertTimestampStrToInt64(&(pItem->pVar), tinfo.precision);
|
||||||
// if (code != TSDB_CODE_SUCCESS) {
|
// if (code != TSDB_CODE_SUCCESS) {
|
||||||
// return buildInvalidOperationMsg(pMsgBuf, msg4);
|
// return buildInvalidOperationMsg(pMsgBuf, msg4);
|
||||||
// }
|
// }
|
||||||
// } else if (pItem->pVar.nType == TSDB_DATA_TYPE_TIMESTAMP) {
|
// } else if (pItem->pVar.nType == TSDB_DATA_TYPE_TIMESTAMP) {
|
||||||
// pItem->pVar.i = convertTimePrecision(pItem->pVar.i, TSDB_TIME_PRECISION_NANO, tinfo.precision);
|
// pItem->pVar.i = convertTimePrecision(pItem->pVar.i, TSDB_TIME_PRECISION_NANO, tinfo.precision);
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
char tmpTokenBuf[TSDB_MAX_TAGS_LEN] = {0};
|
char tmpTokenBuf[TSDB_MAX_TAGS_LEN] = {0};
|
||||||
SKvParam param = {.builder = &kvRowBuilder, .schema = pSchema};
|
SKvParam param = {.builder = &kvRowBuilder, .schema = pSchema};
|
||||||
|
|
||||||
char* endPtr = NULL;
|
char* endPtr = NULL;
|
||||||
|
@ -478,32 +480,35 @@ int32_t doCheckForCreateCTable(SSqlInfo* pInfo, SParseBasicCtx *pCtx, SMsgBuf* p
|
||||||
req.ctbCfg.suid = pSuperTableMeta->suid;
|
req.ctbCfg.suid = pSuperTableMeta->suid;
|
||||||
req.ctbCfg.pTag = row;
|
req.ctbCfg.pTag = row;
|
||||||
|
|
||||||
int32_t serLen = tSerializeSVCreateTbReq(NULL, &req);
|
int32_t serLen = sizeof(SMsgHead) + tSerializeSVCreateTbReq(NULL, &req);
|
||||||
char* buf1 = calloc(1, serLen);
|
char* buf1 = calloc(1, serLen);
|
||||||
char* p = buf1;
|
*pOutput = buf1;
|
||||||
tSerializeSVCreateTbReq((void*) &buf1, &req);
|
buf1 += sizeof(SMsgHead);
|
||||||
*pOutput = p;
|
tSerializeSVCreateTbReq((void*)&buf1, &req);
|
||||||
*len = serLen;
|
*len = serLen;
|
||||||
|
|
||||||
SVgroupInfo info = {0};
|
SVgroupInfo info = {0};
|
||||||
catalogGetTableHashVgroup(pCtx->pCatalog, pCtx->pTransporter, &pCtx->mgmtEpSet, dbName, req.name, &info);
|
catalogGetTableHashVgroup(pCtx->pCatalog, pCtx->pTransporter, &pCtx->mgmtEpSet, dbName, req.name, &info);
|
||||||
|
|
||||||
pEpSet->inUse = info.inUse;
|
pEpSet->inUse = info.inUse;
|
||||||
pEpSet->numOfEps = info.numOfEps;
|
pEpSet->numOfEps = info.numOfEps;
|
||||||
for(int32_t i = 0; i < pEpSet->numOfEps; ++i) {
|
for (int32_t i = 0; i < pEpSet->numOfEps; ++i) {
|
||||||
pEpSet->port[i] = info.epAddr[i].port;
|
pEpSet->port[i] = info.epAddr[i].port;
|
||||||
tstrncpy(pEpSet->fqdn[i], info.epAddr[i].fqdn, tListLen(pEpSet->fqdn[i]));
|
tstrncpy(pEpSet->fqdn[i], info.epAddr[i].fqdn, tListLen(pEpSet->fqdn[i]));
|
||||||
}
|
}
|
||||||
|
((SMsgHead*)(*pOutput))->vgId = htonl(info.vgId);
|
||||||
|
((SMsgHead*)(*pOutput))->contLen = htonl(serLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t qParserValidateDclSqlNode(SSqlInfo* pInfo, SParseBasicCtx* pCtx, SDclStmtInfo* pDcl, char* msgBuf, int32_t msgBufLen) {
|
int32_t qParserValidateDclSqlNode(SSqlInfo* pInfo, SParseBasicCtx* pCtx, SDclStmtInfo* pDcl, char* msgBuf,
|
||||||
|
int32_t msgBufLen) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
|
|
||||||
SMsgBuf m = {.buf = msgBuf, .len = msgBufLen};
|
SMsgBuf m = {.buf = msgBuf, .len = msgBufLen};
|
||||||
SMsgBuf *pMsgBuf = &m;
|
SMsgBuf* pMsgBuf = &m;
|
||||||
|
|
||||||
switch (pInfo->type) {
|
switch (pInfo->type) {
|
||||||
case TSDB_SQL_CREATE_USER:
|
case TSDB_SQL_CREATE_USER:
|
||||||
|
@ -551,7 +556,7 @@ int32_t qParserValidateDclSqlNode(SSqlInfo* pInfo, SParseBasicCtx* pCtx, SDclStm
|
||||||
}
|
}
|
||||||
|
|
||||||
pDcl->pMsg = (char*)buildUserManipulationMsg(pInfo, &pDcl->msgLen, pCtx->requestId, msgBuf, msgBufLen);
|
pDcl->pMsg = (char*)buildUserManipulationMsg(pInfo, &pDcl->msgLen, pCtx->requestId, msgBuf, msgBufLen);
|
||||||
pDcl->msgType = (pInfo->type == TSDB_SQL_CREATE_USER)? TDMT_MND_CREATE_USER:TDMT_MND_ALTER_USER;
|
pDcl->msgType = (pInfo->type == TSDB_SQL_CREATE_USER) ? TDMT_MND_CREATE_USER : TDMT_MND_ALTER_USER;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -588,14 +593,14 @@ int32_t qParserValidateDclSqlNode(SSqlInfo* pInfo, SParseBasicCtx* pCtx, SDclStm
|
||||||
}
|
}
|
||||||
|
|
||||||
pDcl->pMsg = (char*)buildAcctManipulationMsg(pInfo, &pDcl->msgLen, pCtx->requestId, msgBuf, msgBufLen);
|
pDcl->pMsg = (char*)buildAcctManipulationMsg(pInfo, &pDcl->msgLen, pCtx->requestId, msgBuf, msgBufLen);
|
||||||
pDcl->msgType = (pInfo->type == TSDB_SQL_CREATE_ACCT)? TDMT_MND_CREATE_ACCT:TDMT_MND_ALTER_ACCT;
|
pDcl->msgType = (pInfo->type == TSDB_SQL_CREATE_ACCT) ? TDMT_MND_CREATE_ACCT : TDMT_MND_ALTER_ACCT;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case TSDB_SQL_DROP_ACCT:
|
case TSDB_SQL_DROP_ACCT:
|
||||||
case TSDB_SQL_DROP_USER: {
|
case TSDB_SQL_DROP_USER: {
|
||||||
pDcl->pMsg = (char*)buildDropUserMsg(pInfo, &pDcl->msgLen, pCtx->requestId, msgBuf, msgBufLen);
|
pDcl->pMsg = (char*)buildDropUserMsg(pInfo, &pDcl->msgLen, pCtx->requestId, msgBuf, msgBufLen);
|
||||||
pDcl->msgType = (pInfo->type == TSDB_SQL_DROP_ACCT)? TDMT_MND_DROP_ACCT:TDMT_MND_DROP_USER;
|
pDcl->msgType = (pInfo->type == TSDB_SQL_DROP_ACCT) ? TDMT_MND_DROP_ACCT : TDMT_MND_DROP_USER;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -613,13 +618,13 @@ int32_t qParserValidateDclSqlNode(SSqlInfo* pInfo, SParseBasicCtx* pCtx, SDclStm
|
||||||
return buildInvalidOperationMsg(pMsgBuf, msg);
|
return buildInvalidOperationMsg(pMsgBuf, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
SName n = {0};
|
SName n = {0};
|
||||||
int32_t ret = tNameSetDbName(&n, pCtx->acctId, pToken->z, pToken->n);
|
int32_t ret = tNameSetDbName(&n, pCtx->acctId, pToken->z, pToken->n);
|
||||||
if (ret != TSDB_CODE_SUCCESS) {
|
if (ret != TSDB_CODE_SUCCESS) {
|
||||||
return buildInvalidOperationMsg(pMsgBuf, msg);
|
return buildInvalidOperationMsg(pMsgBuf, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
SUseDbMsg *pUseDbMsg = (SUseDbMsg *) calloc(1, sizeof(SUseDbMsg));
|
SUseDbMsg* pUseDbMsg = (SUseDbMsg*)calloc(1, sizeof(SUseDbMsg));
|
||||||
tNameExtractFullName(&n, pUseDbMsg->db);
|
tNameExtractFullName(&n, pUseDbMsg->db);
|
||||||
|
|
||||||
pDcl->pMsg = (char*)pUseDbMsg;
|
pDcl->pMsg = (char*)pUseDbMsg;
|
||||||
|
@ -638,7 +643,7 @@ int32_t qParserValidateDclSqlNode(SSqlInfo* pInfo, SParseBasicCtx* pCtx, SDclStm
|
||||||
return buildInvalidOperationMsg(pMsgBuf, msg2);
|
return buildInvalidOperationMsg(pMsgBuf, msg2);
|
||||||
}
|
}
|
||||||
|
|
||||||
char buf[TSDB_DB_NAME_LEN] = {0};
|
char buf[TSDB_DB_NAME_LEN] = {0};
|
||||||
SToken token = taosTokenDup(&pCreateDB->dbname, buf, tListLen(buf));
|
SToken token = taosTokenDup(&pCreateDB->dbname, buf, tListLen(buf));
|
||||||
|
|
||||||
if (parserValidateNameToken(&token) != TSDB_CODE_SUCCESS) {
|
if (parserValidateNameToken(&token) != TSDB_CODE_SUCCESS) {
|
||||||
|
@ -652,7 +657,7 @@ int32_t qParserValidateDclSqlNode(SSqlInfo* pInfo, SParseBasicCtx* pCtx, SDclStm
|
||||||
|
|
||||||
pDcl->pMsg = (char*)pCreateMsg;
|
pDcl->pMsg = (char*)pCreateMsg;
|
||||||
pDcl->msgLen = sizeof(SCreateDbMsg);
|
pDcl->msgLen = sizeof(SCreateDbMsg);
|
||||||
pDcl->msgType = (pInfo->type == TSDB_SQL_CREATE_DB)? TDMT_MND_CREATE_DB:TDMT_MND_ALTER_DB;
|
pDcl->msgType = (pInfo->type == TSDB_SQL_CREATE_DB) ? TDMT_MND_CREATE_DB : TDMT_MND_ALTER_DB;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -668,7 +673,7 @@ int32_t qParserValidateDclSqlNode(SSqlInfo* pInfo, SParseBasicCtx* pCtx, SDclStm
|
||||||
return buildInvalidOperationMsg(pMsgBuf, msg1);
|
return buildInvalidOperationMsg(pMsgBuf, msg1);
|
||||||
}
|
}
|
||||||
|
|
||||||
SDropDbMsg *pDropDbMsg = (SDropDbMsg*) calloc(1, sizeof(SDropDbMsg));
|
SDropDbMsg* pDropDbMsg = (SDropDbMsg*)calloc(1, sizeof(SDropDbMsg));
|
||||||
|
|
||||||
code = tNameExtractFullName(&name, pDropDbMsg->db);
|
code = tNameExtractFullName(&name, pDropDbMsg->db);
|
||||||
pDropDbMsg->ignoreNotExists = pInfo->pMiscInfo->existsCheck ? 1 : 0;
|
pDropDbMsg->ignoreNotExists = pInfo->pMiscInfo->existsCheck ? 1 : 0;
|
||||||
|
@ -688,9 +693,10 @@ int32_t qParserValidateDclSqlNode(SSqlInfo* pInfo, SParseBasicCtx* pCtx, SDclStm
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
pDcl->pMsg = (char*)buildCreateTableMsg(pCreateTable, &pDcl->msgLen, pCtx, pMsgBuf);
|
pDcl->pMsg = (char*)buildCreateTableMsg(pCreateTable, &pDcl->msgLen, pCtx, pMsgBuf);
|
||||||
pDcl->msgType = (pCreateTable->type == TSQL_CREATE_TABLE)? TDMT_VND_CREATE_TABLE:TDMT_MND_CREATE_STB;
|
pDcl->msgType = (pCreateTable->type == TSQL_CREATE_TABLE) ? TDMT_VND_CREATE_TABLE : TDMT_MND_CREATE_STB;
|
||||||
} else if (pCreateTable->type == TSQL_CREATE_CTABLE) {
|
} else if (pCreateTable->type == TSQL_CREATE_CTABLE) {
|
||||||
if ((code = doCheckForCreateCTable(pInfo, pCtx, pMsgBuf, &pDcl->pMsg, &pDcl->msgLen, &pDcl->epSet)) != TSDB_CODE_SUCCESS) {
|
if ((code = doCheckForCreateCTable(pInfo, pCtx, pMsgBuf, &pDcl->pMsg, &pDcl->msgLen, &pDcl->epSet)) !=
|
||||||
|
TSDB_CODE_SUCCESS) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -714,7 +720,7 @@ int32_t qParserValidateDclSqlNode(SSqlInfo* pInfo, SParseBasicCtx* pCtx, SDclStm
|
||||||
}
|
}
|
||||||
|
|
||||||
case TSDB_SQL_CREATE_DNODE: {
|
case TSDB_SQL_CREATE_DNODE: {
|
||||||
pDcl->pMsg = (char*) buildCreateDnodeMsg(pInfo, &pDcl->msgLen, pMsgBuf);
|
pDcl->pMsg = (char*)buildCreateDnodeMsg(pInfo, &pDcl->msgLen, pMsgBuf);
|
||||||
if (pDcl->pMsg == NULL) {
|
if (pDcl->pMsg == NULL) {
|
||||||
code = terrno;
|
code = terrno;
|
||||||
}
|
}
|
||||||
|
@ -724,7 +730,7 @@ int32_t qParserValidateDclSqlNode(SSqlInfo* pInfo, SParseBasicCtx* pCtx, SDclStm
|
||||||
}
|
}
|
||||||
|
|
||||||
case TSDB_SQL_DROP_DNODE: {
|
case TSDB_SQL_DROP_DNODE: {
|
||||||
pDcl->pMsg = (char*) buildDropDnodeMsg(pInfo, &pDcl->msgLen, pMsgBuf);
|
pDcl->pMsg = (char*)buildDropDnodeMsg(pInfo, &pDcl->msgLen, pMsgBuf);
|
||||||
if (pDcl->pMsg == NULL) {
|
if (pDcl->pMsg == NULL) {
|
||||||
code = terrno;
|
code = terrno;
|
||||||
}
|
}
|
||||||
|
@ -739,4 +745,3 @@ int32_t qParserValidateDclSqlNode(SSqlInfo* pInfo, SParseBasicCtx* pCtx, SDclStm
|
||||||
|
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue