提交 eb6b6e0c 编写于 作者: T Tao Liu

[TD-90] alter tag function develop

上级 df01a390
......@@ -202,11 +202,15 @@ void tdMergeTwoDataCols(SDataCols *target, SDataCols *src1, int *iter1, SD
// ----------------- Tag row structure
/* A tag row, the format is like below:
+----------+-------------------------------------------------------------+---------------------------------+
| int16 | int16 | int64 | int16 | int64 | ...| int16 | int64 | char |
+----------+-------------------------------------------------------------+---------------------------------+
| ncols | colId1 | offset1 | colId2 | offset2 | ...| colIdN | offsetN | values |
+----------+-------------------------------------------------------------+---------------------------------+
+----------+----------------------------------------------------------------+
| STagRow | STagCol | STagCol | STagCol | STagCol | ...| STagCol | STagCol |
+----------+----------------------------------------------------------------+
pData
+----------+----------------------------------------------------------------+
| value 1 | value 2 | value 3 | value 4 | ....|value n |
+----------+----------------------------------------------------------------+
*/
......@@ -221,8 +225,8 @@ void tdMergeTwoDataCols(SDataCols *target, SDataCols *src1, int *iter1, SD
typedef struct {
int16_t colId; // column ID
int8_t colType;
int8_t colLen; // if col type is binary/Nchar, this is the length of binary/Nchar
int16_t colType;
int16_t colLen; // if col type is binary/Nchar, this is the length of binary/Nchar
int16_t offset; //to store value for numeric col or offset for binary/Nchar
} STagCol;
......@@ -238,7 +242,7 @@ typedef struct {
int tdInsertTagCol(SDataRow row, void *value, int16_t len, int8_t type, int16_t colId); //insert tag value and update all the information
int tdDeleteTagCol(SDataRow row, int16_t colId); // delete tag value and update all the information
int tdQuerTagByID(SDataRow row, int16_t colId, void *value); //if find tag, return value length, else return -1;
int tdQuerTagByID(SDataRow row, int16_t colId, void *value, int16_t *type, int16_t *len); //if find tag, 0, else return -1;
int tdAppendTagColVal(SDataRow row, void *value, int8_t type, int32_t bytes);
SDataRow tdNewTagRowFromSchema(STSchema *pSchema);
......
......@@ -151,6 +151,26 @@ SDataRow tdNewDataRowFromSchema(STSchema *pSchema) {
return row;
}
int tdInsertTagCol(SDataRow row, void *value, int16_t len, int8_t type, int16_t colId){ //insert tag value and update all the information
return 0;
};
int tdDeleteTagCol(SDataRow row, int16_t colId){ // delete tag value and update all the information
return o;
};
int tdQuerTagByID(SDataRow row, int16_t colId, void *value, int16_t *type, int16_t *len){ //if find tag, 0, else return -1;
return 0;
};
int tdAppendTagColVal(SDataRow row, void *value, int8_t type, int32_t bytes){
return 0;
};
SDataRow tdNewTagRowFromSchema(STSchema *pSchema) {
//todo
}
/**
* Free the SDataRow object
*/
......@@ -183,6 +203,25 @@ int tdAppendColVal(SDataRow row, void *value, int8_t type, int32_t bytes, int32_
return 0;
}
int tdAppendColVal(SDataRow row, void *value, int8_t type, int32_t bytes, int32_t offset) {
ASSERT(value != NULL);
int32_t toffset = offset + TD_DATA_ROW_HEAD_SIZE;
char * ptr = POINTER_SHIFT(row, dataRowLen(row));
switch (type) {
case TSDB_DATA_TYPE_BINARY:
case TSDB_DATA_TYPE_NCHAR:
*(VarDataOffsetT *)POINTER_SHIFT(row, toffset) = dataRowLen(row);
memcpy(ptr, value, varDataTLen(value));
dataRowLen(row) += varDataTLen(value);
break;
default:
memcpy(POINTER_SHIFT(row, toffset), value, TYPE_BYTES[type]);
break;
}
return 0;
}
SDataRow tdDataRowDup(SDataRow row) {
SDataRow trow = malloc(dataRowLen(row));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册