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

more

上级 e8d96d43
......@@ -3,40 +3,54 @@
#include <stdint.h>
#include "tstring.h"
#include "type.h"
typedef struct _scolumn {
tstring_t colName; // column name
td_datatype_t type; // data type
int32_t bytes; // number of bytes
// Column definition
// TODO: if we need to align the structure
typedef struct {
td_datatype_t type; // Column type
int32_t colId; // column ID
int32_t bytes; // column bytes
char * colName; // the column name
} SColumn;
typedef struct SSchema {
int32_t numOfCols;
// Schema definition
typedef struct {
int32_t version; // schema version, it is used to change the schema
int32_t numOfCols;
int32_t numOfTags;
int32_t colIdCounter;
SColumn *columns;
} SSchema;
// Column with version
typedef struct {
tstring_t colName;
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 numOfTags;
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);
/* Inline schema definition
* +---------+---------+---------+-----+---------+-----------+-----+-----------+
* | int32_t | | | | | | | |
* +---------+---------+---------+-----+---------+-----------+-----+-----------+
* | len | SSchema | SColumn | ... | SColumn | col1_name | ... | colN_name |
* +---------+---------+---------+-----+---------+-----------+-----+-----------+
*/
typedef char *SISchema
// ---- operation on SColumn
#define TD_COLUMN_TYPE(pCol) ((pCol)->type)
#define TD_COLUMN_ID(pCol) ((pCol)->colId)
#define TD_COLUMN_BYTES(pCol) ((pCol)->bytes)
#define TD_COLUMN_NAME(pCol) ((pCol)->colName)
// ---- operation on SSchema
#define TD_SCHEMA_VERSION(pSchema) ((pSchema)->version)
#define TD_SCHEMA_NCOLS(pSchema) ((pSchema)->numOfCols)
#define TD_SCHEMA_NTAGS(pSchema) ((pSchema)->numOfTags)
#define TD_SCHEMA_TOTAL_COLS(pSchema) (TD_SCHEMA_NCOLS(pSchema) + TD_SCHEMA_NTAGS(pSchema))
#define TD_SCHEMA_NEXT_COLID(pSchema) ((pSchema)->colIdCounter++)
#define TD_SCHEMA_COLS(pSchema) ((pSchema)->columns)
#define TD_SCHEMA_TAGS(pSchema) (TD_SCHEMA_COLS(pSchema) + TD_SCHEMA_NCOLS(pSchema))
#define TD_SCHEMA_COLUMN_AT(pSchema, idx) TD_SCHEMA_COLS(pSchema)[idx]
#define TD_SCHEMA_TAG_AT(pSchema, idx) TD_SCHEMA_TAGS(pSchema)[idx]
// ---- operation on SISchema
#define TD_ISCHEMA_LEN(pISchema) *((int32_t *)(pISchema))
#define TD_ISCHEMA_SCHEMA(pISchema) ((SSchema *)((pISchema) + sizeof(int32_t)))
#endif // _TD_SCHEMA_H_
......@@ -29,4 +29,6 @@ typedef enum : uint8_t {
#define TD_DATATYPE_NCHAR_NULL
#define TD_DATATYPE_BINARY_NULL
#define TD_IS_VALID_DATATYPE(type) (((type) > TD_DATA_TYPE_INVLD) && ((type) <= TD_DATATYPE_BINARY))
#endif // _TD_TYPE_H_
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册