more code
This commit is contained in:
parent
895b48f834
commit
de07035015
|
@ -68,12 +68,11 @@ struct SBuffer {
|
||||||
void tBufferDestroy(SBuffer *pBuffer);
|
void tBufferDestroy(SBuffer *pBuffer);
|
||||||
int32_t tBufferInit(SBuffer *pBuffer, int64_t size);
|
int32_t tBufferInit(SBuffer *pBuffer, int64_t size);
|
||||||
int32_t tBufferPut(SBuffer *pBuffer, const void *pData, int64_t nData);
|
int32_t tBufferPut(SBuffer *pBuffer, const void *pData, int64_t nData);
|
||||||
|
int32_t tBufferReserve(SBuffer *pBuffer, int64_t nData, void **ppData);
|
||||||
|
|
||||||
// STSchema ================================
|
// STSchema ================================
|
||||||
void tTSchemaDestroy(STSchema *pTSchema);
|
void tTSchemaDestroy(STSchema *pTSchema);
|
||||||
|
|
||||||
// SValue ================================
|
|
||||||
|
|
||||||
// SColVal ================================
|
// SColVal ================================
|
||||||
#define CV_FLAG_VALUE ((int8_t)0x0)
|
#define CV_FLAG_VALUE ((int8_t)0x0)
|
||||||
#define CV_FLAG_NONE ((int8_t)0x1)
|
#define CV_FLAG_NONE ((int8_t)0x1)
|
||||||
|
|
|
@ -43,6 +43,16 @@ int32_t tBufferPut(SBuffer *pBuffer, const void *pData, int64_t nData) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t tBufferReserve(SBuffer *pBuffer, int64_t nData, void **ppData) {
|
||||||
|
int32_t code = tRealloc(&pBuffer->pBuf, pBuffer->nBuf + nData);
|
||||||
|
if (code) return code;
|
||||||
|
|
||||||
|
*ppData = pBuffer->pBuf + pBuffer->nBuf;
|
||||||
|
pBuffer->nBuf += nData;
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
// ================================
|
// ================================
|
||||||
static int32_t tGetTagVal(uint8_t *p, STagVal *pTagVal, int8_t isJson);
|
static int32_t tGetTagVal(uint8_t *p, STagVal *pTagVal, int8_t isJson);
|
||||||
|
|
||||||
|
@ -66,16 +76,16 @@ int32_t tRowBuild(SArray *aColVal, STSchema *pTSchema, SBuffer *pBuffer) {
|
||||||
ASSERT(((SColVal *)aColVal->pData)[0].type == TSDB_DATA_TYPE_TIMESTAMP);
|
ASSERT(((SColVal *)aColVal->pData)[0].type == TSDB_DATA_TYPE_TIMESTAMP);
|
||||||
|
|
||||||
// scan ---------------
|
// scan ---------------
|
||||||
uint8_t flag = 0;
|
uint8_t flag = 0;
|
||||||
int32_t iColVal = 1;
|
int32_t iColVal = 1;
|
||||||
int32_t nColVal = taosArrayGetSize(aColVal);
|
const int32_t nColVal = taosArrayGetSize(aColVal);
|
||||||
SColVal *pColVal = (iColVal < nColVal) ? (SColVal *)taosArrayGet(aColVal, iColVal) : NULL;
|
SColVal *pColVal = (iColVal < nColVal) ? (SColVal *)taosArrayGet(aColVal, iColVal) : NULL;
|
||||||
int32_t iTColumn = 1;
|
int32_t iTColumn = 1;
|
||||||
STColumn *pTColumn = pTSchema->columns + iTColumn;
|
STColumn *pTColumn = pTSchema->columns + iTColumn;
|
||||||
int32_t ntp = 0;
|
int32_t ntp = 0;
|
||||||
int32_t nkv = 0;
|
int32_t nkv = 0;
|
||||||
int32_t maxIdx = 0;
|
int32_t maxIdx = 0;
|
||||||
int32_t nidx = 0;
|
int32_t nIdx = 0;
|
||||||
while (pTColumn) {
|
while (pTColumn) {
|
||||||
if (pColVal) {
|
if (pColVal) {
|
||||||
if (pColVal->cid == pTColumn->colId) {
|
if (pColVal->cid == pTColumn->colId) {
|
||||||
|
@ -89,14 +99,14 @@ int32_t tRowBuild(SArray *aColVal, STSchema *pTSchema, SBuffer *pBuffer) {
|
||||||
} else {
|
} else {
|
||||||
nkv = nkv + tPutI16v(NULL, pTColumn->colId) + TYPE_BYTES[pTColumn->type];
|
nkv = nkv + tPutI16v(NULL, pTColumn->colId) + TYPE_BYTES[pTColumn->type];
|
||||||
}
|
}
|
||||||
nidx++;
|
nIdx++;
|
||||||
} else if (COL_VAL_IS_NONE(pColVal)) { // NONE
|
} else if (COL_VAL_IS_NONE(pColVal)) { // NONE
|
||||||
flag |= HAS_NONE;
|
flag |= HAS_NONE;
|
||||||
} else if (COL_VAL_IS_NULL(pColVal)) { // NULL
|
} else if (COL_VAL_IS_NULL(pColVal)) { // NULL
|
||||||
flag |= HAS_NULL;
|
flag |= HAS_NULL;
|
||||||
maxIdx = nkv;
|
maxIdx = nkv;
|
||||||
nkv += tPutI16v(NULL, -pTColumn->colId);
|
nkv += tPutI16v(NULL, -pTColumn->colId);
|
||||||
nidx++;
|
nIdx++;
|
||||||
} else {
|
} else {
|
||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
}
|
}
|
||||||
|
@ -141,13 +151,13 @@ int32_t tRowBuild(SArray *aColVal, STSchema *pTSchema, SBuffer *pBuffer) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (maxIdx <= UINT8_MAX) {
|
if (maxIdx <= UINT8_MAX) {
|
||||||
nkv = sizeof(SRow) + sizeof(SKVIdx) + sizeof(uint8_t) * nidx + nkv;
|
nkv = sizeof(SRow) + sizeof(SKVIdx) + nIdx + nkv;
|
||||||
flag |= KV_FLG_LIT;
|
flag |= KV_FLG_LIT;
|
||||||
} else if (maxIdx <= UINT16_MAX) {
|
} else if (maxIdx <= UINT16_MAX) {
|
||||||
nkv = sizeof(SRow) + sizeof(SKVIdx) + sizeof(uint16_t) * nidx + nkv;
|
nkv = sizeof(SRow) + sizeof(SKVIdx) + (nIdx << 1) + nkv;
|
||||||
flag |= KV_FLG_MID;
|
flag |= KV_FLG_MID;
|
||||||
} else {
|
} else {
|
||||||
nkv = sizeof(SRow) + sizeof(SKVIdx) + sizeof(uint32_t) * nidx + nkv;
|
nkv = sizeof(SRow) + sizeof(SKVIdx) + (nIdx << 2) + nkv;
|
||||||
flag |= KV_FLG_BIG;
|
flag |= KV_FLG_BIG;
|
||||||
}
|
}
|
||||||
int32_t nRow;
|
int32_t nRow;
|
||||||
|
@ -159,7 +169,9 @@ int32_t tRowBuild(SArray *aColVal, STSchema *pTSchema, SBuffer *pBuffer) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// alloc --------------
|
// alloc --------------
|
||||||
SRow *pRow = NULL; // todo
|
SRow *pRow = NULL;
|
||||||
|
code = tBufferReserve(pBuffer, nRow, (void **)&pRow);
|
||||||
|
if (code) return code;
|
||||||
|
|
||||||
// build --------------
|
// build --------------
|
||||||
pColVal = (SColVal *)taosArrayGet(aColVal, 0);
|
pColVal = (SColVal *)taosArrayGet(aColVal, 0);
|
||||||
|
@ -180,17 +192,35 @@ int32_t tRowBuild(SArray *aColVal, STSchema *pTSchema, SBuffer *pBuffer) {
|
||||||
pTColumn = pTSchema->columns + iTColumn;
|
pTColumn = pTSchema->columns + iTColumn;
|
||||||
if (flag & 0xf0) { // KV
|
if (flag & 0xf0) { // KV
|
||||||
SKVIdx *pIdx = (SKVIdx *)pRow->data;
|
SKVIdx *pIdx = (SKVIdx *)pRow->data;
|
||||||
uint8_t *pv = NULL; // todo
|
int32_t iIdx = 0;
|
||||||
|
int32_t nv = 0;
|
||||||
|
uint8_t *pv = NULL;
|
||||||
|
if (flag & KV_FLG_LIT) {
|
||||||
|
pv = pIdx->idx + nIdx;
|
||||||
|
} else if (flag & KV_FLG_MID) {
|
||||||
|
pv = pIdx->idx + (nIdx << 1);
|
||||||
|
} else {
|
||||||
|
pv = pIdx->idx + (nIdx << 2);
|
||||||
|
}
|
||||||
|
pIdx->nCol = nIdx;
|
||||||
|
|
||||||
while (pTColumn) {
|
while (pTColumn) {
|
||||||
if (pColVal) {
|
if (pColVal) {
|
||||||
if (pColVal->cid == pTColumn->colId) {
|
if (pColVal->cid == pTColumn->colId) {
|
||||||
if (COL_VAL_IS_VALUE(pColVal)) {
|
if (COL_VAL_IS_VALUE(pColVal)) {
|
||||||
// todo
|
// offset = nv; todo
|
||||||
} else if (COL_VAL_IS_NONE(pColVal)) {
|
nv += tPutI16v(pv + nv, pTColumn->colId);
|
||||||
// todo
|
if (IS_VAR_DATA_TYPE(pTColumn->type)) {
|
||||||
} else {
|
nv += tPutU32v(pv + nv, pColVal->value.nData);
|
||||||
// todo
|
memcpy(pv + nv, pColVal->value.pData, pColVal->value.nData);
|
||||||
|
nv += pColVal->value.nData;
|
||||||
|
} else {
|
||||||
|
memcpy(pv + nv, &pColVal->value.val, pTColumn->bytes);
|
||||||
|
nv += pTColumn->bytes;
|
||||||
|
}
|
||||||
|
} else if (COL_VAL_IS_NULL(pColVal)) {
|
||||||
|
// offset = nv; todo
|
||||||
|
nv += tPutI16v(pv + nv, -pTColumn->colId);
|
||||||
}
|
}
|
||||||
|
|
||||||
pTColumn = (++iTColumn < pTSchema->numOfCols) ? pTSchema->columns + iTColumn : NULL;
|
pTColumn = (++iTColumn < pTSchema->numOfCols) ? pTSchema->columns + iTColumn : NULL;
|
||||||
|
@ -200,7 +230,6 @@ int32_t tRowBuild(SArray *aColVal, STSchema *pTSchema, SBuffer *pBuffer) {
|
||||||
} else {
|
} else {
|
||||||
pColVal = (++iColVal < nColVal) ? (SColVal *)taosArrayGet(aColVal, iColVal) : NULL;
|
pColVal = (++iColVal < nColVal) ? (SColVal *)taosArrayGet(aColVal, iColVal) : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else { // NONE
|
} else { // NONE
|
||||||
pTColumn = (++iTColumn < pTSchema->numOfCols) ? pTSchema->columns + iTColumn : NULL;
|
pTColumn = (++iTColumn < pTSchema->numOfCols) ? pTSchema->columns + iTColumn : NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue