Merge pull request #2002 from taosdata/feature/2.0tsdb
add precalculation interface
This commit is contained in:
commit
0bae81193d
|
@ -304,7 +304,7 @@ tDataTypeDescriptor tDataTypeDesc[11] = {
|
|||
{TSDB_DATA_TYPE_FLOAT, 5, FLOAT_BYTES, "FLOAT", tsCompressFloat, tsDecompressFloat, getStatics_f},
|
||||
{TSDB_DATA_TYPE_DOUBLE, 6, DOUBLE_BYTES, "DOUBLE", tsCompressDouble, tsDecompressDouble, getStatics_d},
|
||||
{TSDB_DATA_TYPE_BINARY, 6, 0, "BINARY", tsCompressString, tsDecompressString, NULL},
|
||||
{TSDB_DATA_TYPE_TIMESTAMP, 9, LONG_BYTES, "TIMESTAMP", tsCompressTimestamp, tsDecompressTimestamp, NULL},
|
||||
{TSDB_DATA_TYPE_TIMESTAMP, 9, LONG_BYTES, "TIMESTAMP", tsCompressTimestamp, tsDecompressTimestamp, getStatics_i64},
|
||||
{TSDB_DATA_TYPE_NCHAR, 5, 8, "NCHAR", tsCompressString, tsDecompressString, NULL},
|
||||
};
|
||||
|
||||
|
|
|
@ -495,12 +495,12 @@ void tsdbSetHelperTable(SRWHelper *pHelper, STable *pTable, STsdbRepo *pRepo);
|
|||
int tsdbCloseHelperFile(SRWHelper *pHelper, bool hasError);
|
||||
|
||||
// --------- For read operations
|
||||
int tsdbLoadCompIdx(SRWHelper *pHelper, void *target);
|
||||
int tsdbLoadCompInfo(SRWHelper *pHelper, void *target);
|
||||
int tsdbLoadCompData(SRWHelper *pHelper, SCompBlock *pCompBlock, void *target);
|
||||
int tsdbLoadBlockDataCols(SRWHelper *pHelper, SDataCols *pDataCols, int blkIdx, int16_t *colIds, int numOfColIds);
|
||||
int tsdbLoadBlockData(SRWHelper *pHelper, SCompBlock *pCompBlock, SDataCols *target);
|
||||
// void tsdbGetDataStatis(SRWHelper *pHelper, SDataStatis *pStatis, int numOfCols);
|
||||
int tsdbLoadCompIdx(SRWHelper *pHelper, void *target);
|
||||
int tsdbLoadCompInfo(SRWHelper *pHelper, void *target);
|
||||
int tsdbLoadCompData(SRWHelper *pHelper, SCompBlock *pCompBlock, void *target);
|
||||
int tsdbLoadBlockDataCols(SRWHelper *pHelper, SDataCols *pDataCols, int blkIdx, int16_t *colIds, int numOfColIds);
|
||||
int tsdbLoadBlockData(SRWHelper *pHelper, SCompBlock *pCompBlock, SDataCols *target);
|
||||
void tsdbGetDataStatis(SRWHelper *pHelper, SDataStatis *pStatis, int numOfCols);
|
||||
|
||||
// --------- For write operations
|
||||
int tsdbWriteDataBlock(SRWHelper *pHelper, SDataCols *pDataCols);
|
||||
|
|
|
@ -543,6 +543,34 @@ int tsdbLoadCompData(SRWHelper *pHelper, SCompBlock *pCompBlock, void *target) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
void tsdbGetDataStatis(SRWHelper *pHelper, SDataStatis *pStatis, int numOfCols) {
|
||||
SCompData *pCompData = pHelper->pCompData;
|
||||
|
||||
for (int i = 0, j = 0; i < numOfCols;) {
|
||||
if (j >= pCompData->numOfCols) {
|
||||
pStatis[i].numOfNull = -1;
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (pStatis[i].colId == pCompData->cols[j].colId) {
|
||||
pStatis[i].sum = pCompData->cols[j].sum;
|
||||
pStatis[i].max = pCompData->cols[j].max;
|
||||
pStatis[i].min = pCompData->cols[j].min;
|
||||
pStatis[i].maxIndex = pCompData->cols[j].maxIndex;
|
||||
pStatis[i].minIndex = pCompData->cols[j].minIndex;
|
||||
pStatis[i].numOfNull = pCompData->cols[j].numOfNull;
|
||||
i++;
|
||||
j++;
|
||||
} else if (pStatis[i].colId < pCompData->cols[j].colId) {
|
||||
pStatis[i].numOfNull = -1;
|
||||
i++;
|
||||
} else {
|
||||
j++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int comparColIdCompCol(const void *arg1, const void *arg2) {
|
||||
return (*(int16_t *)arg1) - ((SCompCol *)arg2)->colId;
|
||||
}
|
||||
|
@ -748,7 +776,7 @@ static int tsdbWriteBlockToFile(SRWHelper *pHelper, SFile *pFile, SDataCols *pDa
|
|||
|
||||
pCompCol->colId = pDataCol->colId;
|
||||
pCompCol->type = pDataCol->type;
|
||||
if (tDataTypeDesc[pDataCol->type].getStatisFunc) {
|
||||
if (tDataTypeDesc[pDataCol->type].getStatisFunc && ncol != 0) {
|
||||
(*tDataTypeDesc[pDataCol->type].getStatisFunc)(
|
||||
(TSKEY *)(pDataCols->cols[0].pData), pDataCol->pData, rowsToWrite, &(pCompCol->min), &(pCompCol->max),
|
||||
&(pCompCol->sum), &(pCompCol->minIndex), &(pCompCol->maxIndex), &(pCompCol->numOfNull));
|
||||
|
|
Loading…
Reference in New Issue