more code
This commit is contained in:
parent
f6555efd9c
commit
726006d18a
|
@ -49,6 +49,8 @@ target_sources(
|
|||
"src/tsdb/tsdbSnapshot.c"
|
||||
"src/tsdb/tsdbCacheRead.c"
|
||||
"src/tsdb/tsdbRetention.c"
|
||||
"src/tsdb/tsdbDiskData.c"
|
||||
"src/tsdb/tsdbCompress.c"
|
||||
|
||||
# tq
|
||||
"src/tq/tq.c"
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
/*
|
||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
||||
*
|
||||
* This program is free software: you can use, redistribute, and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3
|
||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "tsdb.h"
|
||||
|
||||
// Integer =====================================================
|
||||
typedef struct {
|
||||
int8_t rawCopy;
|
||||
int64_t prevVal;
|
||||
int32_t nVal;
|
||||
int32_t nBuf;
|
||||
uint8_t *pBuf;
|
||||
} SIntCompressor;
|
||||
|
||||
#define I64_SAFE_ADD(a, b) (((a) >= 0 && (b) <= INT64_MAX - (b)) || ((a) < 0 && (b) >= INT64_MIN - (a)))
|
||||
#define SIMPLE8B_MAX ((uint64_t)1152921504606846974LL)
|
||||
|
||||
static int32_t tsdbCmprI64(SIntCompressor *pCompressor, int64_t val) {
|
||||
int32_t code = 0;
|
||||
|
||||
// raw copy
|
||||
if (pCompressor->rawCopy) {
|
||||
memcpy(pCompressor->pBuf + pCompressor->nBuf, &val, sizeof(val));
|
||||
pCompressor->nBuf += sizeof(val);
|
||||
pCompressor->nVal++;
|
||||
goto _exit;
|
||||
}
|
||||
|
||||
if (!I64_SAFE_ADD(val, pCompressor->prevVal)) {
|
||||
pCompressor->rawCopy = 1;
|
||||
// TODO: decompress and copy
|
||||
pCompressor->nVal++;
|
||||
goto _exit;
|
||||
}
|
||||
|
||||
int64_t diff = val - pCompressor->prevVal;
|
||||
uint8_t zigzag = ZIGZAGE(int64_t, diff);
|
||||
|
||||
if (zigzag >= SIMPLE8B_MAX) {
|
||||
pCompressor->rawCopy = 1;
|
||||
// TODO: decompress and copy
|
||||
pCompressor->nVal++;
|
||||
goto _exit;
|
||||
}
|
||||
|
||||
_exit:
|
||||
return code;
|
||||
}
|
||||
|
||||
// Timestamp =====================================================
|
||||
|
||||
// Float =====================================================
|
|
@ -0,0 +1,84 @@
|
|||
/*
|
||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
||||
*
|
||||
* This program is free software: you can use, redistribute, and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3
|
||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "tsdb.h"
|
||||
|
||||
typedef struct SDiskColBuilder SDiskColBuilder;
|
||||
struct SDiskColBuilder {
|
||||
uint8_t flags;
|
||||
uint8_t *pBitMap;
|
||||
int32_t *aOffset;
|
||||
int32_t nData;
|
||||
uint8_t *pData;
|
||||
};
|
||||
|
||||
int32_t tDiskColAddVal(SDiskColBuilder *pBuilder, SColVal *pColVal) {
|
||||
int32_t code = 0;
|
||||
// TODO
|
||||
return code;
|
||||
}
|
||||
|
||||
// ================================================================
|
||||
typedef struct SDiskDataBuilder SDiskDataBuilder;
|
||||
struct SDiskDataBuilder {
|
||||
SDiskDataHdr hdr;
|
||||
SArray *aBlockCol; // SArray<SBlockCol>
|
||||
};
|
||||
|
||||
int32_t tDiskDataBuilderCreate(SDiskDataBuilder **ppBuilder) {
|
||||
int32_t code = 0;
|
||||
// TODO
|
||||
return code;
|
||||
}
|
||||
|
||||
void tDiskDataBuilderDestroy(SDiskDataBuilder *pBuilder) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
void tDiskDataBuilderInit(SDiskDataBuilder *pBuilder, int64_t suid, int64_t uid, STSchema *pTSchema, int8_t cmprAlg) {
|
||||
pBuilder->hdr = (SDiskDataHdr){.delimiter = TSDB_FILE_DLMT, //
|
||||
.fmtVer = 0,
|
||||
.suid = suid,
|
||||
.uid = uid,
|
||||
.cmprAlg = cmprAlg};
|
||||
}
|
||||
|
||||
void tDiskDataBuilderReset(SDiskDataBuilder *pBuilder) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
int32_t tDiskDataBuilderAddRow(SDiskDataBuilder *pBuilder, TSDBROW *pRow, STSchema *pTSchema, int64_t uid) {
|
||||
int32_t code = 0;
|
||||
|
||||
// uid (todo)
|
||||
|
||||
// version (todo)
|
||||
|
||||
// TSKEY (todo)
|
||||
|
||||
SRowIter iter = {0};
|
||||
tRowIterInit(&iter, pRow, pTSchema);
|
||||
|
||||
for (int32_t iDiskCol = 0; iDiskCol < 0; iDiskCol++) {
|
||||
}
|
||||
|
||||
return code;
|
||||
}
|
||||
|
||||
int32_t tDiskDataBuilderGet(SDiskDataBuilder *pBuilder, uint8_t **ppData) {
|
||||
int32_t code = 0;
|
||||
// TODO
|
||||
return code;
|
||||
}
|
Loading…
Reference in New Issue