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

[TD-90] alter tag function develop

上级 df01a390
...@@ -202,11 +202,15 @@ void tdMergeTwoDataCols(SDataCols *target, SDataCols *src1, int *iter1, SD ...@@ -202,11 +202,15 @@ void tdMergeTwoDataCols(SDataCols *target, SDataCols *src1, int *iter1, SD
// ----------------- Tag row structure // ----------------- Tag row structure
/* A tag row, the format is like below: /* A tag row, the format is like below:
+----------+-------------------------------------------------------------+---------------------------------+ +----------+----------------------------------------------------------------+
| int16 | int16 | int64 | int16 | int64 | ...| int16 | int64 | char | | STagRow | STagCol | STagCol | STagCol | STagCol | ...| STagCol | STagCol |
+----------+-------------------------------------------------------------+---------------------------------+ +----------+----------------------------------------------------------------+
| ncols | colId1 | offset1 | colId2 | offset2 | ...| colIdN | offsetN | values |
+----------+-------------------------------------------------------------+---------------------------------+ pData
+----------+----------------------------------------------------------------+
| value 1 | value 2 | value 3 | value 4 | ....|value n |
+----------+----------------------------------------------------------------+
*/ */
...@@ -221,8 +225,8 @@ void tdMergeTwoDataCols(SDataCols *target, SDataCols *src1, int *iter1, SD ...@@ -221,8 +225,8 @@ void tdMergeTwoDataCols(SDataCols *target, SDataCols *src1, int *iter1, SD
typedef struct { typedef struct {
int16_t colId; // column ID int16_t colId; // column ID
int8_t colType; int16_t colType;
int8_t colLen; // if col type is binary/Nchar, this is the length of binary/Nchar 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 int16_t offset; //to store value for numeric col or offset for binary/Nchar
} STagCol; } STagCol;
...@@ -238,7 +242,7 @@ typedef struct { ...@@ -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 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 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); int tdAppendTagColVal(SDataRow row, void *value, int8_t type, int32_t bytes);
SDataRow tdNewTagRowFromSchema(STSchema *pSchema); SDataRow tdNewTagRowFromSchema(STSchema *pSchema);
......
...@@ -151,6 +151,26 @@ SDataRow tdNewDataRowFromSchema(STSchema *pSchema) { ...@@ -151,6 +151,26 @@ SDataRow tdNewDataRowFromSchema(STSchema *pSchema) {
return row; 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 * Free the SDataRow object
*/ */
...@@ -183,6 +203,25 @@ int tdAppendColVal(SDataRow row, void *value, int8_t type, int32_t bytes, int32_ ...@@ -183,6 +203,25 @@ int tdAppendColVal(SDataRow row, void *value, int8_t type, int32_t bytes, int32_
return 0; 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 tdDataRowDup(SDataRow row) {
SDataRow trow = malloc(dataRowLen(row)); SDataRow trow = malloc(dataRowLen(row));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册