Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
79bfedd0
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
79bfedd0
编写于
1月 26, 2022
作者:
C
Cary Xu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
iterator
上级
df6166ea
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
40 addition
and
9 deletion
+40
-9
include/common/trow.h
include/common/trow.h
+40
-9
未找到文件。
include/common/trow.h
浏览文件 @
79bfedd0
...
...
@@ -585,8 +585,8 @@ typedef struct {
void
*
pBitmap
;
uint32_t
offset
;
col_id_t
maxColId
;
col_id_t
colIdx
;
// [PRIMARYKEY_TIMESTAMP_COL_ID, nCols], PRIMARYKEY_TIMESTAMP_COL_ID equals 1
col_id_t
kvIdx
;
col_id_t
colIdx
;
// [PRIMARYKEY_TIMESTAMP_COL_ID, n
Schema
Cols], PRIMARYKEY_TIMESTAMP_COL_ID equals 1
col_id_t
kvIdx
;
// [0, nKvCols)
}
STSRowIter
;
static
FORCE_INLINE
void
tdSTSRowIterReset
(
STSRowIter
*
pIter
,
STSRow
*
pRow
)
{
...
...
@@ -670,28 +670,59 @@ static FORCE_INLINE bool tdSTSRowGetVal(STSRowIter *pIter, col_id_t colId, col_t
return
true
;
}
static
FORCE_INLINE
bool
tdGetTpRowDataOfCol
(
STSRow
*
pRow
,
col_type_t
type
,
int32_t
offset
,
SCellVal
*
pVal
)
{
if
(
IS_VAR_DATA_TYPE
(
type
))
{
static
FORCE_INLINE
bool
tdGetTpRowDataOfCol
(
STSRowIter
*
pIter
,
col_type_t
colType
,
int32_t
offset
,
SCellVal
*
pVal
)
{
STSRow
*
pRow
=
pIter
->
pRow
;
if
(
IS_VAR_DATA_TYPE
(
colType
))
{
pVal
->
val
=
POINTER_SHIFT
(
pRow
,
*
(
VarDataOffsetT
*
)
POINTER_SHIFT
(
pRow
->
data
,
offset
));
}
else
{
pVal
->
val
=
POINTER_SHIFT
(
pRow
->
data
,
offset
);
}
#ifdef TD_SUPPORT_BITMAP
if
(
tdRowGetValType
(
pIter
->
pBitmap
,
pIter
->
colIdx
-
1
,
&
pVal
->
valType
)
!=
TSDB_CODE_SUCCESS
)
{
pVal
->
valType
=
TD_VTYPE_NONE
;
}
#else
pVal
->
valType
=
isNull
(
pVal
->
val
,
colType
)
?
TD_VTYPE_NULL
:
TD_VTYPE_NORM
;
#endif
return
true
;
}
static
FORCE_INLINE
bool
tdGetKvRowValOfColEx
(
STSRow
*
pRow
,
col_id_t
colId
,
col_type_t
colType
,
col_id_t
*
nIdx
,
SCellVal
*
pVal
)
{
static
FORCE_INLINE
bool
tdGetKvRowValOfColEx
(
STSRowIter
*
pIter
,
col_id_t
colId
,
col_type_t
colType
,
col_id_t
*
nIdx
,
SCellVal
*
pVal
)
{
STSRow
*
pRow
=
pIter
->
pRow
;
SKvRowIdx
*
pKvIdx
=
NULL
;
bool
colFound
=
false
;
while
(
*
nIdx
<
pRow
->
ncols
)
{
SKvRowIdx
*
pKvIdx
=
POINTER_SHIFT
(
pRow
->
data
,
*
nIdx
*
sizeof
(
SKvRowIdx
));
pKvIdx
=
POINTER_SHIFT
(
pRow
->
data
,
*
nIdx
*
sizeof
(
SKvRowIdx
));
if
(
pKvIdx
->
cid
==
colId
)
{
++
(
*
nIdx
);
pVal
->
val
=
POINTER_SHIFT
(
pRow
,
pKvIdx
->
offset
);
colFound
=
true
;
break
;
}
else
if
(
pKvIdx
->
cid
>
colId
)
{
return
false
;
pVal
->
valType
=
TD_VTYPE_NONE
;
return
true
;
}
else
{
++
(
*
nIdx
);
}
}
if
(
!
colFound
)
return
false
;
#ifdef TD_SUPPORT_BITMAP
int16_t
colIdx
=
-
1
;
if
(
pKvIdx
)
{
colIdx
=
POINTER_DISTANCE
(
pRow
->
data
,
pKvIdx
)
/
sizeof
(
SKvRowIdx
);
}
if
(
tdRowGetValType
(
pIter
->
pBitmap
,
colIdx
,
&
pVal
->
valType
)
!=
TSDB_CODE_SUCCESS
)
{
pVal
->
valType
=
TD_VTYPE_NONE
;
}
#else
pVal
->
valType
=
isNull
(
pVal
->
val
,
colType
)
?
TD_VTYPE_NULL
:
TD_VTYPE_NORM
;
#endif
return
true
;
}
...
...
@@ -732,9 +763,9 @@ static FORCE_INLINE bool tdSTSRowIterNext(STSRowIter *pIter, col_id_t colId, col
return
false
;
}
}
return
tdGetTpRowDataOfCol
(
pIter
->
pRow
,
pCol
->
type
,
pCol
->
offset
-
sizeof
(
TSKEY
),
pVal
);
return
tdGetTpRowDataOfCol
(
pIter
,
pCol
->
type
,
pCol
->
offset
-
sizeof
(
TSKEY
),
pVal
);
}
else
if
(
TD_IS_KV_ROW
(
pIter
->
pRow
)){
return
tdGetKvRowValOfColEx
(
pIter
->
pRow
,
colId
,
colType
,
&
pIter
->
kvIdx
,
pVal
);
return
tdGetKvRowValOfColEx
(
pIter
,
colId
,
colType
,
&
pIter
->
kvIdx
,
pVal
);
}
else
{
pVal
->
valType
=
TD_VTYPE_NONE
;
terrno
=
TSDB_CODE_INVALID_PARA
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录