Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
ba621647
T
TDengine
项目概览
taosdata
/
TDengine
大约 1 年 前同步成功
通知
1184
Star
22015
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看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
ba621647
编写于
11月 24, 2022
作者:
S
Shengliang Guan
提交者:
GitHub
11月 24, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #18396 from taosdata/enh/row_optimize2
enh: row optimize2
上级
de4ef96a
4e739b45
变更
13
展开全部
隐藏空白更改
内联
并排
Showing
13 changed file
with
686 addition
and
617 deletion
+686
-617
include/common/tdataformat.h
include/common/tdataformat.h
+29
-76
include/common/trow.h
include/common/trow.h
+9
-1
source/client/src/clientRawBlockWrite.c
source/client/src/clientRawBlockWrite.c
+12
-5
source/common/src/tdatablock.c
source/common/src/tdatablock.c
+1
-0
source/common/src/tdataformat.c
source/common/src/tdataformat.c
+596
-498
source/common/src/trow.c
source/common/src/trow.c
+6
-7
source/common/src/ttypes.c
source/common/src/ttypes.c
+2
-2
source/dnode/vnode/src/inc/tsdb.h
source/dnode/vnode/src/inc/tsdb.h
+5
-5
source/dnode/vnode/src/tsdb/tsdbCommit.c
source/dnode/vnode/src/tsdb/tsdbCommit.c
+11
-8
source/dnode/vnode/src/tsdb/tsdbDiskData.c
source/dnode/vnode/src/tsdb/tsdbDiskData.c
+5
-5
source/dnode/vnode/src/tsdb/tsdbSnapshot.c
source/dnode/vnode/src/tsdb/tsdbSnapshot.c
+2
-2
source/dnode/vnode/src/tsdb/tsdbUtil.c
source/dnode/vnode/src/tsdb/tsdbUtil.c
+7
-7
source/libs/parser/src/parInsertUtil.c
source/libs/parser/src/parInsertUtil.c
+1
-1
未找到文件。
include/common/tdataformat.h
浏览文件 @
ba621647
...
...
@@ -27,17 +27,17 @@
extern
"C"
{
#endif
typedef
struct
SBuffer
SBuffer
;
typedef
struct
SSchema
SSchema
;
typedef
struct
STColumn
STColumn
;
typedef
struct
STSchema
STSchema
;
typedef
struct
SValue
SValue
;
typedef
struct
SColVal
SColVal
;
typedef
struct
S
TSRow2
STSRow2
;
typedef
struct
S
TSRowBuilder
STSRowBuild
er
;
typedef
struct
STagVal
STagVal
;
typedef
struct
STag
STag
;
typedef
struct
SColData
SColData
;
typedef
struct
SBuffer
SBuffer
;
typedef
struct
SSchema
SSchema
;
typedef
struct
STColumn
STColumn
;
typedef
struct
STSchema
STSchema
;
typedef
struct
SValue
SValue
;
typedef
struct
SColVal
SColVal
;
typedef
struct
S
Row
SRow
;
typedef
struct
S
RowIter
SRowIt
er
;
typedef
struct
STagVal
STagVal
;
typedef
struct
STag
STag
;
typedef
struct
SColData
SColData
;
#define HAS_NONE ((uint8_t)0x1)
#define HAS_NULL ((uint8_t)0x2)
...
...
@@ -68,13 +68,10 @@ struct SBuffer {
void
tBufferDestroy
(
SBuffer
*
pBuffer
);
int32_t
tBufferInit
(
SBuffer
*
pBuffer
,
int64_t
size
);
int32_t
tBufferPut
(
SBuffer
*
pBuffer
,
const
void
*
pData
,
int64_t
nData
);
int32_t
tBufferReserve
(
SBuffer
*
pBuffer
,
int64_t
nData
,
void
**
ppData
);
// STSchema ================================
int32_t
tTSchemaCreate
(
int32_t
sver
,
SSchema
*
pSchema
,
int32_t
nCols
,
STSchema
**
ppTSchema
);
void
tTSchemaDestroy
(
STSchema
*
pTSchema
);
// SValue ================================
static
FORCE_INLINE
int32_t
tGetValue
(
uint8_t
*
p
,
SValue
*
pValue
,
int8_t
type
);
void
tDestroyTSchema
(
STSchema
*
pTSchema
);
// SColVal ================================
#define CV_FLAG_VALUE ((int8_t)0x0)
...
...
@@ -89,26 +86,14 @@ static FORCE_INLINE int32_t tGetValue(uint8_t *p, SValue *pValue, int8_t type);
#define COL_VAL_IS_NULL(CV) ((CV)->flag == CV_FLAG_NULL)
#define COL_VAL_IS_VALUE(CV) ((CV)->flag == CV_FLAG_VALUE)
// STSRow2 ================================
#define TSROW_LEN(PROW, V) tGetI32v((uint8_t *)(PROW)->data, (V) ? &(V) : NULL)
#define TSROW_SVER(PROW, V) tGetI32v((PROW)->data + TSROW_LEN(PROW, NULL), (V) ? &(V) : NULL)
int32_t
tTSRowNew
(
STSRowBuilder
*
pBuilder
,
SArray
*
pArray
,
STSchema
*
pTSchema
,
STSRow2
**
ppRow
);
int32_t
tTSRowClone
(
const
STSRow2
*
pRow
,
STSRow2
**
ppRow
);
void
tTSRowFree
(
STSRow2
*
pRow
);
void
tTSRowGet
(
STSRow2
*
pRow
,
STSchema
*
pTSchema
,
int32_t
iCol
,
SColVal
*
pColVal
);
int32_t
tTSRowToArray
(
STSRow2
*
pRow
,
STSchema
*
pTSchema
,
SArray
**
ppArray
);
int32_t
tPutTSRow
(
uint8_t
*
p
,
STSRow2
*
pRow
);
int32_t
tGetTSRow
(
uint8_t
*
p
,
STSRow2
**
ppRow
);
// STSRowBuilder ================================
#define tsRowBuilderInit() ((STSRowBuilder){0})
#define tsRowBuilderClear(B) \
do { \
if ((B)->pBuf) { \
taosMemoryFree((B)->pBuf); \
} \
} while (0)
// SRow ================================
int32_t
tRowBuild
(
SArray
*
aColVal
,
STSchema
*
pTSchema
,
SBuffer
*
pBuffer
);
void
tRowGet
(
SRow
*
pRow
,
STSchema
*
pTSchema
,
int32_t
iCol
,
SColVal
*
pColVal
);
// SRowIter ================================
int32_t
tRowIterOpen
(
SRow
*
pRow
,
STSchema
*
pTSchema
,
SRowIter
**
ppIter
);
void
tRowIterClose
(
SRowIter
**
ppIter
);
SColVal
*
tRowIterNext
(
SRowIter
*
pIter
);
// STag ================================
int32_t
tTagNew
(
SArray
*
pArray
,
int32_t
version
,
int8_t
isJson
,
STag
**
ppTag
);
...
...
@@ -147,29 +132,17 @@ struct STSchema {
int32_t
numOfCols
;
int32_t
version
;
int32_t
flen
;
int32_t
vlen
;
int32_t
tlen
;
STColumn
columns
[];
};
#define TSROW_HAS_NONE ((uint8_t)0x1)
#define TSROW_HAS_NULL ((uint8_t)0x2U)
#define TSROW_HAS_VAL ((uint8_t)0x4U)
#define TSROW_KV_SMALL ((uint8_t)0x10U)
#define TSROW_KV_MID ((uint8_t)0x20U)
#define TSROW_KV_BIG ((uint8_t)0x40U)
#pragma pack(push, 1)
struct
STSRow2
{
TSKEY
ts
;
uint8_t
flags
;
uint8_t
data
[];
};
#pragma pack(pop)
struct
STSRowBuilder
{
// STSRow2 tsRow;
int32_t
szBuf
;
uint8_t
*
pBuf
;
struct
SRow
{
uint8_t
flag
;
uint8_t
rsv
;
uint16_t
sver
;
uint32_t
len
;
TSKEY
ts
;
uint8_t
data
[];
};
struct
SValue
{
...
...
@@ -258,37 +231,17 @@ typedef struct {
int32_t
nCols
;
schema_ver_t
version
;
uint16_t
flen
;
int32_t
vlen
;
int32_t
tlen
;
STColumn
*
columns
;
}
STSchemaBuilder
;
// use 2 bits for bitmap(default: STSRow/sub block)
#define TD_VTYPE_BITS 2
#define TD_VTYPE_PARTS 4 // PARTITIONS: 1 byte / 2 bits
#define TD_VTYPE_OPTR 3 // OPERATOR: 4 - 1, utilize to get remainder
#define TD_BITMAP_BYTES(cnt) (((cnt) + TD_VTYPE_OPTR) >> 2)
// use 1 bit for bitmap(super block)
#define TD_VTYPE_BITS_I 1
#define TD_VTYPE_PARTS_I 8 // PARTITIONS: 1 byte / 1 bit
#define TD_VTYPE_OPTR_I 7 // OPERATOR: 8 - 1, utilize to get remainder
#define TD_BITMAP_BYTES_I(cnt) (((cnt) + TD_VTYPE_OPTR_I) >> 3)
int32_t
tdInitTSchemaBuilder
(
STSchemaBuilder
*
pBuilder
,
schema_ver_t
version
);
void
tdDestroyTSchemaBuilder
(
STSchemaBuilder
*
pBuilder
);
void
tdResetTSchemaBuilder
(
STSchemaBuilder
*
pBuilder
,
schema_ver_t
version
);
int32_t
tdAddColToSchema
(
STSchemaBuilder
*
pBuilder
,
int8_t
type
,
int8_t
flags
,
col_id_t
colId
,
col_bytes_t
bytes
);
STSchema
*
tdGetSchemaFromBuilder
(
STSchemaBuilder
*
pBuilder
);
static
FORCE_INLINE
int32_t
tGetValue
(
uint8_t
*
p
,
SValue
*
pValue
,
int8_t
type
)
{
if
(
IS_VAR_DATA_TYPE
(
type
))
{
return
tGetBinary
(
p
,
&
pValue
->
pData
,
pValue
?
&
pValue
->
nData
:
NULL
);
}
else
{
memcpy
(
&
pValue
->
val
,
p
,
tDataTypes
[
type
].
bytes
);
return
tDataTypes
[
type
].
bytes
;
}
}
STSchema
*
tBuildTSchema
(
SSchema
*
aSchema
,
int32_t
numOfCols
,
int32_t
version
);
#endif
...
...
include/common/trow.h
浏览文件 @
ba621647
...
...
@@ -55,6 +55,14 @@ typedef struct STSRow {
#define TD_ROW_TP 0x0U // default
#define TD_ROW_KV 0x01U
#define TD_VTYPE_PARTS 4 // PARTITIONS: 1 byte / 2 bits
#define TD_VTYPE_OPTR 3 // OPERATOR: 4 - 1, utilize to get remainder
#define TD_BITMAP_BYTES(cnt) (((cnt) + TD_VTYPE_OPTR) >> 2)
#define TD_VTYPE_PARTS_I 8 // PARTITIONS: 1 byte / 1 bit
#define TD_VTYPE_OPTR_I 7 // OPERATOR: 8 - 1, utilize to get remainder
#define TD_BITMAP_BYTES_I(cnt) (((cnt) + TD_VTYPE_OPTR_I) >> 3)
/**
* @brief value type
* - for data from client input and STSRow in memory, 3 types of value none/null/norm available
...
...
@@ -244,7 +252,7 @@ int32_t tdGetBitmapValTypeI(const void *pBitmap, int16_t colIdx, TDRowValT *pVal
*/
static
FORCE_INLINE
void
*
tdGetBitmapAddrTp
(
STSRow
*
pRow
,
uint32_t
flen
)
{
// The primary TS key is stored separatedly.
return
POINTER_SHIFT
(
TD_ROW_DATA
(
pRow
),
flen
-
sizeof
(
TSKEY
)
);
return
POINTER_SHIFT
(
TD_ROW_DATA
(
pRow
),
flen
);
// return POINTER_SHIFT(pRow->ts, flen);
}
...
...
source/client/src/clientRawBlockWrite.c
浏览文件 @
ba621647
...
...
@@ -1275,6 +1275,7 @@ int taos_write_raw_block(TAOS* taos, int rows, char* pData, const char* tbname)
nVar
++
;
}
}
fLen
-=
sizeof
(
TSKEY
);
int32_t
extendedRowSize
=
rowSize
+
TD_ROW_HEAD_LEN
-
sizeof
(
TSKEY
)
+
nVar
*
sizeof
(
VarDataOffsetT
)
+
(
int32_t
)
TD_BITMAP_BYTES
(
numOfCols
-
1
);
...
...
@@ -1333,7 +1334,9 @@ int taos_write_raw_block(TAOS* taos, int rows, char* pData, const char* tbname)
}
}
offset
+=
TYPE_BYTES
[
pColumn
->
type
];
if
(
pColumn
->
colId
!=
PRIMARYKEY_TIMESTAMP_COL_ID
)
{
offset
+=
TYPE_BYTES
[
pColumn
->
type
];
}
}
tdSRowEnd
(
&
rb
);
int32_t
rowLen
=
TD_ROW_LEN
(
rowData
);
...
...
@@ -1503,6 +1506,7 @@ static int32_t tmqWriteRawDataImpl(TAOS* taos, void* data, int32_t dataLen) {
nVar
++
;
}
}
fLen
-=
sizeof
(
TSKEY
);
int32_t
rows
=
rspObj
.
resInfo
.
numOfRows
;
int32_t
extendedRowSize
=
rowSize
+
TD_ROW_HEAD_LEN
-
sizeof
(
TSKEY
)
+
nVar
*
sizeof
(
VarDataOffsetT
)
+
...
...
@@ -1585,8 +1589,9 @@ static int32_t tmqWriteRawDataImpl(TAOS* taos, void* data, int32_t dataLen) {
tdAppendColValToRow
(
&
rb
,
pColumn
->
colId
,
pColumn
->
type
,
TD_VTYPE_NORM
,
colData
,
true
,
offset
,
k
);
}
}
offset
+=
TYPE_BYTES
[
pColumn
->
type
];
if
(
pColumn
->
colId
!=
PRIMARYKEY_TIMESTAMP_COL_ID
)
{
offset
+=
TYPE_BYTES
[
pColumn
->
type
];
}
}
tdSRowEnd
(
&
rb
);
int32_t
rowLen
=
TD_ROW_LEN
(
rowData
);
...
...
@@ -1803,6 +1808,7 @@ static int32_t tmqWriteRawMetaDataImpl(TAOS* taos, void* data, int32_t dataLen)
nVar
++
;
}
}
fLen
-=
sizeof
(
TSKEY
);
int32_t
rows
=
rspObj
.
resInfo
.
numOfRows
;
int32_t
extendedRowSize
=
rowSize
+
TD_ROW_HEAD_LEN
-
sizeof
(
TSKEY
)
+
nVar
*
sizeof
(
VarDataOffsetT
)
+
...
...
@@ -1888,8 +1894,9 @@ static int32_t tmqWriteRawMetaDataImpl(TAOS* taos, void* data, int32_t dataLen)
tdAppendColValToRow
(
&
rb
,
pColumn
->
colId
,
pColumn
->
type
,
TD_VTYPE_NORM
,
colData
,
true
,
offset
,
k
);
}
}
offset
+=
TYPE_BYTES
[
pColumn
->
type
];
if
(
pColumn
->
colId
!=
PRIMARYKEY_TIMESTAMP_COL_ID
)
{
offset
+=
TYPE_BYTES
[
pColumn
->
type
];
}
}
tdSRowEnd
(
&
rb
);
int32_t
rowLen
=
TD_ROW_LEN
(
rowData
);
...
...
source/common/src/tdatablock.c
浏览文件 @
ba621647
...
...
@@ -2052,6 +2052,7 @@ int32_t buildSubmitReqFromDataBlock(SSubmitReq** pReq, const SSDataBlock* pDataB
isStartKey
=
true
;
tdAppendColValToRow
(
&
rb
,
PRIMARYKEY_TIMESTAMP_COL_ID
,
TSDB_DATA_TYPE_TIMESTAMP
,
TD_VTYPE_NORM
,
var
,
true
,
offset
,
k
);
continue
;
// offset should keep 0 for next column
}
else
if
(
colDataIsNull_s
(
pColInfoData
,
j
))
{
tdAppendColValToRow
(
&
rb
,
PRIMARYKEY_TIMESTAMP_COL_ID
+
k
,
TSDB_DATA_TYPE_TIMESTAMP
,
TD_VTYPE_NULL
,
NULL
,
...
...
source/common/src/tdataformat.c
浏览文件 @
ba621647
此差异已折叠。
点击以展开。
source/common/src/trow.c
浏览文件 @
ba621647
...
...
@@ -192,7 +192,7 @@ bool tdSTpRowGetVal(STSRow *pRow, col_id_t colId, col_type_t colType, int32_t fl
return
true
;
}
void
*
pBitmap
=
tdGetBitmapAddrTp
(
pRow
,
flen
);
tdGetTpRowValOfCol
(
pVal
,
pRow
,
pBitmap
,
colType
,
offset
-
sizeof
(
TSKEY
)
,
colIdx
);
tdGetTpRowValOfCol
(
pVal
,
pRow
,
pBitmap
,
colType
,
offset
,
colIdx
);
return
true
;
}
...
...
@@ -217,7 +217,7 @@ bool tdSTSRowIterFetch(STSRowIter *pIter, col_id_t colId, col_type_t colType, SC
return
false
;
}
}
tdSTSRowIterGetTpVal
(
pIter
,
pCol
->
type
,
pCol
->
offset
-
sizeof
(
TSKEY
)
,
pVal
);
tdSTSRowIterGetTpVal
(
pIter
,
pCol
->
type
,
pCol
->
offset
,
pVal
);
++
pIter
->
colIdx
;
}
else
if
(
TD_IS_KV_ROW
(
pIter
->
pRow
))
{
return
tdSTSRowIterGetKvVal
(
pIter
,
colId
,
&
pIter
->
kvIdx
,
pVal
);
...
...
@@ -244,7 +244,7 @@ bool tdSTSRowIterNext(STSRowIter *pIter, SCellVal *pVal) {
}
if
(
TD_IS_TP_ROW
(
pIter
->
pRow
))
{
tdSTSRowIterGetTpVal
(
pIter
,
pCol
->
type
,
pCol
->
offset
-
sizeof
(
TSKEY
)
,
pVal
);
tdSTSRowIterGetTpVal
(
pIter
,
pCol
->
type
,
pCol
->
offset
,
pVal
);
}
else
if
(
TD_IS_KV_ROW
(
pIter
->
pRow
))
{
tdSTSRowIterGetKvVal
(
pIter
,
pCol
->
colId
,
&
pIter
->
kvIdx
,
pVal
);
}
else
{
...
...
@@ -469,7 +469,7 @@ bool tdSTSRowGetVal(STSRowIter *pIter, col_id_t colId, col_type_t colType, SCell
#ifdef TD_SUPPORT_BITMAP
colIdx
=
POINTER_DISTANCE
(
pCol
,
pSchema
->
columns
)
/
sizeof
(
STColumn
);
#endif
tdGetTpRowValOfCol
(
pVal
,
pRow
,
pIter
->
pBitmap
,
pCol
->
type
,
pCol
->
offset
-
sizeof
(
TSKEY
)
,
colIdx
-
1
);
tdGetTpRowValOfCol
(
pVal
,
pRow
,
pIter
->
pBitmap
,
pCol
->
type
,
pCol
->
offset
,
colIdx
-
1
);
}
else
if
(
TD_IS_KV_ROW
(
pRow
))
{
SKvRowIdx
*
pIdx
=
(
SKvRowIdx
*
)
taosbsearch
(
&
colId
,
TD_ROW_COL_IDX
(
pRow
),
tdRowGetNCols
(
pRow
),
sizeof
(
SKvRowIdx
),
compareKvRowColId
,
TD_EQ
);
...
...
@@ -757,11 +757,10 @@ int32_t tdAppendColValToKvRow(SRowBuilder *pBuilder, TDRowValT valType, const vo
int32_t
tdAppendColValToTpRow
(
SRowBuilder
*
pBuilder
,
TDRowValT
valType
,
const
void
*
val
,
bool
isCopyVarData
,
int8_t
colType
,
int16_t
colIdx
,
int32_t
offset
)
{
if
(
(
offset
<
(
int32_t
)
sizeof
(
TSKEY
))
||
(
colIdx
<
1
)
)
{
if
(
colIdx
<
1
)
{
terrno
=
TSDB_CODE_INVALID_PARA
;
return
terrno
;
}
offset
-=
sizeof
(
TSKEY
);
--
colIdx
;
#ifdef TD_SUPPORT_BITMAP
...
...
@@ -853,7 +852,7 @@ int32_t tdSRowResetBuf(SRowBuilder *pBuilder, void *pBuf) {
memset
(
pBuilder
->
pBitmap
,
TD_VTYPE_NONE_BYTE_II
,
pBuilder
->
nBitmaps
);
#endif
// the primary TS key is stored separatedly
len
=
TD_ROW_HEAD_LEN
+
pBuilder
->
flen
-
sizeof
(
TSKEY
)
+
pBuilder
->
nBitmaps
;
len
=
TD_ROW_HEAD_LEN
+
pBuilder
->
flen
+
pBuilder
->
nBitmaps
;
TD_ROW_SET_LEN
(
pBuilder
->
pBuf
,
len
);
TD_ROW_SET_SVER
(
pBuilder
->
pBuf
,
pBuilder
->
sver
);
break
;
...
...
source/common/src/ttypes.c
浏览文件 @
ba621647
...
...
@@ -61,7 +61,7 @@ tDataTypeDescriptor tDataTypes[TSDB_DATA_TYPE_MAX] = {
static
float
floatMin
=
-
FLT_MAX
,
floatMax
=
FLT_MAX
;
static
double
doubleMin
=
-
DBL_MAX
,
doubleMax
=
DBL_MAX
;
FORCE_INLINE
void
*
getDataMin
(
int32_t
type
,
void
*
value
)
{
FORCE_INLINE
void
*
getDataMin
(
int32_t
type
,
void
*
value
)
{
switch
(
type
)
{
case
TSDB_DATA_TYPE_FLOAT
:
*
(
float
*
)
value
=
floatMin
;
...
...
@@ -77,7 +77,7 @@ FORCE_INLINE void *getDataMin(int32_t type, void* value) {
return
value
;
}
FORCE_INLINE
void
*
getDataMax
(
int32_t
type
,
void
*
value
)
{
FORCE_INLINE
void
*
getDataMax
(
int32_t
type
,
void
*
value
)
{
switch
(
type
)
{
case
TSDB_DATA_TYPE_FLOAT
:
*
(
float
*
)
value
=
floatMax
;
...
...
source/dnode/vnode/src/inc/tsdb.h
浏览文件 @
ba621647
...
...
@@ -56,7 +56,7 @@ typedef struct SDataFWriter SDataFWriter;
typedef
struct
SDataFReader
SDataFReader
;
typedef
struct
SDelFWriter
SDelFWriter
;
typedef
struct
SDelFReader
SDelFReader
;
typedef
struct
S
RowIter
S
RowIter
;
typedef
struct
S
TSDBRowIter
STSDB
RowIter
;
typedef
struct
STsdbFS
STsdbFS
;
typedef
struct
SRowMerger
SRowMerger
;
typedef
struct
STsdbReadSnap
STsdbReadSnap
;
...
...
@@ -111,9 +111,9 @@ static FORCE_INLINE int64_t tsdbLogicToFileSize(int64_t lSize, int32_t szPage) {
void
tsdbRowGetColVal
(
TSDBROW
*
pRow
,
STSchema
*
pTSchema
,
int32_t
iCol
,
SColVal
*
pColVal
);
// int32_t tPutTSDBRow(uint8_t *p, TSDBROW *pRow);
int32_t
tsdbRowCmprFn
(
const
void
*
p1
,
const
void
*
p2
);
// SRowIter
void
t
RowIterInit
(
S
RowIter
*
pIter
,
TSDBROW
*
pRow
,
STSchema
*
pTSchema
);
SColVal
*
t
RowIterNext
(
S
RowIter
*
pIter
);
// S
TSDB
RowIter
void
t
sdbRowIterInit
(
STSDB
RowIter
*
pIter
,
TSDBROW
*
pRow
,
STSchema
*
pTSchema
);
SColVal
*
t
sdbRowIterNext
(
STSDB
RowIter
*
pIter
);
// SRowMerger
int32_t
tRowMergerInit2
(
SRowMerger
*
pMerger
,
STSchema
*
pResTSchema
,
TSDBROW
*
pRow
,
STSchema
*
pTSchema
);
int32_t
tRowMergerAdd
(
SRowMerger
*
pMerger
,
TSDBROW
*
pRow
,
STSchema
*
pTSchema
);
...
...
@@ -562,7 +562,7 @@ struct SDFileSet {
SSttFile
*
aSttF
[
TSDB_MAX_STT_TRIGGER
];
};
struct
SRowIter
{
struct
S
TSDB
RowIter
{
TSDBROW
*
pRow
;
STSchema
*
pTSchema
;
SColVal
colVal
;
...
...
source/dnode/vnode/src/tsdb/tsdbCommit.c
浏览文件 @
ba621647
...
...
@@ -341,7 +341,7 @@ int32_t tsdbUpdateTableSchema(SMeta *pMeta, int64_t suid, int64_t uid, SSkmInfo
pSkmInfo
->
suid
=
suid
;
pSkmInfo
->
uid
=
uid
;
t
TSchemaDestroy
(
pSkmInfo
->
pTSchema
);
t
DestroyTSchema
(
pSkmInfo
->
pTSchema
);
code
=
metaGetTbTSchemaEx
(
pMeta
,
suid
,
uid
,
-
1
,
&
pSkmInfo
->
pTSchema
);
TSDB_CHECK_CODE
(
code
,
lino
,
_exit
);
...
...
@@ -365,7 +365,7 @@ static int32_t tsdbCommitterUpdateRowSchema(SCommitter *pCommitter, int64_t suid
pCommitter
->
skmRow
.
suid
=
suid
;
pCommitter
->
skmRow
.
uid
=
uid
;
t
TSchemaDestroy
(
pCommitter
->
skmRow
.
pTSchema
);
t
DestroyTSchema
(
pCommitter
->
skmRow
.
pTSchema
);
code
=
metaGetTbTSchemaEx
(
pCommitter
->
pTsdb
->
pVnode
->
pMeta
,
suid
,
uid
,
sver
,
&
pCommitter
->
skmRow
.
pTSchema
);
TSDB_CHECK_CODE
(
code
,
lino
,
_exit
);
...
...
@@ -498,7 +498,7 @@ static int32_t tsdbCommitFileDataStart(SCommitter *pCommitter) {
#if 0
ASSERT(pCommitter->minKey <= pCommitter->nextKey && pCommitter->maxKey >= pCommitter->nextKey);
#endif
pCommitter
->
nextKey
=
TSKEY_MAX
;
// Reader
...
...
@@ -623,7 +623,8 @@ int32_t tsdbWriteDataBlock(SDataFWriter *pWriter, SBlockData *pBlockData, SMapDa
_exit:
if
(
code
)
{
tsdbError
(
"vgId:%d, %s failed at line %d since %s"
,
TD_VID
(
pWriter
->
pTsdb
->
pVnode
),
__func__
,
lino
,
tstrerror
(
code
));
tsdbError
(
"vgId:%d, %s failed at line %d since %s"
,
TD_VID
(
pWriter
->
pTsdb
->
pVnode
),
__func__
,
lino
,
tstrerror
(
code
));
}
return
code
;
}
...
...
@@ -666,7 +667,8 @@ int32_t tsdbWriteSttBlock(SDataFWriter *pWriter, SBlockData *pBlockData, SArray
_exit:
if
(
code
)
{
tsdbError
(
"vgId:%d, %s failed at line %d since %s"
,
TD_VID
(
pWriter
->
pTsdb
->
pVnode
),
__func__
,
lino
,
tstrerror
(
code
));
tsdbError
(
"vgId:%d, %s failed at line %d since %s"
,
TD_VID
(
pWriter
->
pTsdb
->
pVnode
),
__func__
,
lino
,
tstrerror
(
code
));
}
return
code
;
}
...
...
@@ -706,7 +708,8 @@ static int32_t tsdbCommitSttBlk(SDataFWriter *pWriter, SDiskDataBuilder *pBuilde
_exit:
if
(
code
)
{
tsdbError
(
"vgId:%d, %s failed at line %d since %s"
,
TD_VID
(
pWriter
->
pTsdb
->
pVnode
),
__func__
,
lino
,
tstrerror
(
code
));
tsdbError
(
"vgId:%d, %s failed at line %d since %s"
,
TD_VID
(
pWriter
->
pTsdb
->
pVnode
),
__func__
,
lino
,
tstrerror
(
code
));
}
return
code
;
}
...
...
@@ -919,8 +922,8 @@ static void tsdbCommitDataEnd(SCommitter *pCommitter) {
#else
tBlockDataDestroy
(
&
pCommitter
->
dWriter
.
bDatal
,
1
);
#endif
t
TSchemaDestroy
(
pCommitter
->
skmTable
.
pTSchema
);
t
TSchemaDestroy
(
pCommitter
->
skmRow
.
pTSchema
);
t
DestroyTSchema
(
pCommitter
->
skmTable
.
pTSchema
);
t
DestroyTSchema
(
pCommitter
->
skmRow
.
pTSchema
);
}
static
int32_t
tsdbCommitData
(
SCommitter
*
pCommitter
)
{
...
...
source/dnode/vnode/src/tsdb/tsdbDiskData.c
浏览文件 @
ba621647
...
...
@@ -595,21 +595,21 @@ int32_t tDiskDataAddRow(SDiskDataBuilder *pBuilder, TSDBROW *pRow, STSchema *pTS
if
(
pBuilder
->
bi
.
minKey
>
kRow
.
ts
)
pBuilder
->
bi
.
minKey
=
kRow
.
ts
;
if
(
pBuilder
->
bi
.
maxKey
<
kRow
.
ts
)
pBuilder
->
bi
.
maxKey
=
kRow
.
ts
;
SRowIter
iter
=
{
0
};
tRowIterInit
(
&
iter
,
pRow
,
pTSchema
);
S
TSDB
RowIter
iter
=
{
0
};
t
sdb
RowIterInit
(
&
iter
,
pRow
,
pTSchema
);
SColVal
*
pColVal
=
tRowIterNext
(
&
iter
);
SColVal
*
pColVal
=
t
sdb
RowIterNext
(
&
iter
);
for
(
int32_t
iBuilder
=
0
;
iBuilder
<
pBuilder
->
nBuilder
;
iBuilder
++
)
{
SDiskColBuilder
*
pDCBuilder
=
(
SDiskColBuilder
*
)
taosArrayGet
(
pBuilder
->
aBuilder
,
iBuilder
);
while
(
pColVal
&&
pColVal
->
cid
<
pDCBuilder
->
cid
)
{
pColVal
=
tRowIterNext
(
&
iter
);
pColVal
=
t
sdb
RowIterNext
(
&
iter
);
}
if
(
pColVal
&&
pColVal
->
cid
==
pDCBuilder
->
cid
)
{
code
=
tDiskColAddVal
(
pDCBuilder
,
pColVal
);
if
(
code
)
return
code
;
pColVal
=
tRowIterNext
(
&
iter
);
pColVal
=
t
sdb
RowIterNext
(
&
iter
);
}
else
{
code
=
tDiskColAddVal
(
pDCBuilder
,
&
COL_VAL_NONE
(
pDCBuilder
->
cid
,
pDCBuilder
->
type
));
if
(
code
)
return
code
;
...
...
source/dnode/vnode/src/tsdb/tsdbSnapshot.c
浏览文件 @
ba621647
...
...
@@ -555,7 +555,7 @@ int32_t tsdbSnapReaderClose(STsdbSnapReader** ppReader) {
}
tBlockDataDestroy
(
&
pReader
->
bData
,
1
);
t
TSchemaDestroy
(
pReader
->
skmTable
.
pTSchema
);
t
DestroyTSchema
(
pReader
->
skmTable
.
pTSchema
);
// del
if
(
pReader
->
pDelFReader
)
tsdbDelFReaderClose
(
&
pReader
->
pDelFReader
);
...
...
@@ -1416,7 +1416,7 @@ int32_t tsdbSnapWriterClose(STsdbSnapWriter** ppWriter, int8_t rollback) {
taosArrayDestroy
(
pWriter
->
dReader
.
aBlockIdx
);
tBlockDataDestroy
(
&
pWriter
->
bData
,
1
);
t
TSchemaDestroy
(
pWriter
->
skmTable
.
pTSchema
);
t
DestroyTSchema
(
pWriter
->
skmTable
.
pTSchema
);
for
(
int32_t
iBuf
=
0
;
iBuf
<
sizeof
(
pWriter
->
aBuf
)
/
sizeof
(
uint8_t
*
);
iBuf
++
)
{
tFree
(
pWriter
->
aBuf
[
iBuf
]);
...
...
source/dnode/vnode/src/tsdb/tsdbUtil.c
浏览文件 @
ba621647
...
...
@@ -579,8 +579,8 @@ int32_t tsdbRowCmprFn(const void *p1, const void *p2) {
return
tsdbKeyCmprFn
(
&
TSDBROW_KEY
((
TSDBROW
*
)
p1
),
&
TSDBROW_KEY
((
TSDBROW
*
)
p2
));
}
// SRowIter ======================================================
void
t
RowIterInit
(
S
RowIter
*
pIter
,
TSDBROW
*
pRow
,
STSchema
*
pTSchema
)
{
// S
TSDB
RowIter ======================================================
void
t
sdbRowIterInit
(
STSDB
RowIter
*
pIter
,
TSDBROW
*
pRow
,
STSchema
*
pTSchema
)
{
pIter
->
pRow
=
pRow
;
if
(
pRow
->
type
==
0
)
{
ASSERT
(
pTSchema
);
...
...
@@ -594,7 +594,7 @@ void tRowIterInit(SRowIter *pIter, TSDBROW *pRow, STSchema *pTSchema) {
}
}
SColVal
*
t
RowIterNext
(
S
RowIter
*
pIter
)
{
SColVal
*
t
sdbRowIterNext
(
STSDB
RowIter
*
pIter
)
{
if
(
pIter
->
pRow
->
type
==
0
)
{
if
(
pIter
->
i
<
pIter
->
pTSchema
->
numOfCols
)
{
tTSRowGetVal
(
pIter
->
pRow
->
pTSRow
,
pIter
->
pTSchema
,
pIter
->
i
,
&
pIter
->
colVal
);
...
...
@@ -1084,11 +1084,11 @@ static int32_t tBlockDataAppendTPRow(SBlockData *pBlockData, STSRow *pRow, STSch
cv
.
flag
=
CV_FLAG_VALUE
;
if
(
IS_VAR_DATA_TYPE
(
pTColumn
->
type
))
{
void
*
pData
=
(
char
*
)
pRow
+
*
(
int32_t
*
)(
pRow
->
data
+
pTColumn
->
offset
-
sizeof
(
TSKEY
)
);
void
*
pData
=
(
char
*
)
pRow
+
*
(
int32_t
*
)(
pRow
->
data
+
pTColumn
->
offset
);
cv
.
value
.
nData
=
varDataLen
(
pData
);
cv
.
value
.
pData
=
varDataVal
(
pData
);
}
else
{
memcpy
(
&
cv
.
value
.
val
,
pRow
->
data
+
pTColumn
->
offset
-
sizeof
(
TSKEY
)
,
pTColumn
->
bytes
);
memcpy
(
&
cv
.
value
.
val
,
pRow
->
data
+
pTColumn
->
offset
,
pTColumn
->
bytes
);
}
code
=
tColDataAppendValue
(
pColData
,
&
cv
);
...
...
@@ -1106,11 +1106,11 @@ static int32_t tBlockDataAppendTPRow(SBlockData *pBlockData, STSRow *pRow, STSch
cv
.
flag
=
CV_FLAG_VALUE
;
if
(
IS_VAR_DATA_TYPE
(
pTColumn
->
type
))
{
void
*
pData
=
(
char
*
)
pRow
+
*
(
int32_t
*
)(
pRow
->
data
+
pTColumn
->
offset
-
sizeof
(
TSKEY
)
);
void
*
pData
=
(
char
*
)
pRow
+
*
(
int32_t
*
)(
pRow
->
data
+
pTColumn
->
offset
);
cv
.
value
.
nData
=
varDataLen
(
pData
);
cv
.
value
.
pData
=
varDataVal
(
pData
);
}
else
{
memcpy
(
&
cv
.
value
.
val
,
pRow
->
data
+
pTColumn
->
offset
-
sizeof
(
TSKEY
)
,
pTColumn
->
bytes
);
memcpy
(
&
cv
.
value
.
val
,
pRow
->
data
+
pTColumn
->
offset
,
pTColumn
->
bytes
);
}
code
=
tColDataAppendValue
(
pColData
,
&
cv
);
...
...
source/libs/parser/src/parInsertUtil.c
浏览文件 @
ba621647
...
...
@@ -139,8 +139,8 @@ void insSetBoundColumnInfo(SParsedDataColInfo* pColList, SSchema* pSchema, col_i
if
(
i
>
0
)
{
pColList
->
cols
[
i
].
offset
=
pColList
->
cols
[
i
-
1
].
offset
+
pSchema
[
i
-
1
].
bytes
;
pColList
->
cols
[
i
].
toffset
=
pColList
->
flen
;
pColList
->
flen
+=
TYPE_BYTES
[
type
];
}
pColList
->
flen
+=
TYPE_BYTES
[
type
];
switch
(
type
)
{
case
TSDB_DATA_TYPE_BINARY
:
pColList
->
allNullLen
+=
(
VARSTR_HEADER_SIZE
+
CHAR_BYTES
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录