diff --git a/src/vnode/common/data/inc/data.h b/src/vnode/common/data/inc/data.h deleted file mode 100644 index 3768375025..0000000000 --- a/src/vnode/common/data/inc/data.h +++ /dev/null @@ -1,28 +0,0 @@ -#if !defined(_TD_DATA_H_) -#define _TD_DATA_H_ - -#include - -#include "schema.h" - -/* The row data should in the form of - */ - -// ---- Row data interface -typedef struct { - int32_t numOfRows; - char * data; -} SRData; - -// ---- Column data interface -typedef struct { - int32_t numOfPoints; - char * data; -} SCData; - -typedef struct { - int32_t numOfCols; - SCData **pData; -} SCDataBlock; - -#endif // _TD_DATA_H_ diff --git a/src/vnode/common/datastructure/inc/dlist.h b/src/vnode/common/datastructure/inc/dlist.h deleted file mode 100644 index 81a3b32ab0..0000000000 --- a/src/vnode/common/datastructure/inc/dlist.h +++ /dev/null @@ -1,29 +0,0 @@ -// 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/inc/dataformat.h b/src/vnode/common/inc/dataformat.h new file mode 100644 index 0000000000..3db70c9569 --- /dev/null +++ b/src/vnode/common/inc/dataformat.h @@ -0,0 +1,66 @@ +#if !defined(_TD_DATA_FORMAT_H_) +#define _TD_DATA_FORMAT_H_ + +#include + +#include "type.h" +#include "schema.h" + +// ----------------- Data row structure + +/* A data row, the format of it is like below: + * +---------+---------------------------------+ + * | int32_t | | + * +---------+---------------------------------+ + * | len | data | + * +---------+---------------------------------+ + */ +typedef char* SDataRow; + +/* Data rows definition, the format of it is like below: + * +---------+---------+-----------------------+--------+-----------------------+ + * | int32_t | int32_t | | | | + * +---------+---------+-----------------------+--------+-----------------------+ + * | len | nrows | SDataRow | .... | SDataRow | + * +---------+---------+-----------------------+--------+-----------------------+ + */ +typedef char * SDataRows; + +/* Data column definition + * +---------+---------+-----------------------+ + * | int32_t | int32_t | | + * +---------+---------+-----------------------+ + * | len | npoints | data | + * +---------+---------+-----------------------+ + */ +typedef char * SDataCol; + +/* Data columns definition + * +---------+---------+-----------------------+--------+-----------------------+ + * | int32_t | int32_t | | | | + * +---------+---------+-----------------------+--------+-----------------------+ + * | len | npoints | SDataCol | .... | SDataCol | + * +---------+---------+-----------------------+--------+-----------------------+ + */ +typedef char * SDataCols; + +// ----------------- Data column structure + +// ---- operation on SDataRow; +#define TD_DATAROW_LEN(pDataRow) (*(int32_t *)(pDataRow)) +#define TD_DATAROW_DATA(pDataRow) ((pDataRow) + sizeof(int32_t)) + +// ---- operation on SDataRows +#define TD_DATAROWS_LEN(pDataRows) (*(int32_t *)(pDataRows)) +#define TD_DATAROWS_ROWS(pDataRows) (*(int32_t *)(pDataRows + sizeof(int32_t))) +#define TD_NEXT_DATAROW(pDataRow) ((pDataRow) + TD_DATAROW_LEN(pDataRow)) + +// ---- operation on SDataCol +#define TD_DATACOL_LEN(pDataCol) (*(int32_t *)(pDataCol)) +#define TD_DATACOL_NPOINTS(pDataCol) (*(int32_t *)(pDataCol + sizeof(int32_t))) + +// ---- operation on SDataCols +#define TD_DATACOLS_LEN(pDataCols) (*(int32_t *)(pDataCols)) +#define TD_DATACOLS_NPOINTS(pDataCols) (*(int32_t *)(pDataCols + sizeof(int32_t))) + +#endif // _TD_DATA_FORMAT_H_ diff --git a/src/vnode/common/catalog/inc/schema.h b/src/vnode/common/inc/schema.h similarity index 100% rename from src/vnode/common/catalog/inc/schema.h rename to src/vnode/common/inc/schema.h diff --git a/src/vnode/common/catalog/inc/type.h b/src/vnode/common/inc/type.h similarity index 93% rename from src/vnode/common/catalog/inc/type.h rename to src/vnode/common/inc/type.h index 69aee2a5de..c36d7fd43a 100644 --- a/src/vnode/common/catalog/inc/type.h +++ b/src/vnode/common/inc/type.h @@ -4,7 +4,7 @@ #include typedef enum : uint8_t { - TD_DATATYPE_INVLD = 0, + TD_DATATYPE_INVLD = 0, // invalid data type TD_DATATYPE_BOOL, TD_DATATYPE_TINYINT, TD_DATATYPE_SMALLINT, diff --git a/src/vnode/common/src/dataformat.c b/src/vnode/common/src/dataformat.c new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/vnode/tsdb/inc/tsdbCache.h b/src/vnode/tsdb/inc/tsdbCache.h index d1d2551683..b9de8551bc 100644 --- a/src/vnode/tsdb/inc/tsdbCache.h +++ b/src/vnode/tsdb/inc/tsdbCache.h @@ -6,16 +6,36 @@ #include "cache.h" #include "dlist.h" +#define TSDB_DEFAULT_CACHE_BLOCK_SIZE 16*1024*1024 /* 16M */ + typedef struct { - int64_t blockId; - SCacheBlock *pBlock + int64_t skey; // start key + int64_t ekey; // end key + int32_t numOfRows // numOfRows +} STableCacheInfo; + +typedef struct { + char *pData; + STableCacheInfo *pTableInfo; + SCacheBlock *prev; + SCacheBlock *next; } STSDBCacheBlock; // Use a doublely linked list to implement this typedef struct STSDBCache { - int64_t blockId; // A block ID counter + // Number of blocks the cache is allocated + int32_t numOfBlocks; SDList *cacheList; -} STSDBCache; + void * current; +} SCacheHandle; + + +// ---- Operation on STSDBCacheBlock +#define TSDB_CACHE_BLOCK_DATA(pBlock) ((pBlock)->pData) +#define TSDB_CACHE_AVAIL_SPACE(pBlock) ((char *)((pBlock)->pTableInfo) - ((pBlock)->pData)) +#define TSDB_TABLE_INFO_OF_CACHE(pBlock, tableId) ((pBlock)->pTableInfo)[tableId] +#define TSDB_NEXT_CACHE_BLOCK(pBlock) ((pBlock)->next) +#define TSDB_PREV_CACHE_BLOCK(pBlock) ((pBlock)->prev) STSDBCache *tsdbCreateCache(); diff --git a/src/vnode/tsdb/inc/tsdbMeta.h b/src/vnode/tsdb/inc/tsdbMeta.h index 6642e29ad6..49963b3293 100644 --- a/src/vnode/tsdb/inc/tsdbMeta.h +++ b/src/vnode/tsdb/inc/tsdbMeta.h @@ -9,7 +9,7 @@ // Initially, there are 4 tables #define TSDB_INIT_NUMBER_OF_SUPER_TABLE 4 -typedef enum : uint8_t { +typedef enum { TSDB_SUPER_TABLE, // super table TSDB_NTABLE, // table not created from super table TSDB_STABLE // table created from super table diff --git a/src/vnode/tsdb/src/tsdb.c b/src/vnode/tsdb/src/tsdb.c index 50a46717f6..689121673d 100644 --- a/src/vnode/tsdb/src/tsdb.c +++ b/src/vnode/tsdb/src/tsdb.c @@ -3,13 +3,21 @@ #include "tsdb.h" #include "disk.h" -#include "cache.h" +#include "tsdbMeta.h" +#include "tsdbCache.h" typedef struct STSDBRepo { // TSDB configuration STSDBcfg *pCfg; + // The meter meta handle of this TSDB repository + SMetaHandle *pMetaHandle; + + // The cache Handle + SCacheHandle *pCacheHandle; + + /* Disk tier handle for multi-tier storage * * The handle is responsible for dealing with object-oriented