more code
This commit is contained in:
parent
f6555efd9c
commit
726006d18a
|
@ -49,6 +49,8 @@ target_sources(
|
||||||
"src/tsdb/tsdbSnapshot.c"
|
"src/tsdb/tsdbSnapshot.c"
|
||||||
"src/tsdb/tsdbCacheRead.c"
|
"src/tsdb/tsdbCacheRead.c"
|
||||||
"src/tsdb/tsdbRetention.c"
|
"src/tsdb/tsdbRetention.c"
|
||||||
|
"src/tsdb/tsdbDiskData.c"
|
||||||
|
"src/tsdb/tsdbCompress.c"
|
||||||
|
|
||||||
# tq
|
# tq
|
||||||
"src/tq/tq.c"
|
"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