From 194ffc9438c433d8cbefaaf1b139640d3ed0d45b Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Sat, 8 Feb 2020 18:58:46 +0800 Subject: [PATCH 1/2] more --- src/vnode/common/catalog/inc/schema.h | 22 ++++++++++++++++++++++ src/vnode/common/data/inc/data.h | 2 ++ src/vnode/common/tstr/inc/tstring.h | 24 ++++++++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 src/vnode/common/tstr/inc/tstring.h diff --git a/src/vnode/common/catalog/inc/schema.h b/src/vnode/common/catalog/inc/schema.h index 89a048574c..add0fdd9a1 100644 --- a/src/vnode/common/catalog/inc/schema.h +++ b/src/vnode/common/catalog/inc/schema.h @@ -3,6 +3,7 @@ #include +#include "tstring.h" #include "type.h" typedef struct _scolumn { @@ -15,4 +16,25 @@ typedef struct SSchema { SColumn *columns; } SSchema; +// Column with version +typedef struct { + td_datatype_t type; + int32_t colId; + int32_t bytes; +} SVColumn; + +// Schema with version +typedef struct { + int32_t version; // Schema with version + int32_t numOfCols; + int32_t columnId; + SVColumn *columns; +} SVSchema; + +int32_t tdAddColumnToSchema(tstring_t pSchema, SColumn col); + +td_datatype_t tdGetTypeOfCol(SSchema *pSchema, int32_t col); +int32_t tdGetLengthOfCol(SSchema *pSchema, int32_t col); + + #endif // _TD_SCHEMA_H_ diff --git a/src/vnode/common/data/inc/data.h b/src/vnode/common/data/inc/data.h index 5ccecd4718..3768375025 100644 --- a/src/vnode/common/data/inc/data.h +++ b/src/vnode/common/data/inc/data.h @@ -3,6 +3,8 @@ #include +#include "schema.h" + /* The row data should in the form of */ diff --git a/src/vnode/common/tstr/inc/tstring.h b/src/vnode/common/tstr/inc/tstring.h new file mode 100644 index 0000000000..f7cea231f8 --- /dev/null +++ b/src/vnode/common/tstr/inc/tstring.h @@ -0,0 +1,24 @@ +/* A dynamic string library + */ +#if !defined(_TD_TSTRING_H_) +#define _TD_TSTRING_H_ + +#include + +typedef char* tstring_t; + +// The string header +typedef struct { + int32_t strLen; // Allocated data space + int32_t avail; // Available space + char data[]; +} STStrHdr; + +// Get the data length of the string +#define TSTRLEN(pstr) ((STStrHdr *)pstr)->strLen +// Get the available space +#define TSTRAVAIL(pstr) ((STStrHdr *)pstr)->avail +// Get the real allocated string length +#define TSTRRLEN(pstr) ((STStrHdr *)pstr)->strLen + sizeof(STStrHdr) + +#endif // _TD_TSTRING_H_ From e4535ab88af339e01e17420df7e0ac2f84fc7d09 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Sat, 8 Feb 2020 20:10:19 +0800 Subject: [PATCH 2/2] more --- src/vnode/cache/inc/cache.h | 6 +++-- src/vnode/common/datastructure/inc/dlist.h | 29 ++++++++++++++++++++++ src/vnode/tsdb/inc/tsdbCache.h | 14 ++++++++--- 3 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 src/vnode/common/datastructure/inc/dlist.h diff --git a/src/vnode/cache/inc/cache.h b/src/vnode/cache/inc/cache.h index c90c47a621..52f357ee8f 100644 --- a/src/vnode/cache/inc/cache.h +++ b/src/vnode/cache/inc/cache.h @@ -1,12 +1,14 @@ #if !defined(_TD_CACHE_H_) #define _TD_CACHE_H_ +#define TD_MIN_CACHE_BLOCK_SIZE 1024*1024 /* 1M */ +#define TD_MAX_CACHE_BLOCK_SIZE 64*1024*1024 /* 64M */ + typedef void cache_pool_t; typedef struct SCacheBlock { - SCacheBlock *next; - SCacheBlock *prev; + int32_t blockId; char data[]; } SCacheBlock; diff --git a/src/vnode/common/datastructure/inc/dlist.h b/src/vnode/common/datastructure/inc/dlist.h new file mode 100644 index 0000000000..81a3b32ab0 --- /dev/null +++ b/src/vnode/common/datastructure/inc/dlist.h @@ -0,0 +1,29 @@ +// A doubly linked list +#if !defined(_TD_DLIST_H_) +#define _TD_DLIST_H_ + +#include + +typedef struct { + SListNode *prev; + SListNode *next; + void * data; +} SListNode; + +// Doubly linked list +typedef struct { + SListNode *head; + SListNode *tail; + int32_t length; +} SDList; + +// ----- Set operation +#define TD_GET_DLIST_LENGTH(pDList) (((SDList *)pDList)->length) +#define TD_GET_DLIST_HEAD(pDList) (((SDList *)pDList)->head) +#define TD_GET_DLIST_TAIL(pDList) (((SDList *)pDList)->tail) + +#define TD_GET_DLIST_NEXT_NODE(pDNode) (((SListNode *)pDNode)->next) +#define TD_GET_DLIST_PREV_NODE(pDNode) (((SListNode *)pDNode)->prev) +#define TD_GET_DLIST_NODE_DATA(pDNode) (((SListNode *)pDNode)->data) + +#endif // _TD_DLIST_H_ diff --git a/src/vnode/tsdb/inc/tsdbCache.h b/src/vnode/tsdb/inc/tsdbCache.h index cafb545606..d1d2551683 100644 --- a/src/vnode/tsdb/inc/tsdbCache.h +++ b/src/vnode/tsdb/inc/tsdbCache.h @@ -4,11 +4,19 @@ #include #include "cache.h" +#include "dlist.h" +typedef struct { + int64_t blockId; + SCacheBlock *pBlock +} STSDBCacheBlock; + +// Use a doublely linked list to implement this typedef struct STSDBCache { - int64_t blockId; // A block ID counter - SCacheBlock *blockList; + int64_t blockId; // A block ID counter + SDList *cacheList; } STSDBCache; +STSDBCache *tsdbCreateCache(); -#endif // _TD_TSDBCACHE_H_ +#endif // _TD_TSDBCACHE_H_