From 274d115a058ded7090867fd72c116f4f831f453f Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Fri, 19 Nov 2021 13:30:59 +0800 Subject: [PATCH] more --- include/common/trow.h | 92 +++++++++++++++++++++------------ include/common/tschema.h | 18 +++++++ include/dnode/vnode/meta/meta.h | 12 +++-- source/common/src/trow.c | 4 +- 4 files changed, 86 insertions(+), 40 deletions(-) diff --git a/include/common/trow.h b/include/common/trow.h index e699031d7a..8c6d9846fa 100644 --- a/include/common/trow.h +++ b/include/common/trow.h @@ -17,53 +17,77 @@ #define _TD_COMMON_ROW_H_ #include "os.h" +#include "tbuffer.h" +#include "tdef.h" #ifdef __cplusplus extern "C" { #endif -// types -typedef void * SRow; -typedef struct SRowBatch SRowBatch; -typedef struct SRowBuilder SRowBuilder; -typedef struct SRowBatchIter SRowBatchIter; -typedef struct SRowBatchBuilder SRowBatchBuilder; +#define TD_OR_ROW 0 +#define TD_KV_ROW 1 -// SRow -#define ROW_HEADER_SIZE (sizeof(uint8_t) + 2 * sizeof(uint16_t) + sizeof(uint64_t)) -#define rowType(r) (*(uint8_t *)(r)) // row type -#define rowLen(r) (*(uint16_t *)POINTER_SHIFT(r, sizeof(uint8_t))) // row length -#define rowSVer(r) \ - (*(uint16_t *)POINTER_SHIFT(r, sizeof(uint8_t) + sizeof(uint16_t))) // row schema version, only for SDataRow -#define rowNCols(r) rowSVer(r) // only for SKVRow -#define rowVer(r) (*(uint64_t)POINTER_SHIFT(r, sizeof(uint8_t) + 2 * sizeof(uint16_t))) // row version -#define rowCopy(dest, r) memcpy((dest), r, rowLen(r)) +typedef uint16_t col_id_t; -static FORCE_INLINE SRow rowDup(SRow row) { - SRow r = malloc(rowLen(row)); - if (r == NULL) { - return NULL; - } +typedef struct { + TSKEY ts; +} SOrRow; - rowCopy(r, row); +typedef struct { + col_id_t cid; + uint32_t offset; +} SKvRowIdx; - return r; -} +typedef struct { + uint16_t ncols; + SKvRowIdx cidx[]; +} SKvRow; -// SRowBatch +typedef struct { + union { + /// union field for encode and decode + uint64_t info; + struct { + /// row type + uint64_t type : 2; + /// row schema version + uint64_t sver : 16; + /// row total length + uint64_t len : 46; + }; + }; + /// row version + uint64_t ver; + /// timestamp of the row + TSKEY ts; + char content[]; +} SRow; -// SRowBuilder -SRowBuilder *rowBuilderCreate(); -void rowBuilderDestroy(SRowBuilder *); +typedef enum { + /// ordinary row builder + TD_OR_ROW_BUILDER = 0, + /// kv row builder + TD_KV_ROW_BUILDER, + /// self-determined row builder + TD_SD_ROW_BUILDER +} ERowBbuilderT; -// SRowBatchIter -SRowBatchIter *rowBatchIterCreate(SRowBatch *); -void rowBatchIterDestroy(SRowBatchIter *); -const SRow rowBatchIterNext(SRowBatchIter *); +typedef struct { + /// row builder type + ERowBbuilderT type; + /// buffer writer + SBufferWriter bw; + /// target row + SRow *pRow; +} SRowBuilder; -// SRowBatchBuilder -SRowBatchBuilder *rowBatchBuilderCreate(); -void rowBatchBuilderDestroy(SRowBatchBuilder *); +typedef struct { + /* TODO */ +} SRowBatchBuilder; + +#define tRBInit(type, allocator, endian) \ + { .type = (type), tbufInitWriter(allocator, endian), NULL } +void tRBClear(SRowBuilder *pRB); #ifdef __cplusplus } diff --git a/include/common/tschema.h b/include/common/tschema.h index 5e9057520b..acc6a4ad7a 100644 --- a/include/common/tschema.h +++ b/include/common/tschema.h @@ -16,10 +16,28 @@ #ifndef _TD_COMMON_SCHEMA_H_ #define _TD_COMMON_SCHEMA_H_ +#include "os.h" + #ifdef __cplusplus extern "C" { #endif +typedef struct SColAttr { + /* data */ +} SColAttr; + +typedef struct SColumn { + uint8_t type; + uint16_t cid; + uint16_t bytes; +} SColumn; + +typedef struct SSchema { + /// schema version + uint16_t sver; + /* data */ +} SSchema; + #ifdef __cplusplus } #endif diff --git a/include/dnode/vnode/meta/meta.h b/include/dnode/vnode/meta/meta.h index 421f96ef5f..92c44ec4ae 100644 --- a/include/dnode/vnode/meta/meta.h +++ b/include/dnode/vnode/meta/meta.h @@ -41,11 +41,13 @@ void metaOptionsClear(SMetaOptions *pOptions); // STableOpts #define META_TABLE_OPTS_DECLARE(name) STableOpts name = {0} -void metaNormalTableOptsInit(STbOptions *pTbOptions, const char *name, const STSchema *pSchema); -void metaSuperTableOptsInit(STbOptions *pTbOptions, const char *name, tb_uid_t uid, const STSchema *pSchema, - const STSchema *pTagSchema); -void metaChildTableOptsInit(STbOptions *pTbOptions, const char *name, tb_uid_t suid, const SKVRow tags); -void metaTableOptsClear(STbOptions *pTbOptions); +void metaNormalTableOptsInit(STbOptions *pTbOptions, const char *name, const STSchema *pSchema); +void metaSuperTableOptsInit(STbOptions *pTbOptions, const char *name, tb_uid_t uid, const STSchema *pSchema, + const STSchema *pTagSchema); +void metaChildTableOptsInit(STbOptions *pTbOptions, const char *name, tb_uid_t suid, const SKVRow tags); +void metaTableOptsClear(STbOptions *pTbOptions); +uint64_t metaEncodeTbOptions(void **pBuf, STbOptions *pTbOptions); +STbOptions *metaDecodeTbOptions(void *pBuf, size_t size, bool endian); #ifdef __cplusplus } diff --git a/source/common/src/trow.c b/source/common/src/trow.c index cf1b0eceff..e443f92b25 100644 --- a/source/common/src/trow.c +++ b/source/common/src/trow.c @@ -15,6 +15,7 @@ #include "trow.h" +#if 0 /* ------------ Structures ---------- */ struct SRowBatch { int32_t compress : 1; // if batch row is compressed @@ -86,4 +87,5 @@ const SRow rowBatchIterNext(SRowBatchIter *pRowBatchIter) { // SRowBatchBuilder SRowBatchBuilder *rowBatchBuilderCreate(); -void rowBatchBuilderDestroy(SRowBatchBuilder *); \ No newline at end of file +void rowBatchBuilderDestroy(SRowBatchBuilder *); +#endif \ No newline at end of file