refact data format
This commit is contained in:
parent
89e8f14a79
commit
4a2d0d6a01
|
@ -41,9 +41,16 @@ int32_t tEncodeTSRow(SEncoder *pEncoder, const STSRow2 *pRow);
|
||||||
int32_t tDecodeTSRow(SDecoder *pDecoder, STSRow2 *pRow);
|
int32_t tDecodeTSRow(SDecoder *pDecoder, STSRow2 *pRow);
|
||||||
|
|
||||||
// STSchema
|
// STSchema
|
||||||
int32_t tTSchemaCreate(int32_t sver, SSchema *pSchema, int32_t ncols, STSchema **ppTSchema);
|
int32_t tTSchemaCreate(int32_t sver, SSchema *pSchema, int32_t nCols, STSchema **ppTSchema);
|
||||||
void tTSchemaDestroy(STSchema *pTSchema);
|
void tTSchemaDestroy(STSchema *pTSchema);
|
||||||
|
|
||||||
|
// STSRowBuilder
|
||||||
|
int32_t tTSRowBuilderInit(STSRowBuilder *pBuilder, int32_t sver, SSchema *pSchema, int32_t nCols);
|
||||||
|
int32_t tTSRowBuilderClear(STSRowBuilder *pBuilder);
|
||||||
|
int32_t tTSRowBuilderReset(STSRowBuilder *pBuilder);
|
||||||
|
int32_t tTSRowBuilderPut(STSRowBuilder *pBuilder, int32_t cid, const uint8_t *pData, uint32_t nData);
|
||||||
|
int32_t tTSRowBuilderGetRow(STSRowBuilder *pBuilder, const STSRow2 **ppRow);
|
||||||
|
|
||||||
// STRUCT =================
|
// STRUCT =================
|
||||||
struct STColumn {
|
struct STColumn {
|
||||||
col_id_t colId;
|
col_id_t colId;
|
||||||
|
@ -74,6 +81,7 @@ struct STSRow2 {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct STSRowBuilder {
|
struct STSRowBuilder {
|
||||||
|
STColumn *pTColumn;
|
||||||
STSchema *pTSchema;
|
STSchema *pTSchema;
|
||||||
STSRow2 row;
|
STSRow2 row;
|
||||||
};
|
};
|
||||||
|
|
|
@ -50,12 +50,101 @@ int32_t tTSchemaCreate(int32_t sver, SSchema *pSchema, int32_t ncols, STSchema *
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// (*ppTSchema)
|
(*ppTSchema)->numOfCols = ncols;
|
||||||
|
(*ppTSchema)->version = sver;
|
||||||
|
(*ppTSchema)->flen = 0;
|
||||||
|
(*ppTSchema)->vlen = 0;
|
||||||
|
(*ppTSchema)->tlen = 0;
|
||||||
|
|
||||||
|
for (int32_t iCol = 0; iCol < ncols; iCol++) {
|
||||||
|
SSchema *pColumn = &pSchema[iCol];
|
||||||
|
STColumn *pTColumn = &((*ppTSchema)->columns[iCol]);
|
||||||
|
|
||||||
|
pTColumn->colId = pColumn->colId;
|
||||||
|
pTColumn->type = pColumn->type;
|
||||||
|
pTColumn->flags = pColumn->flags;
|
||||||
|
pTColumn->bytes = pColumn->bytes;
|
||||||
|
pTColumn->offset = (*ppTSchema)->flen;
|
||||||
|
|
||||||
|
// skip first column
|
||||||
|
if (iCol) {
|
||||||
|
(*ppTSchema)->flen += TYPE_BYTES[pColumn->type];
|
||||||
|
if (IS_VAR_DATA_TYPE(pColumn->type)) {
|
||||||
|
(*ppTSchema)->vlen += (pColumn->bytes + 5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void tTSchemaDestroy(STSchema *pTSchema) { taosMemoryFree(pTSchema); }
|
void tTSchemaDestroy(STSchema *pTSchema) { taosMemoryFree(pTSchema); }
|
||||||
|
|
||||||
|
int32_t tTSRowBuilderInit(STSRowBuilder *pBuilder, int32_t sver, SSchema *pSchema, int32_t nCols) {
|
||||||
|
// TODO
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t tTSRowBuilderClear(STSRowBuilder *pBuilder) {
|
||||||
|
// TODO
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t tTSRowBuilderReset(STSRowBuilder *pBuilder) {
|
||||||
|
for (int32_t iCol = pBuilder->pTSchema->numOfCols - 1; iCol >= 0; iCol--) {
|
||||||
|
pBuilder->pTColumn = &pBuilder->pTSchema->columns[iCol];
|
||||||
|
|
||||||
|
pBuilder->pTColumn->flags &= (~COL_VAL_SET);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t tTSRowBuilderPut(STSRowBuilder *pBuilder, int32_t cid, const uint8_t *pData, uint32_t nData) {
|
||||||
|
if (pBuilder->pTColumn->colId < cid) {
|
||||||
|
// right search
|
||||||
|
} else if (pBuilder->pTColumn->colId > cid) {
|
||||||
|
// left search
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if val is set already
|
||||||
|
if (pBuilder->pTColumn->flags & COL_VAL_SET) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// set value
|
||||||
|
if (cid == 0) {
|
||||||
|
ASSERT(pData && nData == sizeof(TSKEY));
|
||||||
|
pBuilder->row.ts = *(TSKEY *)pData;
|
||||||
|
} else {
|
||||||
|
if (pData) {
|
||||||
|
// set val
|
||||||
|
} else {
|
||||||
|
// set NULL val
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pBuilder->pTColumn->flags |= COL_VAL_SET;
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t tTSRowBuilderGetRow(STSRowBuilder *pBuilder, const STSRow2 **ppRow) {
|
||||||
|
if ((pBuilder->pTSchema->columns[0].flags & COL_VAL_SET) == 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// chose which type row to return
|
||||||
|
|
||||||
|
if (true /* tuple row is chosen */) {
|
||||||
|
// set non-set values as None
|
||||||
|
}
|
||||||
|
|
||||||
|
*ppRow = &pBuilder->row;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
#if 1 // ====================
|
#if 1 // ====================
|
||||||
static void dataColSetNEleNull(SDataCol *pCol, int nEle);
|
static void dataColSetNEleNull(SDataCol *pCol, int nEle);
|
||||||
int tdAllocMemForCol(SDataCol *pCol, int maxPoints) {
|
int tdAllocMemForCol(SDataCol *pCol, int maxPoints) {
|
||||||
|
|
Loading…
Reference in New Issue