Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
5d2491de
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1187
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看板
提交
5d2491de
编写于
6月 22, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more work
上级
b20d7d56
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
52 addition
and
49 deletion
+52
-49
include/common/trow.h
include/common/trow.h
+1
-0
source/common/src/trow.c
source/common/src/trow.c
+36
-3
source/dnode/vnode/src/inc/tsdb.h
source/dnode/vnode/src/inc/tsdb.h
+1
-1
source/dnode/vnode/src/tsdb/tsdbUtil.c
source/dnode/vnode/src/tsdb/tsdbUtil.c
+14
-45
未找到文件。
include/common/trow.h
浏览文件 @
5d2491de
...
...
@@ -299,6 +299,7 @@ int32_t tdAppendColValToRow(SRowBuilder *pBuilder, col_id_t colId, int8_t colTyp
int32_t
tdGetTpRowValOfCol
(
SCellVal
*
output
,
STSRow
*
pRow
,
void
*
pBitmap
,
int8_t
colType
,
int32_t
offset
,
int16_t
colIdx
);
int32_t
tdGetKvRowValOfCol
(
SCellVal
*
output
,
STSRow
*
pRow
,
void
*
pBitmap
,
int32_t
offset
,
int16_t
colIdx
);
void
tTSRowGetVal
(
STSRow
*
pRow
,
STSchema
*
pTSchema
,
int16_t
iCol
,
SColVal
*
pColVal
);
typedef
struct
{
STSchema
*
pSchema
;
...
...
source/common/src/trow.c
浏览文件 @
5d2491de
...
...
@@ -339,9 +339,9 @@ int32_t tdSetBitmapValTypeN(void *pBitmap, int16_t nEle, TDRowValT valType, int8
}
bool
tdIsBitmapBlkNorm
(
const
void
*
pBitmap
,
int32_t
numOfBits
,
int8_t
bitmapMode
)
{
int32_t
nBytes
=
(
bitmapMode
==
0
?
numOfBits
/
TD_VTYPE_PARTS
:
numOfBits
/
TD_VTYPE_PARTS_I
);
uint8_t
vTypeByte
=
tdVTypeByte
[
bitmapMode
][
TD_VTYPE_NORM
];
uint8_t
*
qBitmap
=
(
uint8_t
*
)
pBitmap
;
int32_t
nBytes
=
(
bitmapMode
==
0
?
numOfBits
/
TD_VTYPE_PARTS
:
numOfBits
/
TD_VTYPE_PARTS_I
);
uint8_t
vTypeByte
=
tdVTypeByte
[
bitmapMode
][
TD_VTYPE_NORM
];
uint8_t
*
qBitmap
=
(
uint8_t
*
)
pBitmap
;
for
(
int
i
=
0
;
i
<
nBytes
;
++
i
)
{
if
(
*
qBitmap
!=
vTypeByte
)
{
return
false
;
...
...
@@ -1855,4 +1855,37 @@ void tdSTSRowIterReset(STSRowIter *pIter, STSRow *pRow) {
void
tdSTSRowIterInit
(
STSRowIter
*
pIter
,
STSchema
*
pSchema
)
{
pIter
->
pSchema
=
pSchema
;
pIter
->
maxColId
=
pSchema
->
columns
[
pSchema
->
numOfCols
-
1
].
colId
;
}
void
tTSRowGetVal
(
STSRow
*
pRow
,
STSchema
*
pTSchema
,
int16_t
iCol
,
SColVal
*
pColVal
)
{
STColumn
*
pTColumn
=
&
pTSchema
->
columns
[
iCol
];
SCellVal
cv
;
SValue
value
;
ASSERT
(
iCol
>
0
);
if
(
TD_IS_TP_ROW
(
pRow
))
{
tdSTpRowGetVal
(
pRow
,
pTColumn
->
colId
,
pTColumn
->
type
,
pTSchema
->
flen
,
pTColumn
->
offset
,
iCol
-
1
,
&
cv
);
}
else
if
(
TD_IS_KV_ROW
(
pRow
))
{
ASSERT
(
iCol
>
0
);
SKvRowIdx
*
pColIdx
=
tdKvRowColIdxAt
(
pRow
,
iCol
-
1
);
tdSKvRowGetVal
(
pRow
,
pTColumn
->
colId
,
pColIdx
->
offset
,
iCol
-
1
,
&
cv
);
}
else
{
ASSERT
(
0
);
}
if
(
tdValTypeIsNone
(
cv
.
valType
))
{
*
pColVal
=
COL_VAL_NONE
(
pTColumn
->
colId
,
pTColumn
->
type
);
}
else
if
(
tdValTypeIsNull
(
cv
.
valType
))
{
*
pColVal
=
COL_VAL_NULL
(
pTColumn
->
colId
,
pTColumn
->
type
);
}
else
{
if
(
IS_VAR_DATA_TYPE
(
pTColumn
->
type
))
{
value
.
nData
=
varDataLen
(
cv
.
val
);
value
.
pData
=
varDataVal
(
cv
.
val
);
}
else
{
tGetValue
(
cv
.
val
,
&
value
,
pTColumn
->
type
);
}
*
pColVal
=
COL_VAL_VALUE
(
pTColumn
->
colId
,
pTColumn
->
type
,
value
);
}
}
\ No newline at end of file
source/dnode/vnode/src/inc/tsdb.h
浏览文件 @
5d2491de
...
...
@@ -115,7 +115,7 @@ void tColDataReset(SColData *pColData, int16_t cid, int8_t type);
void
tColDataClear
(
void
*
ph
);
int32_t
tColDataAppendValue
(
SColData
*
pColData
,
SColVal
*
pColVal
);
int32_t
tColDataGetValue
(
SColData
*
pColData
,
int32_t
iRow
,
SColVal
*
pColVal
);
int32_t
tColDataCmprFn
(
const
void
*
p1
,
const
void
*
p2
);
int32_t
tColData
P
CmprFn
(
const
void
*
p1
,
const
void
*
p2
);
// SBlockData
int32_t
tBlockDataInit
(
SBlockData
*
pBlockData
);
void
tBlockDataReset
(
SBlockData
*
pBlockData
);
...
...
source/dnode/vnode/src/tsdb/tsdbUtil.c
浏览文件 @
5d2491de
...
...
@@ -509,58 +509,24 @@ void tsdbRowGetColVal(TSDBROW *pRow, STSchema *pTSchema, int32_t iCol, SColVal *
ASSERT
(
iCol
>
0
);
if
(
pRow
->
type
==
0
)
{
// get from row (todo
);
tTSRowGetVal
(
pRow
->
pTSRow
,
pTSchema
,
iCol
,
pColVal
);
}
else
if
(
pRow
->
type
==
1
)
{
SColData
*
pColData
;
SColData
*
pColData
=
&
(
SColData
){.
cid
=
pTColumn
->
colId
}
;
void
*
p
=
NULL
;
// TODO
ASSERT
(
0
);
// p = taosbsearch(&(SColData){.cid = pTColumn->colId}, pRow->pBlockData->aColDataP, pRow->pBlockData->nColData,
// sizeof(SBlockCol), tColDataCmprFn, TD_EQ);
p
=
taosArraySearch
(
pRow
->
pBlockData
->
aColDataP
,
&
pColData
,
tColDataPCmprFn
,
TD_EQ
);
if
(
p
)
{
pColData
=
(
SColData
*
)
p
;
ASSERT
(
pColData
->
flag
);
pColData
=
*
(
SColData
**
)
p
;
if
(
pColData
->
flag
==
HAS_NONE
)
{
goto
_return_none
;
}
else
if
(
pColData
->
flag
==
HAS_NULL
)
{
goto
_return_null
;
}
else
{
uint8_t
v
=
GET_BIT2
(
pColData
->
pBitMap
,
pRow
->
iRow
);
if
(
v
==
0
)
{
goto
_return_none
;
}
else
if
(
v
==
1
)
{
goto
_return_null
;
}
else
{
int32_t
offset
;
if
(
IS_VAR_DATA_TYPE
(
pTColumn
->
type
))
{
// offset = ; (todo)
ASSERT
(
0
);
}
else
{
offset
=
tDataTypes
[
pTColumn
->
type
].
bytes
*
pRow
->
iRow
;
}
tGetValue
(
pColData
->
pData
+
offset
,
&
value
,
pTColumn
->
type
);
}
}
ASSERT
(
pColData
->
type
==
pTColumn
->
type
);
tColDataGetValue
(
pColData
,
pRow
->
iRow
,
pColVal
);
}
else
{
goto
_return_none
;
*
pColVal
=
COL_VAL_NONE
(
pTColumn
->
colId
,
pTColumn
->
type
)
;
}
}
else
{
ASSERT
(
0
);
}
_return_none:
*
pColVal
=
COL_VAL_NONE
(
pTColumn
->
colId
,
pTColumn
->
type
);
return
;
_return_null:
*
pColVal
=
COL_VAL_NULL
(
pTColumn
->
colId
,
pTColumn
->
type
);
return
;
_return_value:
*
pColVal
=
COL_VAL_VALUE
(
pTColumn
->
colId
,
pTColumn
->
type
,
value
);
return
;
}
int32_t
tPutTSDBRow
(
uint8_t
*
p
,
TSDBROW
*
pRow
)
{
...
...
@@ -880,10 +846,13 @@ _exit:
return
code
;
}
int32_t
tColDataCmprFn
(
const
void
*
p1
,
const
void
*
p2
)
{
if
(((
SColData
*
)
p1
)
->
cid
<
((
SColData
*
)
p2
)
->
cid
)
{
int32_t
tColDataPCmprFn
(
const
void
*
p1
,
const
void
*
p2
)
{
SColData
*
pColData1
=
*
(
SColData
**
)
p1
;
SColData
*
pColData2
=
*
(
SColData
**
)
p2
;
if
(
pColData1
->
cid
<
pColData2
->
cid
)
{
return
-
1
;
}
else
if
(
((
SColData
*
)
p1
)
->
cid
>
((
SColData
*
)
p2
)
->
cid
)
{
}
else
if
(
pColData1
->
cid
>
pColData2
->
cid
)
{
return
1
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录