fix: vnode pre-process request
This commit is contained in:
parent
f4571ce085
commit
04ee5be2a8
|
@ -1729,9 +1729,9 @@ int32_t tDecodeSVDropStbReq(SDecoder* pCoder, SVDropStbReq* pReq);
|
||||||
#define TD_CREATE_IF_NOT_EXISTS 0x1
|
#define TD_CREATE_IF_NOT_EXISTS 0x1
|
||||||
typedef struct SVCreateTbReq {
|
typedef struct SVCreateTbReq {
|
||||||
int32_t flags;
|
int32_t flags;
|
||||||
|
char* name;
|
||||||
tb_uid_t uid;
|
tb_uid_t uid;
|
||||||
int64_t ctime;
|
int64_t ctime;
|
||||||
char* name;
|
|
||||||
int32_t ttl;
|
int32_t ttl;
|
||||||
int8_t type;
|
int8_t type;
|
||||||
union {
|
union {
|
||||||
|
|
|
@ -3861,10 +3861,9 @@ int tEncodeSVCreateTbReq(SEncoder *pCoder, const SVCreateTbReq *pReq) {
|
||||||
if (tStartEncode(pCoder) < 0) return -1;
|
if (tStartEncode(pCoder) < 0) return -1;
|
||||||
|
|
||||||
if (tEncodeI32v(pCoder, pReq->flags) < 0) return -1;
|
if (tEncodeI32v(pCoder, pReq->flags) < 0) return -1;
|
||||||
|
if (tEncodeCStr(pCoder, pReq->name) < 0) return -1;
|
||||||
if (tEncodeI64(pCoder, pReq->uid) < 0) return -1;
|
if (tEncodeI64(pCoder, pReq->uid) < 0) return -1;
|
||||||
if (tEncodeI64(pCoder, pReq->ctime) < 0) return -1;
|
if (tEncodeI64(pCoder, pReq->ctime) < 0) return -1;
|
||||||
|
|
||||||
if (tEncodeCStr(pCoder, pReq->name) < 0) return -1;
|
|
||||||
if (tEncodeI32(pCoder, pReq->ttl) < 0) return -1;
|
if (tEncodeI32(pCoder, pReq->ttl) < 0) return -1;
|
||||||
if (tEncodeI8(pCoder, pReq->type) < 0) return -1;
|
if (tEncodeI8(pCoder, pReq->type) < 0) return -1;
|
||||||
|
|
||||||
|
@ -3887,10 +3886,9 @@ int tDecodeSVCreateTbReq(SDecoder *pCoder, SVCreateTbReq *pReq) {
|
||||||
if (tStartDecode(pCoder) < 0) return -1;
|
if (tStartDecode(pCoder) < 0) return -1;
|
||||||
|
|
||||||
if (tDecodeI32v(pCoder, &pReq->flags) < 0) return -1;
|
if (tDecodeI32v(pCoder, &pReq->flags) < 0) return -1;
|
||||||
|
if (tDecodeCStr(pCoder, &pReq->name) < 0) return -1;
|
||||||
if (tDecodeI64(pCoder, &pReq->uid) < 0) return -1;
|
if (tDecodeI64(pCoder, &pReq->uid) < 0) return -1;
|
||||||
if (tDecodeI64(pCoder, &pReq->ctime) < 0) return -1;
|
if (tDecodeI64(pCoder, &pReq->ctime) < 0) return -1;
|
||||||
|
|
||||||
if (tDecodeCStr(pCoder, &pReq->name) < 0) return -1;
|
|
||||||
if (tDecodeI32(pCoder, &pReq->ttl) < 0) return -1;
|
if (tDecodeI32(pCoder, &pReq->ttl) < 0) return -1;
|
||||||
if (tDecodeI8(pCoder, &pReq->type) < 0) return -1;
|
if (tDecodeI8(pCoder, &pReq->type) < 0) return -1;
|
||||||
|
|
||||||
|
|
|
@ -91,6 +91,7 @@ int metaAlterTable(SMeta* pMeta, int64_t version, SVAlterTbReq* pReq
|
||||||
SSchemaWrapper* metaGetTableSchema(SMeta* pMeta, tb_uid_t uid, int32_t sver, bool isinline);
|
SSchemaWrapper* metaGetTableSchema(SMeta* pMeta, tb_uid_t uid, int32_t sver, bool isinline);
|
||||||
STSchema* metaGetTbTSchema(SMeta* pMeta, tb_uid_t uid, int32_t sver);
|
STSchema* metaGetTbTSchema(SMeta* pMeta, tb_uid_t uid, int32_t sver);
|
||||||
int metaGetTableEntryByName(SMetaReader* pReader, const char* name);
|
int metaGetTableEntryByName(SMetaReader* pReader, const char* name);
|
||||||
|
tb_uid_t metaGetTableEntryUidByName(SMeta* pMeta, const char* name);
|
||||||
int metaGetTbNum(SMeta* pMeta);
|
int metaGetTbNum(SMeta* pMeta);
|
||||||
SMCtbCursor* metaOpenCtbCursor(SMeta* pMeta, tb_uid_t uid);
|
SMCtbCursor* metaOpenCtbCursor(SMeta* pMeta, tb_uid_t uid);
|
||||||
void metaCloseCtbCursor(SMCtbCursor* pCtbCur);
|
void metaCloseCtbCursor(SMCtbCursor* pCtbCur);
|
||||||
|
|
|
@ -81,6 +81,19 @@ int metaGetTableEntryByName(SMetaReader *pReader, const char *name) {
|
||||||
return metaGetTableEntryByUid(pReader, uid);
|
return metaGetTableEntryByUid(pReader, uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tb_uid_t metaGetTableEntryUidByName(SMeta *pMeta, const char *name) {
|
||||||
|
void *pData = NULL;
|
||||||
|
int nData = 0;
|
||||||
|
tb_uid_t uid = 0;
|
||||||
|
|
||||||
|
if (tdbTbGet(pMeta->pNameIdx, name, strlen(name) + 1, &pData, &nData) == 0) {
|
||||||
|
uid = *(tb_uid_t *)pData;
|
||||||
|
tdbFree(pData);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int metaReadNext(SMetaReader *pReader) {
|
int metaReadNext(SMetaReader *pReader) {
|
||||||
SMeta *pMeta = pReader->pMeta;
|
SMeta *pMeta = pReader->pMeta;
|
||||||
|
|
||||||
|
|
|
@ -64,12 +64,18 @@ int32_t vnodePreprocessReq(SVnode *pVnode, SRpcMsg *pMsg) {
|
||||||
if (pBlock == NULL) break;
|
if (pBlock == NULL) break;
|
||||||
|
|
||||||
if (msgIter.schemaLen > 0) {
|
if (msgIter.schemaLen > 0) {
|
||||||
uid = tGenIdPI64();
|
char *name = NULL;
|
||||||
|
|
||||||
tDecoderInit(&dc, pBlock->data, msgIter.schemaLen);
|
tDecoderInit(&dc, pBlock->data, msgIter.schemaLen);
|
||||||
tStartDecode(&dc);
|
tStartDecode(&dc);
|
||||||
|
|
||||||
tDecodeI32v(&dc, NULL);
|
tDecodeI32v(&dc, NULL);
|
||||||
|
tDecodeCStr(&dc, &name);
|
||||||
|
|
||||||
|
uid = metaGetTableEntryUidByName(pVnode->pMeta, name);
|
||||||
|
if (uid == 0) {
|
||||||
|
uid = tGenIdPI64();
|
||||||
|
}
|
||||||
*(int64_t *)(dc.data + dc.pos) = uid;
|
*(int64_t *)(dc.data + dc.pos) = uid;
|
||||||
*(int64_t *)(dc.data + dc.pos + 8) = ctime;
|
*(int64_t *)(dc.data + dc.pos + 8) = ctime;
|
||||||
pBlock->uid = htobe64(uid);
|
pBlock->uid = htobe64(uid);
|
||||||
|
|
Loading…
Reference in New Issue