diff --git a/src/vnode/cache/inc/cache.h b/src/vnode/cache/inc/cache.h index c90c47a62183eb58ac77c502e430640dc16c8cb8..52f357ee8f133d5110c91df99d0f52328eed2093 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/catalog/inc/schema.h b/src/vnode/common/catalog/inc/schema.h index 89a048574c959cabc0b5caf35e5a0d50beee6a6e..add0fdd9a1c94bf64fcf698f28b9974deb897ce2 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 5ccecd4718b8ba6346ff8b7472b4732052146b20..376837502560e8671735aa7d343cef98d9921d20 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/datastructure/inc/dlist.h b/src/vnode/common/datastructure/inc/dlist.h new file mode 100644 index 0000000000000000000000000000000000000000..81a3b32ab022ee7e9c937e3981316c2fcb1ed205 --- /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/common/tstr/inc/tstring.h b/src/vnode/common/tstr/inc/tstring.h new file mode 100644 index 0000000000000000000000000000000000000000..f7cea231f8d48a5d510f8f3b9487a984c1fb8138 --- /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_ diff --git a/src/vnode/tsdb/inc/tsdbCache.h b/src/vnode/tsdb/inc/tsdbCache.h index cafb545606f8a7bc1ef15cea1e28d25a05213af1..d1d255168397dc4e22775325bc19d89e172d5d91 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_