提交 e8d96d43 编写于 作者: H Hongze Cheng

more

上级 c36491c1
#if !defined(_TD_DATA_H_)
#define _TD_DATA_H_
#include <stdint.h>
#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_
// A doubly linked list
#if !defined(_TD_DLIST_H_)
#define _TD_DLIST_H_
#include <stdint.h>
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_
#if !defined(_TD_DATA_FORMAT_H_)
#define _TD_DATA_FORMAT_H_
#include <stdint.h>
#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_
......@@ -4,7 +4,7 @@
#include <stdint.h>
typedef enum : uint8_t {
TD_DATATYPE_INVLD = 0,
TD_DATATYPE_INVLD = 0, // invalid data type
TD_DATATYPE_BOOL,
TD_DATATYPE_TINYINT,
TD_DATATYPE_SMALLINT,
......
......@@ -23,6 +23,7 @@ typedef struct {
// Use a doublely linked list to implement this
typedef struct STSDBCache {
// Number of blocks the cache is allocated
int32_t numOfBlocks;
SDList *cacheList;
void * current;
......@@ -32,7 +33,7 @@ typedef struct STSDBCache {
// ---- 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_KEY_RANGE_AT_CACHE(pBlock, tableId) ((pBlock)->pTableInfo)[tableId]
#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)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册