Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
2f0b5416
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1193
Star
22018
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看板
提交
2f0b5416
编写于
12月 09, 2021
作者:
C
Cary Xu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[TS-854]<fix>:generate final row from origin
上级
7745ed78
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
46 addition
and
45 deletion
+46
-45
src/client/src/tscParseInsert.c
src/client/src/tscParseInsert.c
+40
-20
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+5
-12
src/common/inc/tglobal.h
src/common/inc/tglobal.h
+0
-1
src/common/src/tglobal.c
src/common/src/tglobal.c
+0
-11
src/util/inc/tconfig.h
src/util/inc/tconfig.h
+1
-1
未找到文件。
src/client/src/tscParseInsert.c
浏览文件 @
2f0b5416
...
...
@@ -44,12 +44,6 @@ static int32_t parseBoundColumns(SInsertStatementParam *pInsertParam, SParsedDat
int
initMemRowBuilder
(
SMemRowBuilder
*
pBuilder
,
uint32_t
nRows
,
uint32_t
nCols
,
uint32_t
nBoundCols
,
int32_t
allNullLen
)
{
ASSERT
(
nRows
>=
0
&&
nCols
>
0
&&
(
nBoundCols
<=
nCols
));
if
(
tsForceDataRow
)
{
pBuilder
->
memRowType
=
SMEM_ROW_DATA
;
return
TSDB_CODE_SUCCESS
;
}
if
(
nRows
>
0
)
{
// already init(bind multiple rows by single column)
if
(
pBuilder
->
compareStat
==
ROW_COMPARE_NEED
&&
(
pBuilder
->
rowInfo
!=
NULL
))
{
...
...
@@ -452,13 +446,13 @@ int32_t tsCheckTimestamp(STableDataBlocks *pDataBlocks, const char *start) {
return
TSDB_CODE_SUCCESS
;
}
int
tsParseOneRow
(
char
**
str
,
STableDataBlocks
*
pDataBlocks
,
int16_t
timePrec
,
int32_t
*
len
,
char
*
tmpTokenBuf
,
SInsertStatementParam
*
pInsertParam
)
{
int
tsParseOneRow
(
char
**
str
,
STableDataBlocks
*
pDataBlocks
,
int16_t
timePrec
,
bool
*
isConverted
,
int32_t
rowSize
,
char
*
tmpTokenBuf
,
SInsertStatementParam
*
pInsertParam
)
{
int32_t
tsc_index
=
0
;
SStrToken
sToken
=
{
0
};
char
*
row
=
pDataBlocks
->
pData
+
pDataBlocks
->
size
;
// skip the SSubmitBlk header
char
*
row
=
pDataBlocks
->
pData
+
((
*
isConverted
)
?
(
pDataBlocks
->
size
-
rowSize
)
:
pDataBlocks
->
size
);
// skip the SSubmitBlk header
SParsedDataColInfo
*
spd
=
&
pDataBlocks
->
boundColumnInfo
;
STableMeta
*
pTableMeta
=
pDataBlocks
->
pTableMeta
;
SSchema
*
schema
=
tscGetTableSchema
(
pTableMeta
);
...
...
@@ -467,6 +461,7 @@ int tsParseOneRow(char **str, STableDataBlocks *pDataBlocks, int16_t timePrec, i
int32_t
kvLen
=
pBuilder
->
kvRowInitLen
;
bool
isParseBindParam
=
false
;
*
isConverted
=
false
;
initSMemRow
(
row
,
pBuilder
->
memRowType
,
pDataBlocks
,
spd
->
numOfBound
);
// 1. set the parsed value from sql string
...
...
@@ -571,9 +566,15 @@ int tsParseOneRow(char **str, STableDataBlocks *pDataBlocks, int16_t timePrec, i
}
}
}
// 4. perform the convert
if
(
isNeedConvertRow
(
row
))
{
convertSMemRow
(
row
+
rowSize
,
row
,
pDataBlocks
);
*
isConverted
=
true
;
}
}
*
len
=
getExtendedRowSize
(
pDataBlocks
);
//
*len = getExtendedRowSize(pDataBlocks);
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -631,13 +632,15 @@ int32_t tsParseValues(char **str, STableDataBlocks *pDataBlock, int maxRows, SIn
pDataBlock
->
boundColumnInfo
.
allNullLen
)))
{
return
code
;
}
bool
isConverted
=
false
;
while
(
1
)
{
tsc_index
=
0
;
sToken
=
tStrGetToken
(
*
str
,
&
tsc_index
,
false
);
if
(
sToken
.
n
==
0
||
sToken
.
type
!=
TK_LP
)
break
;
*
str
+=
tsc_index
;
if
((
*
numOfRows
)
>=
maxRows
||
pDataBlock
->
size
+
extendedRowSize
>=
pDataBlock
->
nAllocSize
)
{
// allocate 1 more row size to facilitate the SDataRow/SKVRow convert
if
((
*
numOfRows
+
1
)
>=
maxRows
||
pDataBlock
->
size
+
extendedRowSize
>=
pDataBlock
->
nAllocSize
)
{
int32_t
tSize
;
code
=
tscAllocateMemIfNeed
(
pDataBlock
,
extendedRowSize
,
&
tSize
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
//TODO pass the correct error code to client
...
...
@@ -645,17 +648,18 @@ int32_t tsParseValues(char **str, STableDataBlocks *pDataBlock, int maxRows, SIn
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
ASSERT
(
tSize
>
=
maxRows
);
ASSERT
(
tSize
>
maxRows
);
// 1 more row allocated
maxRows
=
tSize
;
}
int32_t
len
=
0
;
code
=
tsParseOneRow
(
str
,
pDataBlock
,
precision
,
&
len
,
tmpTokenBuf
,
pInsertParam
);
// int32_t len = 0;
code
=
tsParseOneRow
(
str
,
pDataBlock
,
precision
,
&
isConverted
,
extendedRowSize
,
tmpTokenBuf
,
pInsertParam
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
// error message has been set in tsParseOneRow, return directly
return
TSDB_CODE_TSC_SQL_SYNTAX_ERROR
;
}
pDataBlock
->
size
+=
len
;
pDataBlock
->
size
+=
extendedRowSize
;
tsc_index
=
0
;
sToken
=
tStrGetToken
(
*
str
,
&
tsc_index
,
false
);
...
...
@@ -667,6 +671,10 @@ int32_t tsParseValues(char **str, STableDataBlocks *pDataBlock, int maxRows, SIn
(
*
numOfRows
)
++
;
}
if
(
isConverted
)
{
void
*
convertedSMemRow
=
pDataBlock
->
pData
+
pDataBlock
->
size
;
memcpy
(
convertedSMemRow
-
extendedRowSize
,
convertedSMemRow
,
extendedRowSize
);
}
if
((
*
numOfRows
)
<=
0
)
{
strcpy
(
pInsertParam
->
msg
,
"no any data points"
);
...
...
@@ -1728,13 +1736,19 @@ static void parseFileSendDataBlock(void *param, TAOS_RES *tres, int32_t numOfRow
goto
_error
;
}
tscAllocateMemIfNeed
(
pTableDataBlock
,
getExtendedRowSize
(
pTableDataBlock
),
&
maxRows
);
int32_t
extendedRowSize
=
getExtendedRowSize
(
pTableDataBlock
);
tscAllocateMemIfNeed
(
pTableDataBlock
,
extendedRowSize
,
&
maxRows
);
tokenBuf
=
calloc
(
1
,
TSDB_MAX_BYTES_PER_ROW
);
if
(
tokenBuf
==
NULL
)
{
code
=
TSDB_CODE_TSC_OUT_OF_MEMORY
;
goto
_error
;
}
--
maxRows
;
// 1 more row needed to facilitate the SDataRow/SKVRow convert
ASSERT
(
maxRows
>
0
);
bool
isConverted
=
false
;
while
((
readLen
=
tgetline
(
&
line
,
&
n
,
fp
))
!=
-
1
)
{
if
((
'\r'
==
line
[
readLen
-
1
])
||
(
'\n'
==
line
[
readLen
-
1
]))
{
line
[
--
readLen
]
=
0
;
...
...
@@ -1747,19 +1761,25 @@ static void parseFileSendDataBlock(void *param, TAOS_RES *tres, int32_t numOfRow
char
*
lineptr
=
line
;
strtolower
(
line
,
line
);
int32_t
len
=
0
;
code
=
tsParseOneRow
(
&
lineptr
,
pTableDataBlock
,
tinfo
.
precision
,
&
len
,
tokenBuf
,
pInsertParam
);
// int32_t len = 0;
code
=
tsParseOneRow
(
&
lineptr
,
pTableDataBlock
,
tinfo
.
precision
,
&
isConverted
,
extendedRowSize
,
tokenBuf
,
pInsertParam
);
if
(
code
!=
TSDB_CODE_SUCCESS
||
pTableDataBlock
->
numOfParams
>
0
)
{
pSql
->
res
.
code
=
code
;
break
;
}
pTableDataBlock
->
size
+=
len
;
pTableDataBlock
->
size
+=
extendedRowSize
;
if
(
++
count
>=
maxRows
)
{
break
;
}
}
if
(
isConverted
)
{
void
*
convertedSMemRow
=
pTableDataBlock
->
pData
+
pTableDataBlock
->
size
;
memcpy
(
convertedSMemRow
-
extendedRowSize
,
convertedSMemRow
,
extendedRowSize
);
}
tfree
(
tokenBuf
);
tfree
(
line
);
...
...
src/client/src/tscUtil.c
浏览文件 @
2f0b5416
...
...
@@ -1944,19 +1944,12 @@ static int trimDataBlock(void* pDataBlock, STableDataBlocks* pTableDataBlock, SI
}
else
{
for
(
int32_t
i
=
0
;
i
<
numOfRows
;
++
i
)
{
char
*
payload
=
(
blkKeyTuple
+
i
)
->
payloadAddr
;
if
(
isNeedConvertRow
(
payload
))
{
convertSMemRow
(
pDataBlock
,
payload
,
pTableDataBlock
);
TDRowTLenT
rowTLen
=
memRowTLen
(
pDataBlock
);
pDataBlock
=
POINTER_SHIFT
(
pDataBlock
,
rowTLen
);
pBlock
->
dataLen
+=
rowTLen
;
}
else
{
TDRowTLenT
rowTLen
=
memRowTLen
(
payload
);
memcpy
(
pDataBlock
,
payload
,
rowTLen
);
pDataBlock
=
POINTER_SHIFT
(
pDataBlock
,
rowTLen
);
pBlock
->
dataLen
+=
rowTLen
;
}
}
}
int32_t
len
=
pBlock
->
dataLen
+
pBlock
->
schemaLen
;
pBlock
->
dataLen
=
htonl
(
pBlock
->
dataLen
);
...
...
src/common/inc/tglobal.h
浏览文件 @
2f0b5416
...
...
@@ -46,7 +46,6 @@ extern int32_t tsDnodeId;
extern
int
tsRpcTimer
;
extern
int
tsRpcMaxTime
;
extern
int
tsRpcForceTcp
;
// all commands go to tcp protocol if this is enabled
extern
int32_t
tsForceDataRow
;
// use SDataRow forcibly
extern
int32_t
tsMaxConnections
;
extern
int32_t
tsMaxShellConns
;
extern
int32_t
tsShellActivityTimer
;
...
...
src/common/src/tglobal.c
浏览文件 @
2f0b5416
...
...
@@ -54,7 +54,6 @@ int32_t tsDnodeId = 0;
int32_t
tsRpcTimer
=
300
;
int32_t
tsRpcMaxTime
=
600
;
// seconds;
int32_t
tsRpcForceTcp
=
0
;
// disable this, means query, show command use udp protocol as default
int32_t
tsForceDataRow
=
0
;
// disable this at default
int32_t
tsMaxShellConns
=
50000
;
int32_t
tsMaxConnections
=
5000
;
int32_t
tsShellActivityTimer
=
3
;
// second
...
...
@@ -692,16 +691,6 @@ static void doInitGlobalConfig(void) {
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"forceDataRow"
;
cfg
.
ptr
=
&
tsForceDataRow
;
cfg
.
valType
=
TAOS_CFG_VTYPE_INT32
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_CLIENT
|
TSDB_CFG_CTYPE_B_SHOW
;
cfg
.
minValue
=
0
;
cfg
.
maxValue
=
1
;
cfg
.
ptrLength
=
0
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"statusInterval"
;
cfg
.
ptr
=
&
tsStatusInterval
;
cfg
.
valType
=
TAOS_CFG_VTYPE_INT32
;
...
...
src/util/inc/tconfig.h
浏览文件 @
2f0b5416
...
...
@@ -20,7 +20,7 @@
extern
"C"
{
#endif
#define TSDB_CFG_MAX_NUM 12
3
#define TSDB_CFG_MAX_NUM 12
2
#define TSDB_CFG_PRINT_LEN 23
#define TSDB_CFG_OPTION_LEN 24
#define TSDB_CFG_VALUE_LEN 41
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录