Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
5b6f9bdb
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
5b6f9bdb
编写于
5月 30, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refact: tag api
上级
fdf7d778
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
160 addition
and
36 deletion
+160
-36
include/common/tdataformat.h
include/common/tdataformat.h
+18
-7
include/util/tencode.h
include/util/tencode.h
+46
-0
source/common/src/tdataformat.c
source/common/src/tdataformat.c
+96
-29
未找到文件。
include/common/tdataformat.h
浏览文件 @
5b6f9bdb
...
@@ -128,9 +128,23 @@ struct STagVal {
...
@@ -128,9 +128,23 @@ struct STagVal {
int16_t
cid
;
int16_t
cid
;
char
*
pKey
;
char
*
pKey
;
};
};
int8_t
type
;
int8_t
type
;
uint32_t
nData
;
union
{
uint8_t
*
pData
;
int8_t
i8
;
uint8_t
u8
;
int16_t
i16
;
uint16_t
u16
;
int32_t
i32
;
uint32_t
u32
;
int64_t
i64
;
uint64_t
u64
;
float
f
;
double
d
;
struct
{
uint32_t
nData
;
uint8_t
*
pData
;
};
};
};
};
static
FORCE_INLINE
void
tTagValPush
(
SArray
*
pTagArray
,
void
*
key
,
int8_t
type
,
uint8_t
*
pData
,
uint32_t
nData
,
static
FORCE_INLINE
void
tTagValPush
(
SArray
*
pTagArray
,
void
*
key
,
int8_t
type
,
uint8_t
*
pData
,
uint32_t
nData
,
...
@@ -218,8 +232,7 @@ struct STag {
...
@@ -218,8 +232,7 @@ struct STag {
#define schemaColAt(s, i) ((s)->columns + i)
#define schemaColAt(s, i) ((s)->columns + i)
#define tdFreeSchema(s) taosMemoryFreeClear((s))
#define tdFreeSchema(s) taosMemoryFreeClear((s))
STSchema
*
STSchema
*
tdDupSchema
(
const
STSchema
*
pSchema
);
tdDupSchema
(
const
STSchema
*
pSchema
);
int32_t
tdEncodeSchema
(
void
**
buf
,
STSchema
*
pSchema
);
int32_t
tdEncodeSchema
(
void
**
buf
,
STSchema
*
pSchema
);
void
*
tdDecodeSchema
(
void
*
buf
,
STSchema
**
pRSchema
);
void
*
tdDecodeSchema
(
void
*
buf
,
STSchema
**
pRSchema
);
...
@@ -403,8 +416,6 @@ SDataCols *tdFreeDataCols(SDataCols *pCols);
...
@@ -403,8 +416,6 @@ SDataCols *tdFreeDataCols(SDataCols *pCols);
int32_t
tdMergeDataCols
(
SDataCols
*
target
,
SDataCols
*
source
,
int32_t
rowsToMerge
,
int32_t
*
pOffset
,
bool
update
,
int32_t
tdMergeDataCols
(
SDataCols
*
target
,
SDataCols
*
source
,
int32_t
rowsToMerge
,
int32_t
*
pOffset
,
bool
update
,
TDRowVerT
maxVer
);
TDRowVerT
maxVer
);
#endif
#endif
#ifdef __cplusplus
#ifdef __cplusplus
...
...
include/util/tencode.h
浏览文件 @
5b6f9bdb
...
@@ -530,6 +530,24 @@ static FORCE_INLINE int32_t tPutI64(uint8_t* p, int64_t v) {
...
@@ -530,6 +530,24 @@ static FORCE_INLINE int32_t tPutI64(uint8_t* p, int64_t v) {
return
sizeof
(
int64_t
);
return
sizeof
(
int64_t
);
}
}
static
FORCE_INLINE
int32_t
tPutFloat
(
uint8_t
*
p
,
float
f
)
{
union
{
uint32_t
ui
;
float
f
;
}
v
=
{.
f
=
f
};
return
tPutU32
(
p
,
v
.
ui
);
}
static
FORCE_INLINE
int32_t
tPutDouble
(
uint8_t
*
p
,
double
d
)
{
union
{
uint64_t
ui
;
double
d
;
}
v
=
{.
d
=
d
};
return
tPutU64
(
p
,
v
.
ui
);
}
static
FORCE_INLINE
int32_t
tPutU16v
(
uint8_t
*
p
,
uint16_t
v
)
{
tPutV
(
p
,
v
);
}
static
FORCE_INLINE
int32_t
tPutU16v
(
uint8_t
*
p
,
uint16_t
v
)
{
tPutV
(
p
,
v
);
}
static
FORCE_INLINE
int32_t
tPutI16v
(
uint8_t
*
p
,
int16_t
v
)
{
return
tPutU16v
(
p
,
ZIGZAGE
(
int16_t
,
v
));
}
static
FORCE_INLINE
int32_t
tPutI16v
(
uint8_t
*
p
,
int16_t
v
)
{
return
tPutU16v
(
p
,
ZIGZAGE
(
int16_t
,
v
));
}
...
@@ -619,6 +637,34 @@ static FORCE_INLINE int32_t tGetI64v(uint8_t* p, int64_t* v) {
...
@@ -619,6 +637,34 @@ static FORCE_INLINE int32_t tGetI64v(uint8_t* p, int64_t* v) {
return
n
;
return
n
;
}
}
static
FORCE_INLINE
int32_t
tGetFloat
(
uint8_t
*
p
,
float
*
f
)
{
int32_t
n
=
0
;
union
{
uint32_t
ui
;
float
f
;
}
v
;
n
=
tGetU32
(
p
,
&
v
.
ui
);
*
f
=
v
.
f
;
return
n
;
}
static
FORCE_INLINE
int32_t
tGetDouble
(
uint8_t
*
p
,
double
*
d
)
{
int32_t
n
=
0
;
union
{
uint64_t
ui
;
double
d
;
}
v
;
n
=
tGetU64
(
p
,
&
v
.
ui
);
*
d
=
v
.
d
;
return
n
;
}
// =====================
// =====================
static
FORCE_INLINE
int32_t
tPutBinary
(
uint8_t
*
p
,
uint8_t
*
pData
,
uint32_t
nData
)
{
static
FORCE_INLINE
int32_t
tPutBinary
(
uint8_t
*
p
,
uint8_t
*
pData
,
uint32_t
nData
)
{
int
n
=
0
;
int
n
=
0
;
...
...
source/common/src/tdataformat.c
浏览文件 @
5b6f9bdb
...
@@ -574,28 +574,28 @@ static void debugPrintTagVal(int8_t type, const void *val, int32_t vlen, const c
...
@@ -574,28 +574,28 @@ static void debugPrintTagVal(int8_t type, const void *val, int32_t vlen, const c
}
}
}
}
// if (isLarge) {
// if (isLarge) {
// p = (uint8_t *)&((int16_t *)pTag->idx)[pTag->nTag];
// p = (uint8_t *)&((int16_t *)pTag->idx)[pTag->nTag];
// } else {
// } else {
// p = (uint8_t *)&pTag->idx[pTag->nTag];
// p = (uint8_t *)&pTag->idx[pTag->nTag];
// }
// }
// (*ppArray) = taosArrayInit(pTag->nTag + 1, sizeof(STagVal));
// (*ppArray) = taosArrayInit(pTag->nTag + 1, sizeof(STagVal));
// if (*ppArray == NULL) {
// if (*ppArray == NULL) {
// code = TSDB_CODE_OUT_OF_MEMORY;
// code = TSDB_CODE_OUT_OF_MEMORY;
// goto _err;
// goto _err;
// }
// }
// for (int16_t iTag = 0; iTag < pTag->nTag; iTag++) {
// for (int16_t iTag = 0; iTag < pTag->nTag; iTag++) {
// if (isLarge) {
// if (isLarge) {
// offset = ((int16_t *)pTag->idx)[iTag];
// offset = ((int16_t *)pTag->idx)[iTag];
// } else {
// } else {
// offset = pTag->idx[iTag];
// offset = pTag->idx[iTag];
// }
// }
void
debugPrintSTag
(
STag
*
pTag
,
const
char
*
tag
,
int32_t
ln
)
{
void
debugPrintSTag
(
STag
*
pTag
,
const
char
*
tag
,
int32_t
ln
)
{
int8_t
isJson
=
pTag
->
flags
&
TD_TAG_JSON
;
int8_t
isJson
=
pTag
->
flags
&
TD_TAG_JSON
;
int8_t
isLarge
=
pTag
->
flags
&
TD_TAG_LARGE
;
int8_t
isLarge
=
pTag
->
flags
&
TD_TAG_LARGE
;
uint8_t
*
p
=
NULL
;
uint8_t
*
p
=
NULL
;
int16_t
offset
=
0
;
int16_t
offset
=
0
;
...
@@ -642,9 +642,45 @@ static int32_t tPutTagVal(uint8_t *p, STagVal *pTagVal, int8_t isJson) {
...
@@ -642,9 +642,45 @@ static int32_t tPutTagVal(uint8_t *p, STagVal *pTagVal, int8_t isJson) {
if
(
IS_VAR_DATA_TYPE
(
pTagVal
->
type
))
{
if
(
IS_VAR_DATA_TYPE
(
pTagVal
->
type
))
{
n
+=
tPutBinary
(
p
?
p
+
n
:
p
,
pTagVal
->
pData
,
pTagVal
->
nData
);
n
+=
tPutBinary
(
p
?
p
+
n
:
p
,
pTagVal
->
pData
,
pTagVal
->
nData
);
}
else
{
}
else
{
ASSERT
(
pTagVal
->
nData
==
TYPE_BYTES
[
pTagVal
->
type
]);
p
=
p
?
p
+
n
:
p
;
if
(
p
)
memcpy
(
p
+
n
,
pTagVal
->
pData
,
pTagVal
->
nData
);
switch
(
pTagVal
->
type
)
{
n
+=
pTagVal
->
nData
;
case
TSDB_DATA_TYPE_BOOL
:
n
+=
tPutI8
(
p
,
pTagVal
->
i8
?
1
:
0
);
break
;
case
TSDB_DATA_TYPE_TINYINT
:
n
+=
tPutI8
(
p
,
pTagVal
->
i8
);
break
;
case
TSDB_DATA_TYPE_SMALLINT
:
n
+=
tPutI16
(
p
,
pTagVal
->
i16
);
break
;
case
TSDB_DATA_TYPE_INT
:
n
+=
tPutI32
(
p
,
pTagVal
->
i32
);
break
;
case
TSDB_DATA_TYPE_TIMESTAMP
:
case
TSDB_DATA_TYPE_BIGINT
:
n
+=
tPutI64
(
p
,
pTagVal
->
i64
);
break
;
case
TSDB_DATA_TYPE_FLOAT
:
n
+=
tPutFloat
(
p
,
pTagVal
->
f
);
break
;
case
TSDB_DATA_TYPE_DOUBLE
:
n
+=
tPutDouble
(
p
,
pTagVal
->
d
);
break
;
case
TSDB_DATA_TYPE_UTINYINT
:
n
+=
tPutU8
(
p
,
pTagVal
->
u8
);
break
;
case
TSDB_DATA_TYPE_USMALLINT
:
n
+=
tPutU16
(
p
,
pTagVal
->
u16
);
break
;
case
TSDB_DATA_TYPE_UINT
:
n
+=
tPutU32
(
p
,
pTagVal
->
u32
);
break
;
case
TSDB_DATA_TYPE_UBIGINT
:
n
+=
tPutU64
(
p
,
pTagVal
->
u64
);
break
;
default:
ASSERT
(
0
);
}
}
}
return
n
;
return
n
;
...
@@ -666,9 +702,42 @@ static int32_t tGetTagVal(uint8_t *p, STagVal *pTagVal, int8_t isJson) {
...
@@ -666,9 +702,42 @@ static int32_t tGetTagVal(uint8_t *p, STagVal *pTagVal, int8_t isJson) {
if
(
IS_VAR_DATA_TYPE
(
pTagVal
->
type
))
{
if
(
IS_VAR_DATA_TYPE
(
pTagVal
->
type
))
{
n
+=
tGetBinary
(
p
+
n
,
&
pTagVal
->
pData
,
&
pTagVal
->
nData
);
n
+=
tGetBinary
(
p
+
n
,
&
pTagVal
->
pData
,
&
pTagVal
->
nData
);
}
else
{
}
else
{
pTagVal
->
pData
=
p
+
n
;
switch
(
pTagVal
->
type
)
{
pTagVal
->
nData
=
TYPE_BYTES
[
pTagVal
->
type
];
case
TSDB_DATA_TYPE_BOOL
:
n
+=
pTagVal
->
nData
;
case
TSDB_DATA_TYPE_TINYINT
:
n
+=
tGetI8
(
p
+
n
,
&
pTagVal
->
i8
);
break
;
case
TSDB_DATA_TYPE_SMALLINT
:
n
+=
tGetI16
(
p
,
&
pTagVal
->
i16
);
break
;
case
TSDB_DATA_TYPE_INT
:
n
+=
tGetI32
(
p
,
&
pTagVal
->
i32
);
break
;
case
TSDB_DATA_TYPE_TIMESTAMP
:
case
TSDB_DATA_TYPE_BIGINT
:
n
+=
tGetI64
(
p
,
&
pTagVal
->
i64
);
break
;
case
TSDB_DATA_TYPE_FLOAT
:
n
+=
tGetFloat
(
p
,
&
pTagVal
->
f
);
break
;
case
TSDB_DATA_TYPE_DOUBLE
:
n
+=
tGetDouble
(
p
,
&
pTagVal
->
d
);
break
;
case
TSDB_DATA_TYPE_UTINYINT
:
n
+=
tGetU8
(
p
,
&
pTagVal
->
u8
);
break
;
case
TSDB_DATA_TYPE_USMALLINT
:
n
+=
tGetU16
(
p
,
&
pTagVal
->
u16
);
break
;
case
TSDB_DATA_TYPE_UINT
:
n
+=
tGetU32
(
p
,
&
pTagVal
->
u32
);
break
;
case
TSDB_DATA_TYPE_UBIGINT
:
n
+=
tGetU64
(
p
,
&
pTagVal
->
u64
);
break
;
default:
ASSERT
(
0
);
}
}
}
return
n
;
return
n
;
...
@@ -785,9 +854,7 @@ bool tTagGet(const STag *pTag, STagVal *pTagVal) {
...
@@ -785,9 +854,7 @@ bool tTagGet(const STag *pTag, STagVal *pTagVal) {
}
else
if
(
c
>
0
)
{
}
else
if
(
c
>
0
)
{
lidx
=
midx
+
1
;
lidx
=
midx
+
1
;
}
else
{
}
else
{
pTagVal
->
type
=
tv
.
type
;
memcpy
(
pTagVal
,
&
tv
,
sizeof
(
tv
));
pTagVal
->
nData
=
tv
.
nData
;
pTagVal
->
pData
=
tv
.
pData
;
return
true
;
return
true
;
}
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录