Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
15d7abf4
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
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看板
提交
15d7abf4
编写于
4月 25, 2022
作者:
D
dapan1121
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
stmt query
上级
54dd9e3c
变更
13
隐藏空白更改
内联
并排
Showing
13 changed file
with
214 addition
and
94 deletion
+214
-94
include/client/taos.h
include/client/taos.h
+7
-7
include/libs/parser/parser.h
include/libs/parser/parser.h
+3
-3
include/libs/planner/planner.h
include/libs/planner/planner.h
+1
-1
source/client/inc/clientInt.h
source/client/inc/clientInt.h
+3
-0
source/client/inc/clientStmt.h
source/client/inc/clientStmt.h
+8
-4
source/client/src/clientImpl.c
source/client/src/clientImpl.c
+5
-0
source/client/src/clientMain.c
source/client/src/clientMain.c
+30
-4
source/client/src/clientStmt.c
source/client/src/clientStmt.c
+116
-42
source/libs/parser/src/parInsert.c
source/libs/parser/src/parInsert.c
+3
-3
source/libs/planner/src/planner.c
source/libs/planner/src/planner.c
+13
-7
source/libs/planner/test/planStmtTest.cpp
source/libs/planner/test/planStmtTest.cpp
+2
-2
source/libs/scalar/src/filter.c
source/libs/scalar/src/filter.c
+2
-1
tests/script/api/batchprepare.c
tests/script/api/batchprepare.c
+21
-20
未找到文件。
include/client/taos.h
浏览文件 @
15d7abf4
...
...
@@ -92,14 +92,14 @@ typedef struct taosField {
typedef
void
(
*
__taos_async_fn_t
)(
void
*
param
,
TAOS_RES
*
,
int
code
);
typedef
struct
TAOS_
BIND_v2
{
typedef
struct
TAOS_
MULTI_BIND
{
int
buffer_type
;
void
*
buffer
;
int32_t
buffer_length
;
uintptr_t
buffer_length
;
int32_t
*
length
;
char
*
is_null
;
int
num
;
}
TAOS_
BIND_v2
;
}
TAOS_
MULTI_BIND
;
typedef
enum
{
SET_CONF_RET_SUCC
=
0
,
...
...
@@ -130,16 +130,16 @@ const char *taos_data_type(int type);
DLL_EXPORT
TAOS_STMT
*
taos_stmt_init
(
TAOS
*
taos
);
DLL_EXPORT
int
taos_stmt_prepare
(
TAOS_STMT
*
stmt
,
const
char
*
sql
,
unsigned
long
length
);
DLL_EXPORT
int
taos_stmt_set_tbname_tags
(
TAOS_STMT
*
stmt
,
const
char
*
name
,
TAOS_
BIND_v2
*
tags
);
DLL_EXPORT
int
taos_stmt_set_tbname_tags
(
TAOS_STMT
*
stmt
,
const
char
*
name
,
TAOS_
MULTI_BIND
*
tags
);
DLL_EXPORT
int
taos_stmt_set_tbname
(
TAOS_STMT
*
stmt
,
const
char
*
name
);
DLL_EXPORT
int
taos_stmt_set_sub_tbname
(
TAOS_STMT
*
stmt
,
const
char
*
name
);
DLL_EXPORT
int
taos_stmt_is_insert
(
TAOS_STMT
*
stmt
,
int
*
insert
);
DLL_EXPORT
int
taos_stmt_num_params
(
TAOS_STMT
*
stmt
,
int
*
nums
);
DLL_EXPORT
int
taos_stmt_get_param
(
TAOS_STMT
*
stmt
,
int
idx
,
int
*
type
,
int
*
bytes
);
DLL_EXPORT
int
taos_stmt_bind_param
(
TAOS_STMT
*
stmt
,
TAOS_
BIND_v2
*
bind
);
DLL_EXPORT
int
taos_stmt_bind_param_batch
(
TAOS_STMT
*
stmt
,
TAOS_
BIND_v2
*
bind
);
DLL_EXPORT
int
taos_stmt_bind_single_param_batch
(
TAOS_STMT
*
stmt
,
TAOS_
BIND_v2
*
bind
,
int
colIdx
);
DLL_EXPORT
int
taos_stmt_bind_param
(
TAOS_STMT
*
stmt
,
TAOS_
MULTI_BIND
*
bind
);
DLL_EXPORT
int
taos_stmt_bind_param_batch
(
TAOS_STMT
*
stmt
,
TAOS_
MULTI_BIND
*
bind
);
DLL_EXPORT
int
taos_stmt_bind_single_param_batch
(
TAOS_STMT
*
stmt
,
TAOS_
MULTI_BIND
*
bind
,
int
colIdx
);
DLL_EXPORT
int
taos_stmt_add_batch
(
TAOS_STMT
*
stmt
);
DLL_EXPORT
int
taos_stmt_execute
(
TAOS_STMT
*
stmt
);
DLL_EXPORT
TAOS_RES
*
taos_stmt_use_result
(
TAOS_STMT
*
stmt
);
...
...
include/libs/parser/parser.h
浏览文件 @
15d7abf4
...
...
@@ -88,11 +88,11 @@ int32_t qCloneStmtDataBlock(void** pDst, void* pSrc);
void
qFreeStmtDataBlock
(
void
*
pDataBlock
);
int32_t
qRebuildStmtDataBlock
(
void
**
pDst
,
void
*
pSrc
);
void
qDestroyStmtDataBlock
(
void
*
pBlock
);
int32_t
qBindStmtColsValue
(
void
*
pBlock
,
TAOS_
BIND_v2
*
bind
,
char
*
msgBuf
,
int32_t
msgBufLen
);
int32_t
qBindStmtSingleColValue
(
void
*
pBlock
,
TAOS_
BIND_v2
*
bind
,
char
*
msgBuf
,
int32_t
msgBufLen
,
int32_t
colIdx
,
int32_t
rowNum
);
int32_t
qBindStmtColsValue
(
void
*
pBlock
,
TAOS_
MULTI_BIND
*
bind
,
char
*
msgBuf
,
int32_t
msgBufLen
);
int32_t
qBindStmtSingleColValue
(
void
*
pBlock
,
TAOS_
MULTI_BIND
*
bind
,
char
*
msgBuf
,
int32_t
msgBufLen
,
int32_t
colIdx
,
int32_t
rowNum
);
int32_t
qBuildStmtColFields
(
void
*
pDataBlock
,
int32_t
*
fieldNum
,
TAOS_FIELD
**
fields
);
int32_t
qBuildStmtTagFields
(
void
*
pBlock
,
void
*
boundTags
,
int32_t
*
fieldNum
,
TAOS_FIELD
**
fields
);
int32_t
qBindStmtTagsValue
(
void
*
pBlock
,
void
*
boundTags
,
int64_t
suid
,
SName
*
pName
,
TAOS_
BIND_v2
*
bind
,
char
*
msgBuf
,
int32_t
msgBufLen
);
int32_t
qBindStmtTagsValue
(
void
*
pBlock
,
void
*
boundTags
,
int64_t
suid
,
SName
*
pName
,
TAOS_
MULTI_BIND
*
bind
,
char
*
msgBuf
,
int32_t
msgBufLen
);
void
destroyBoundColumnInfo
(
void
*
pBoundInfo
);
int32_t
qCreateSName
(
SName
*
pName
,
const
char
*
pTableName
,
int32_t
acctId
,
char
*
dbName
,
char
*
msgBuf
,
int32_t
msgBufLen
);
...
...
include/libs/planner/planner.h
浏览文件 @
15d7abf4
...
...
@@ -50,7 +50,7 @@ int32_t qCreateQueryPlan(SPlanContext* pCxt, SQueryPlan** pPlan, SArray* pExecNo
// @pSource one execution location of this group of datasource subplans
int32_t
qSetSubplanExecutionNode
(
SSubplan
*
pSubplan
,
int32_t
groupId
,
SDownstreamSourceNode
*
pSource
);
int32_t
qStmtBindParam
(
SQueryPlan
*
pPlan
,
TAOS_
BIND_v2
*
pParams
);
int32_t
qStmtBindParam
(
SQueryPlan
*
pPlan
,
TAOS_
MULTI_BIND
*
pParams
,
int32_t
colIdx
);
// Convert to subplan to string for the scheduler to send to the executor
int32_t
qSubPlanToString
(
const
SSubplan
*
pSubplan
,
char
**
pStr
,
int32_t
*
pLen
);
...
...
source/client/inc/clientInt.h
浏览文件 @
15d7abf4
...
...
@@ -306,6 +306,9 @@ int hbAddConnInfo(SAppHbMgr* pAppHbMgr, SClientHbKey connKey, void* key, void* v
void
hbMgrInitMqHbRspHandle
();
SRequestObj
*
launchQueryImpl
(
SRequestObj
*
pRequest
,
SQuery
*
pQuery
,
int32_t
code
,
bool
keepQuery
);
int32_t
getQueryPlan
(
SRequestObj
*
pRequest
,
SQuery
*
pQuery
,
SArray
**
pNodeList
);
int32_t
scheduleQuery
(
SRequestObj
*
pRequest
,
SQueryPlan
*
pDag
,
SArray
*
pNodeList
);
#ifdef __cplusplus
}
...
...
source/client/inc/clientStmt.h
浏览文件 @
15d7abf4
...
...
@@ -34,8 +34,7 @@ typedef enum {
STMT_PREPARE
,
STMT_SETTBNAME
,
STMT_SETTAGS
,
STMT_FETCH_TAG_FIELDS
,
STMT_FETCH_COL_FIELDS
,
STMT_FETCH_FIELDS
,
STMT_BIND
,
STMT_BIND_COL
,
STMT_ADD_BATCH
,
...
...
@@ -75,6 +74,8 @@ typedef struct SStmtSQLInfo {
SQuery
*
pQuery
;
char
*
sqlStr
;
int32_t
sqlLen
;
SArray
*
nodeList
;
SQueryPlan
*
pQueryPlan
;
}
SStmtSQLInfo
;
typedef
struct
STscStmt
{
...
...
@@ -87,6 +88,8 @@ typedef struct STscStmt {
SStmtBindInfo
bInfo
;
}
STscStmt
;
#define STMT_STATUS_NE(S) (pStmt->sql.status != STMT_##S)
#define STMT_STATUS_EQ(S) (pStmt->sql.status == STMT_##S)
#define STMT_ERR_RET(c) do { int32_t _code = c; if (_code != TSDB_CODE_SUCCESS) { terrno = _code; return _code; } } while (0)
#define STMT_RET(c) do { int32_t _code = c; if (_code != TSDB_CODE_SUCCESS) { terrno = _code; } return _code; } while (0)
...
...
@@ -97,14 +100,15 @@ int stmtClose(TAOS_STMT *stmt);
int
stmtExec
(
TAOS_STMT
*
stmt
);
const
char
*
stmtErrstr
(
TAOS_STMT
*
stmt
);
int
stmtAffectedRows
(
TAOS_STMT
*
stmt
);
int
stmtAffectedRowsOnce
(
TAOS_STMT
*
stmt
);
int
stmtPrepare
(
TAOS_STMT
*
stmt
,
const
char
*
sql
,
unsigned
long
length
);
int
stmtSetTbName
(
TAOS_STMT
*
stmt
,
const
char
*
tbName
);
int
stmtSetTbTags
(
TAOS_STMT
*
stmt
,
TAOS_
BIND_v2
*
tags
);
int
stmtSetTbTags
(
TAOS_STMT
*
stmt
,
TAOS_
MULTI_BIND
*
tags
);
int
stmtIsInsert
(
TAOS_STMT
*
stmt
,
int
*
insert
);
int
stmtGetParamNum
(
TAOS_STMT
*
stmt
,
int
*
nums
);
int
stmtAddBatch
(
TAOS_STMT
*
stmt
);
TAOS_RES
*
stmtUseResult
(
TAOS_STMT
*
stmt
);
int
stmtBindBatch
(
TAOS_STMT
*
stmt
,
TAOS_
BIND_v2
*
bind
,
int32_t
colIdx
);
int
stmtBindBatch
(
TAOS_STMT
*
stmt
,
TAOS_
MULTI_BIND
*
bind
,
int32_t
colIdx
);
#ifdef __cplusplus
...
...
source/client/src/clientImpl.c
浏览文件 @
15d7abf4
...
...
@@ -306,6 +306,11 @@ int32_t scheduleQuery(SRequestObj* pRequest, SQueryPlan* pDag, SArray* pNodeList
return
pRequest
->
code
;
}
int32_t
getQueryPlan
(
SRequestObj
*
pRequest
,
SQuery
*
pQuery
,
SArray
**
pNodeList
)
{
*
pNodeList
=
taosArrayInit
(
4
,
sizeof
(
struct
SQueryNodeAddr
));
return
getPlan
(
pRequest
,
pQuery
,
&
pRequest
->
body
.
pDag
,
*
pNodeList
);
}
SRequestObj
*
launchQueryImpl
(
SRequestObj
*
pRequest
,
SQuery
*
pQuery
,
int32_t
code
,
bool
keepQuery
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
switch
(
pQuery
->
execMode
)
{
...
...
source/client/src/clientMain.c
浏览文件 @
15d7abf4
...
...
@@ -603,7 +603,7 @@ int taos_stmt_prepare(TAOS_STMT *stmt, const char *sql, unsigned long length) {
return
stmtPrepare
(
stmt
,
sql
,
length
);
}
int
taos_stmt_set_tbname_tags
(
TAOS_STMT
*
stmt
,
const
char
*
name
,
TAOS_
BIND_v2
*
tags
)
{
int
taos_stmt_set_tbname_tags
(
TAOS_STMT
*
stmt
,
const
char
*
name
,
TAOS_
MULTI_BIND
*
tags
)
{
if
(
stmt
==
NULL
||
name
==
NULL
)
{
tscError
(
"NULL parameter for %s"
,
__FUNCTION__
);
terrno
=
TSDB_CODE_INVALID_PARA
;
...
...
@@ -636,7 +636,7 @@ int taos_stmt_set_sub_tbname(TAOS_STMT *stmt, const char *name) {
return
taos_stmt_set_tbname
(
stmt
,
name
);
}
int
taos_stmt_bind_param
(
TAOS_STMT
*
stmt
,
TAOS_
BIND_v2
*
bind
)
{
int
taos_stmt_bind_param
(
TAOS_STMT
*
stmt
,
TAOS_
MULTI_BIND
*
bind
)
{
if
(
stmt
==
NULL
||
bind
==
NULL
)
{
tscError
(
"NULL parameter for %s"
,
__FUNCTION__
);
terrno
=
TSDB_CODE_INVALID_PARA
;
...
...
@@ -652,7 +652,7 @@ int taos_stmt_bind_param(TAOS_STMT *stmt, TAOS_BIND_v2 *bind) {
return
stmtBindBatch
(
stmt
,
bind
,
-
1
);
}
int
taos_stmt_bind_param_batch
(
TAOS_STMT
*
stmt
,
TAOS_
BIND_v2
*
bind
)
{
int
taos_stmt_bind_param_batch
(
TAOS_STMT
*
stmt
,
TAOS_
MULTI_BIND
*
bind
)
{
if
(
stmt
==
NULL
||
bind
==
NULL
)
{
tscError
(
"NULL parameter for %s"
,
__FUNCTION__
);
terrno
=
TSDB_CODE_INVALID_PARA
;
...
...
@@ -665,10 +665,18 @@ int taos_stmt_bind_param_batch(TAOS_STMT *stmt, TAOS_BIND_v2 *bind) {
return
terrno
;
}
int32_t
insert
=
0
;
stmtIsInsert
(
stmt
,
&
insert
);
if
(
0
==
insert
&&
bind
->
num
>
1
)
{
tscError
(
"only one row data allowed for query"
);
terrno
=
TSDB_CODE_INVALID_PARA
;
return
terrno
;
}
return
stmtBindBatch
(
stmt
,
bind
,
-
1
);
}
int
taos_stmt_bind_single_param_batch
(
TAOS_STMT
*
stmt
,
TAOS_
BIND_v2
*
bind
,
int
colIdx
)
{
int
taos_stmt_bind_single_param_batch
(
TAOS_STMT
*
stmt
,
TAOS_
MULTI_BIND
*
bind
,
int
colIdx
)
{
if
(
stmt
==
NULL
||
bind
==
NULL
)
{
tscError
(
"NULL parameter for %s"
,
__FUNCTION__
);
terrno
=
TSDB_CODE_INVALID_PARA
;
...
...
@@ -680,6 +688,14 @@ int taos_stmt_bind_single_param_batch(TAOS_STMT *stmt, TAOS_BIND_v2 *bind, int c
terrno
=
TSDB_CODE_INVALID_PARA
;
return
terrno
;
}
int32_t
insert
=
0
;
stmtIsInsert
(
stmt
,
&
insert
);
if
(
0
==
insert
&&
bind
->
num
>
1
)
{
tscError
(
"only one row data allowed for query"
);
terrno
=
TSDB_CODE_INVALID_PARA
;
return
terrno
;
}
return
stmtBindBatch
(
stmt
,
bind
,
colIdx
);
}
...
...
@@ -748,6 +764,16 @@ int taos_stmt_affected_rows(TAOS_STMT *stmt) {
return
stmtAffectedRows
(
stmt
);
}
int
taos_stmt_affected_rows_once
(
TAOS_STMT
*
stmt
)
{
if
(
stmt
==
NULL
)
{
tscError
(
"NULL parameter for %s"
,
__FUNCTION__
);
terrno
=
TSDB_CODE_INVALID_PARA
;
return
0
;
}
return
stmtAffectedRowsOnce
(
stmt
);
}
int
taos_stmt_close
(
TAOS_STMT
*
stmt
)
{
if
(
stmt
==
NULL
)
{
tscError
(
"NULL parameter for %s"
,
__FUNCTION__
);
...
...
source/client/src/clientStmt.c
浏览文件 @
15d7abf4
...
...
@@ -5,14 +5,51 @@
#include "tdef.h"
int32_t
stmtSwitchStatus
(
STscStmt
*
pStmt
,
STMT_STATUS
newStatus
)
{
int32_t
code
=
0
;
switch
(
newStatus
)
{
case
STMT_PREPARE
:
break
;
case
STMT_SETTBNAME
:
if
(
STMT_STATUS_NE
(
PREPARE
)
&&
STMT_STATUS_NE
(
ADD_BATCH
)
&&
STMT_STATUS_NE
(
EXECUTE
))
{
code
=
TSDB_CODE_TSC_STMT_API_ERROR
;
}
break
;
case
STMT_SETTAGS
:
if
(
STMT_STATUS_NE
(
SETTBNAME
))
{
code
=
TSDB_CODE_TSC_STMT_API_ERROR
;
}
break
;
case
STMT_FETCH_FIELDS
:
if
(
STMT_STATUS_EQ
(
INIT
))
{
code
=
TSDB_CODE_TSC_STMT_API_ERROR
;
}
break
;
case
STMT_BIND
:
if
(
STMT_STATUS_EQ
(
INIT
)
||
STMT_STATUS_EQ
(
BIND_COL
))
{
code
=
TSDB_CODE_TSC_STMT_API_ERROR
;
}
break
;
case
STMT_BIND_COL
:
if
(
STMT_STATUS_EQ
(
INIT
)
||
STMT_STATUS_EQ
(
BIND
))
{
code
=
TSDB_CODE_TSC_STMT_API_ERROR
;
}
break
;
case
STMT_ADD_BATCH
:
if
(
STMT_STATUS_NE
(
BIND
)
&&
STMT_STATUS_NE
(
BIND_COL
)
&&
STMT_STATUS_NE
(
FETCH_FIELDS
))
{
code
=
TSDB_CODE_TSC_STMT_API_ERROR
;
}
break
;
case
STMT_EXECUTE
:
if
(
STMT_STATUS_NE
(
ADD_BATCH
)
&&
STMT_STATUS_NE
(
FETCH_FIELDS
))
{
code
=
TSDB_CODE_TSC_STMT_API_ERROR
;
}
default:
code
=
TSDB_CODE_TSC_APP_ERROR
;
break
;
}
//STMT_ERR_RET(TSDB_CODE_TSC_STMT_API_ERROR
);
STMT_ERR_RET
(
code
);
pStmt
->
sql
.
status
=
newStatus
;
...
...
@@ -69,15 +106,10 @@ int32_t stmtCacheBlock(STscStmt *pStmt) {
return
TSDB_CODE_SUCCESS
;
}
uint64_t
uid
;
if
(
TSDB_CHILD_TABLE
==
pStmt
->
bInfo
.
tbType
)
{
uid
=
pStmt
->
bInfo
.
tbSuid
;
}
else
{
ASSERT
(
TSDB_NORMAL_TABLE
==
pStmt
->
bInfo
.
tbType
);
uid
=
pStmt
->
bInfo
.
tbUid
;
}
uint64_t
uid
=
pStmt
->
bInfo
.
tbUid
;
uint64_t
tuid
=
(
TSDB_CHILD_TABLE
==
pStmt
->
bInfo
.
tbType
)
?
pStmt
->
bInfo
.
tbSuid
:
uid
;
if
(
taosHashGet
(
pStmt
->
sql
.
pTableCache
,
&
uid
,
sizeof
(
uid
)))
{
if
(
taosHashGet
(
pStmt
->
sql
.
pTableCache
,
&
tuid
,
sizeof
(
t
uid
)))
{
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -91,7 +123,7 @@ int32_t stmtCacheBlock(STscStmt *pStmt) {
.
boundTags
=
pStmt
->
bInfo
.
boundTags
,
};
if
(
taosHashPut
(
pStmt
->
sql
.
pTableCache
,
&
uid
,
sizeof
(
uid
),
&
cache
,
sizeof
(
cache
)))
{
if
(
taosHashPut
(
pStmt
->
sql
.
pTableCache
,
&
tuid
,
sizeof
(
t
uid
),
&
cache
,
sizeof
(
cache
)))
{
return
TSDB_CODE_OUT_OF_MEMORY
;
}
...
...
@@ -149,9 +181,11 @@ int32_t stmtCleanBindInfo(STscStmt* pStmt) {
return
TSDB_CODE_SUCCESS
;
}
int32_t
stmtCleanExecInfo
(
STscStmt
*
pStmt
,
bool
keepTable
)
{
taos_free_result
(
pStmt
->
exec
.
pRequest
);
pStmt
->
exec
.
pRequest
=
NULL
;
int32_t
stmtCleanExecInfo
(
STscStmt
*
pStmt
,
bool
keepTable
,
bool
freeRequest
)
{
if
(
STMT_TYPE_QUERY
!=
pStmt
->
sql
.
type
||
freeRequest
)
{
taos_free_result
(
pStmt
->
exec
.
pRequest
);
pStmt
->
exec
.
pRequest
=
NULL
;
}
void
*
pIter
=
taosHashIterate
(
pStmt
->
exec
.
pBlockHash
,
NULL
);
while
(
pIter
)
{
...
...
@@ -186,7 +220,9 @@ int32_t stmtCleanExecInfo(STscStmt* pStmt, bool keepTable) {
int32_t
stmtCleanSQLInfo
(
STscStmt
*
pStmt
)
{
taosMemoryFree
(
pStmt
->
sql
.
sqlStr
);
qDestroyQuery
(
pStmt
->
sql
.
pQuery
);
qDestroyQueryPlan
(
pStmt
->
sql
.
pQueryPlan
);
taosArrayDestroy
(
pStmt
->
sql
.
nodeList
);
void
*
pIter
=
taosHashIterate
(
pStmt
->
sql
.
pTableCache
,
NULL
);
while
(
pIter
)
{
SStmtTableCache
*
pCache
=
(
SStmtTableCache
*
)
pIter
;
...
...
@@ -201,7 +237,7 @@ int32_t stmtCleanSQLInfo(STscStmt* pStmt) {
memset
(
&
pStmt
->
sql
,
0
,
sizeof
(
pStmt
->
sql
));
STMT_ERR_RET
(
stmtCleanExecInfo
(
pStmt
,
false
));
STMT_ERR_RET
(
stmtCleanExecInfo
(
pStmt
,
false
,
true
));
STMT_ERR_RET
(
stmtCleanBindInfo
(
pStmt
));
return
TSDB_CODE_SUCCESS
;
...
...
@@ -333,6 +369,13 @@ int stmtSetTbName(TAOS_STMT *stmt, const char *tbName) {
STMT_ERR_RET
(
stmtSwitchStatus
(
pStmt
,
STMT_SETTBNAME
));
int32_t
insert
=
0
;
stmtIsInsert
(
stmt
,
&
insert
);
if
(
0
==
insert
)
{
tscError
(
"set tb name not available for none insert statement"
);
STMT_ERR_RET
(
TSDB_CODE_TSC_STMT_API_ERROR
);
}
if
(
NULL
==
pStmt
->
exec
.
pRequest
)
{
STMT_ERR_RET
(
buildRequest
(
pStmt
->
taos
,
pStmt
->
sql
.
sqlStr
,
pStmt
->
sql
.
sqlLen
,
&
pStmt
->
exec
.
pRequest
));
}
...
...
@@ -349,7 +392,7 @@ int stmtSetTbName(TAOS_STMT *stmt, const char *tbName) {
return
TSDB_CODE_SUCCESS
;
}
int
stmtSetTbTags
(
TAOS_STMT
*
stmt
,
TAOS_
BIND_v2
*
tags
)
{
int
stmtSetTbTags
(
TAOS_STMT
*
stmt
,
TAOS_
MULTI_BIND
*
tags
)
{
STscStmt
*
pStmt
=
(
STscStmt
*
)
stmt
;
STMT_ERR_RET
(
stmtSwitchStatus
(
pStmt
,
STMT_SETTAGS
));
...
...
@@ -370,15 +413,7 @@ int stmtSetTbTags(TAOS_STMT *stmt, TAOS_BIND_v2 *tags) {
}
int32_t
stmtFetchTagFields
(
TAOS_STMT
*
stmt
,
int32_t
*
fieldNum
,
TAOS_FIELD
**
fields
)
{
STscStmt
*
pStmt
=
(
STscStmt
*
)
stmt
;
STMT_ERR_RET
(
stmtSwitchStatus
(
pStmt
,
STMT_FETCH_TAG_FIELDS
));
if
(
pStmt
->
bInfo
.
needParse
)
{
STMT_ERR_RET
(
stmtParseSql
(
pStmt
));
}
int32_t
stmtFetchTagFields
(
STscStmt
*
pStmt
,
int32_t
*
fieldNum
,
TAOS_FIELD
**
fields
)
{
if
(
STMT_TYPE_QUERY
==
pStmt
->
sql
.
type
)
{
tscError
(
"invalid operation to get query tag fileds"
);
STMT_ERR_RET
(
TSDB_CODE_TSC_STMT_API_ERROR
);
...
...
@@ -395,15 +430,7 @@ int32_t stmtFetchTagFields(TAOS_STMT *stmt, int32_t *fieldNum, TAOS_FIELD** fiel
return
TSDB_CODE_SUCCESS
;
}
int32_t
stmtFetchColFields
(
TAOS_STMT
*
stmt
,
int32_t
*
fieldNum
,
TAOS_FIELD
**
fields
)
{
STscStmt
*
pStmt
=
(
STscStmt
*
)
stmt
;
STMT_ERR_RET
(
stmtSwitchStatus
(
pStmt
,
STMT_FETCH_COL_FIELDS
));
if
(
pStmt
->
bInfo
.
needParse
)
{
STMT_ERR_RET
(
stmtParseSql
(
pStmt
));
}
int32_t
stmtFetchColFields
(
STscStmt
*
pStmt
,
int32_t
*
fieldNum
,
TAOS_FIELD
**
fields
)
{
if
(
STMT_TYPE_QUERY
==
pStmt
->
sql
.
type
)
{
tscError
(
"invalid operation to get query column fileds"
);
STMT_ERR_RET
(
TSDB_CODE_TSC_STMT_API_ERROR
);
...
...
@@ -420,7 +447,7 @@ int32_t stmtFetchColFields(TAOS_STMT *stmt, int32_t *fieldNum, TAOS_FIELD** fiel
return
TSDB_CODE_SUCCESS
;
}
int
stmtBindBatch
(
TAOS_STMT
*
stmt
,
TAOS_
BIND_v2
*
bind
,
int32_t
colIdx
)
{
int
stmtBindBatch
(
TAOS_STMT
*
stmt
,
TAOS_
MULTI_BIND
*
bind
,
int32_t
colIdx
)
{
STscStmt
*
pStmt
=
(
STscStmt
*
)
stmt
;
STMT_ERR_RET
(
stmtSwitchStatus
(
pStmt
,
STMT_BIND
));
...
...
@@ -429,6 +456,11 @@ int stmtBindBatch(TAOS_STMT *stmt, TAOS_BIND_v2 *bind, int32_t colIdx) {
pStmt
->
bInfo
.
needParse
=
false
;
}
if
(
pStmt
->
exec
.
pRequest
&&
STMT_TYPE_QUERY
==
pStmt
->
sql
.
type
&&
pStmt
->
sql
.
runTimes
)
{
taos_free_result
(
pStmt
->
exec
.
pRequest
);
pStmt
->
exec
.
pRequest
=
NULL
;
}
if
(
NULL
==
pStmt
->
exec
.
pRequest
)
{
STMT_ERR_RET
(
buildRequest
(
pStmt
->
taos
,
pStmt
->
sql
.
sqlStr
,
pStmt
->
sql
.
sqlLen
,
&
pStmt
->
exec
.
pRequest
));
}
...
...
@@ -437,6 +469,16 @@ int stmtBindBatch(TAOS_STMT *stmt, TAOS_BIND_v2 *bind, int32_t colIdx) {
STMT_ERR_RET
(
stmtParseSql
(
pStmt
));
}
if
(
STMT_TYPE_QUERY
==
pStmt
->
sql
.
type
)
{
if
(
NULL
==
pStmt
->
sql
.
pQueryPlan
)
{
STMT_ERR_RET
(
getQueryPlan
(
pStmt
->
exec
.
pRequest
,
pStmt
->
sql
.
pQuery
,
&
pStmt
->
sql
.
nodeList
));
pStmt
->
sql
.
pQueryPlan
=
pStmt
->
exec
.
pRequest
->
body
.
pDag
;
pStmt
->
exec
.
pRequest
->
body
.
pDag
=
NULL
;
}
STMT_RET
(
qStmtBindParam
(
pStmt
->
sql
.
pQueryPlan
,
bind
,
colIdx
));
}
STableDataBlocks
**
pDataBlock
=
(
STableDataBlocks
**
)
taosHashGet
(
pStmt
->
exec
.
pBlockHash
,
(
const
char
*
)
&
pStmt
->
bInfo
.
tbUid
,
sizeof
(
pStmt
->
bInfo
.
tbUid
));
if
(
NULL
==
pDataBlock
)
{
tscError
(
"table uid %"
PRIx64
"not found in exec blockHash"
,
pStmt
->
bInfo
.
tbUid
);
...
...
@@ -480,10 +522,13 @@ int stmtExec(TAOS_STMT *stmt) {
STMT_ERR_RET
(
stmtSwitchStatus
(
pStmt
,
STMT_EXECUTE
));
STMT_ERR_RET
(
qBuildStmtOutput
(
pStmt
->
sql
.
pQuery
,
pStmt
->
exec
.
pVgHash
,
pStmt
->
exec
.
pBlockHash
));
launchQueryImpl
(
pStmt
->
exec
.
pRequest
,
pStmt
->
sql
.
pQuery
,
TSDB_CODE_SUCCESS
,
true
);
if
(
STMT_TYPE_QUERY
==
pStmt
->
sql
.
type
)
{
scheduleQuery
(
pStmt
->
exec
.
pRequest
,
pStmt
->
sql
.
pQueryPlan
,
pStmt
->
sql
.
nodeList
);
}
else
{
STMT_ERR_RET
(
qBuildStmtOutput
(
pStmt
->
sql
.
pQuery
,
pStmt
->
exec
.
pVgHash
,
pStmt
->
exec
.
pBlockHash
));
launchQueryImpl
(
pStmt
->
exec
.
pRequest
,
pStmt
->
sql
.
pQuery
,
TSDB_CODE_SUCCESS
,
true
);
}
STMT_ERR_JRET
(
pStmt
->
exec
.
pRequest
->
code
);
pStmt
->
exec
.
affectedRows
=
taos_affected_rows
(
pStmt
->
exec
.
pRequest
);
...
...
@@ -491,7 +536,7 @@ int stmtExec(TAOS_STMT *stmt) {
_return:
stmtCleanExecInfo
(
pStmt
,
(
code
?
false
:
true
));
stmtCleanExecInfo
(
pStmt
,
(
code
?
false
:
true
)
,
false
);
++
pStmt
->
sql
.
runTimes
;
...
...
@@ -523,6 +568,10 @@ int stmtAffectedRows(TAOS_STMT *stmt) {
return
((
STscStmt
*
)
stmt
)
->
affectedRows
;
}
int
stmtAffectedRowsOnce
(
TAOS_STMT
*
stmt
)
{
return
((
STscStmt
*
)
stmt
)
->
exec
.
affectedRows
;
}
int
stmtIsInsert
(
TAOS_STMT
*
stmt
,
int
*
insert
)
{
STscStmt
*
pStmt
=
(
STscStmt
*
)
stmt
;
...
...
@@ -536,13 +585,38 @@ int stmtIsInsert(TAOS_STMT *stmt, int *insert) {
}
int
stmtGetParamNum
(
TAOS_STMT
*
stmt
,
int
*
nums
)
{
STMT_ERR_RET
(
stmtFetchColFields
(
stmt
,
nums
,
NULL
));
STscStmt
*
pStmt
=
(
STscStmt
*
)
stmt
;
STMT_ERR_RET
(
stmtSwitchStatus
(
pStmt
,
STMT_FETCH_FIELDS
));
if
(
pStmt
->
bInfo
.
needParse
)
{
STMT_ERR_RET
(
stmtParseSql
(
pStmt
));
}
if
(
STMT_TYPE_QUERY
==
pStmt
->
sql
.
type
)
{
if
(
NULL
==
pStmt
->
sql
.
pQueryPlan
)
{
STMT_ERR_RET
(
getQueryPlan
(
pStmt
->
exec
.
pRequest
,
pStmt
->
sql
.
pQuery
,
&
pStmt
->
sql
.
nodeList
));
pStmt
->
sql
.
pQueryPlan
=
pStmt
->
exec
.
pRequest
->
body
.
pDag
;
pStmt
->
exec
.
pRequest
->
body
.
pDag
=
NULL
;
}
*
nums
=
(
pStmt
->
sql
.
pQueryPlan
->
pPlaceholderValues
)
?
pStmt
->
sql
.
pQueryPlan
->
pPlaceholderValues
->
length
:
0
;
}
else
{
STMT_ERR_RET
(
stmtFetchColFields
(
stmt
,
nums
,
NULL
));
}
return
TSDB_CODE_SUCCESS
;
}
TAOS_RES
*
stmtUseResult
(
TAOS_STMT
*
stmt
)
{
return
NULL
;
STscStmt
*
pStmt
=
(
STscStmt
*
)
stmt
;
if
(
STMT_TYPE_QUERY
!=
pStmt
->
sql
.
type
)
{
tscError
(
"useResult only for query statement"
);
return
NULL
;
}
return
pStmt
->
exec
.
pRequest
;
}
...
...
source/libs/parser/src/parInsert.c
浏览文件 @
15d7abf4
...
...
@@ -1257,7 +1257,7 @@ int32_t qBuildStmtOutput(SQuery* pQuery, SHashObj* pVgHash, SHashObj* pBlockHash
return
TSDB_CODE_SUCCESS
;
}
int32_t
qBindStmtTagsValue
(
void
*
pBlock
,
void
*
boundTags
,
int64_t
suid
,
SName
*
pName
,
TAOS_
BIND_v2
*
bind
,
char
*
msgBuf
,
int32_t
msgBufLen
){
int32_t
qBindStmtTagsValue
(
void
*
pBlock
,
void
*
boundTags
,
int64_t
suid
,
SName
*
pName
,
TAOS_
MULTI_BIND
*
bind
,
char
*
msgBuf
,
int32_t
msgBufLen
){
STableDataBlocks
*
pDataBlock
=
(
STableDataBlocks
*
)
pBlock
;
SMsgBuf
pBuf
=
{.
buf
=
msgBuf
,
.
len
=
msgBufLen
};
SParsedDataColInfo
*
tags
=
(
SParsedDataColInfo
*
)
boundTags
;
...
...
@@ -1308,7 +1308,7 @@ int32_t qBindStmtTagsValue(void *pBlock, void *boundTags, int64_t suid, SName *p
}
int32_t
qBindStmtColsValue
(
void
*
pBlock
,
TAOS_
BIND_v2
*
bind
,
char
*
msgBuf
,
int32_t
msgBufLen
)
{
int32_t
qBindStmtColsValue
(
void
*
pBlock
,
TAOS_
MULTI_BIND
*
bind
,
char
*
msgBuf
,
int32_t
msgBufLen
)
{
STableDataBlocks
*
pDataBlock
=
(
STableDataBlocks
*
)
pBlock
;
SSchema
*
pSchema
=
getTableColumnSchema
(
pDataBlock
->
pTableMeta
);
int32_t
extendedRowSize
=
getExtendedRowSize
(
pDataBlock
);
...
...
@@ -1382,7 +1382,7 @@ int32_t qBindStmtColsValue(void *pBlock, TAOS_BIND_v2 *bind, char *msgBuf, int32
return
TSDB_CODE_SUCCESS
;
}
int32_t
qBindStmtSingleColValue
(
void
*
pBlock
,
TAOS_
BIND_v2
*
bind
,
char
*
msgBuf
,
int32_t
msgBufLen
,
int32_t
colIdx
,
int32_t
rowNum
)
{
int32_t
qBindStmtSingleColValue
(
void
*
pBlock
,
TAOS_
MULTI_BIND
*
bind
,
char
*
msgBuf
,
int32_t
msgBufLen
,
int32_t
colIdx
,
int32_t
rowNum
)
{
STableDataBlocks
*
pDataBlock
=
(
STableDataBlocks
*
)
pBlock
;
SSchema
*
pSchema
=
getTableColumnSchema
(
pDataBlock
->
pTableMeta
);
int32_t
extendedRowSize
=
getExtendedRowSize
(
pDataBlock
);
...
...
source/libs/planner/src/planner.c
浏览文件 @
15d7abf4
...
...
@@ -101,8 +101,8 @@ int32_t qSetSubplanExecutionNode(SSubplan* subplan, int32_t groupId, SDownstream
return
setSubplanExecutionNode
(
subplan
->
pNode
,
groupId
,
pSource
);
}
static
int32_t
setValueByBindParam
(
SValueNode
*
pVal
,
TAOS_
BIND_v2
*
pParam
)
{
if
(
1
==
*
(
pParam
->
is_null
))
{
static
int32_t
setValueByBindParam
(
SValueNode
*
pVal
,
TAOS_
MULTI_BIND
*
pParam
)
{
if
(
pParam
->
is_null
&&
1
==
*
(
pParam
->
is_null
))
{
pVal
->
node
.
resType
.
type
=
TSDB_DATA_TYPE_NULL
;
pVal
->
node
.
resType
.
bytes
=
tDataTypes
[
TSDB_DATA_TYPE_NULL
].
bytes
;
return
TSDB_CODE_SUCCESS
;
...
...
@@ -168,11 +168,17 @@ static int32_t setValueByBindParam(SValueNode* pVal, TAOS_BIND_v2* pParam) {
return
TSDB_CODE_SUCCESS
;
}
int32_t
qStmtBindParam
(
SQueryPlan
*
pPlan
,
TAOS_BIND_v2
*
pParams
)
{
int32_t
index
=
0
;
SNode
*
pNode
=
NULL
;
FOREACH
(
pNode
,
pPlan
->
pPlaceholderValues
)
{
setValueByBindParam
((
SValueNode
*
)
pNode
,
pParams
+
index
);
int32_t
qStmtBindParam
(
SQueryPlan
*
pPlan
,
TAOS_MULTI_BIND
*
pParams
,
int32_t
colIdx
)
{
if
(
colIdx
<
0
)
{
int32_t
index
=
0
;
SNode
*
pNode
=
NULL
;
FOREACH
(
pNode
,
pPlan
->
pPlaceholderValues
)
{
setValueByBindParam
((
SValueNode
*
)
pNode
,
pParams
+
index
);
++
index
;
}
}
else
{
setValueByBindParam
((
SValueNode
*
)
nodesListGetNode
(
pPlan
->
pPlaceholderValues
,
colIdx
),
pParams
);
}
return
TSDB_CODE_SUCCESS
;
}
...
...
source/libs/planner/test/planStmtTest.cpp
浏览文件 @
15d7abf4
...
...
@@ -26,7 +26,7 @@ public:
}
void
bindParam
(
int32_t
val
)
{
TAOS_
BIND_v2
*
pBind
=
pBindParams_
+
paramNo_
++
;
TAOS_
MULTI_BIND
*
pBind
=
pBindParams_
+
paramNo_
++
;
pBind
->
buffer_type
=
TSDB_DATA_TYPE_INT
;
pBind
->
num
=
1
;
pBind
->
buffer_length
=
sizeof
(
int32_t
);
...
...
@@ -43,7 +43,7 @@ public:
}
private:
TAOS_
BIND_v2
*
pBindParams_
;
TAOS_
MULTI_BIND
*
pBindParams_
;
int32_t
paramNo_
;
};
...
...
source/libs/scalar/src/filter.c
浏览文件 @
15d7abf4
...
...
@@ -3774,11 +3774,12 @@ bool filterExecute(SFilterInfo *info, SSDataBlock *pSrc, int8_t** p, SColumnData
SDataType
type
=
{.
type
=
TSDB_DATA_TYPE_BOOL
,
.
bytes
=
sizeof
(
bool
)};
output
.
columnData
=
createColumnInfoData
(
&
type
,
pSrc
->
info
.
rows
);
*
p
=
(
int8_t
*
)
output
.
columnData
->
pData
;
SArray
*
pList
=
taosArrayInit
(
1
,
POINTER_BYTES
);
taosArrayPush
(
pList
,
&
pSrc
);
FLT_ERR_RET
(
scalarCalculate
(
info
->
sclCtx
.
node
,
pList
,
&
output
));
*
p
=
(
int8_t
*
)
output
.
columnData
->
pData
;
taosArrayDestroy
(
pList
);
return
false
;
}
...
...
tests/script/api/batchprepare.c
浏览文件 @
15d7abf4
...
...
@@ -31,7 +31,7 @@ typedef struct {
char
*
binaryData
;
char
*
isNull
;
int32_t
*
binaryLen
;
TAOS_
BIND_v2
*
pBind
;
TAOS_
MULTI_BIND
*
pBind
;
char
*
sql
;
int32_t
*
colTypes
;
int32_t
colNum
;
...
...
@@ -163,7 +163,7 @@ static int64_t taosGetTimestampUs() {
return
(
int64_t
)
systemTime
.
tv_sec
*
1000000L
+
(
int64_t
)
systemTime
.
tv_usec
;
}
bool
colExists
(
TAOS_
BIND_v2
*
pBind
,
int32_t
dataType
)
{
bool
colExists
(
TAOS_
MULTI_BIND
*
pBind
,
int32_t
dataType
)
{
int32_t
i
=
0
;
while
(
true
)
{
if
(
0
==
pBind
[
i
].
buffer_type
)
{
...
...
@@ -393,7 +393,7 @@ int32_t prepareData(BindData *data) {
data
->
colNum
=
0
;
data
->
colTypes
=
taosMemoryCalloc
(
30
,
sizeof
(
int32_t
));
data
->
sql
=
taosMemoryCalloc
(
1
,
1024
);
data
->
pBind
=
taosMemoryCalloc
((
allRowNum
/
gCurCase
->
bindRowNum
)
*
gCurCase
->
bindColNum
,
sizeof
(
TAOS_
BIND_v2
));
data
->
pBind
=
taosMemoryCalloc
((
allRowNum
/
gCurCase
->
bindRowNum
)
*
gCurCase
->
bindColNum
,
sizeof
(
TAOS_
MULTI_BIND
));
data
->
tsData
=
taosMemoryMalloc
(
allRowNum
*
sizeof
(
int64_t
));
data
->
boolData
=
taosMemoryMalloc
(
allRowNum
*
sizeof
(
bool
));
data
->
tinyData
=
taosMemoryMalloc
(
allRowNum
*
sizeof
(
int8_t
));
...
...
@@ -463,7 +463,7 @@ void destroyData(BindData *data) {
taosMemoryFree
(
data
->
colTypes
);
}
int32_t
bpBindParam
(
TAOS_STMT
*
stmt
,
TAOS_
BIND_v2
*
bind
)
{
int32_t
bpBindParam
(
TAOS_STMT
*
stmt
,
TAOS_
MULTI_BIND
*
bind
)
{
static
int32_t
n
=
0
;
if
(
gCurCase
->
bindRowNum
>
1
)
{
...
...
@@ -951,7 +951,7 @@ int stmt_funcb_autoctb1(TAOS_STMT *stmt) {
int *lb = taosMemoryMalloc(10 * sizeof(int));
TAOS_BIND *tags = taosMemoryCalloc(1, sizeof(TAOS_BIND) * 9 * 1);
TAOS_
BIND_v2 *params = taosMemoryCalloc(1, sizeof(TAOS_BIND_v2
) * 1*10);
TAOS_
MULTI_BIND *params = taosMemoryCalloc(1, sizeof(TAOS_MULTI_BIND
) * 1*10);
// int one_null = 1;
int one_not_null = 0;
...
...
@@ -1164,7 +1164,7 @@ int stmt_funcb_autoctb2(TAOS_STMT *stmt) {
int *lb = taosMemoryMalloc(10 * sizeof(int));
TAOS_BIND *tags = taosMemoryCalloc(1, sizeof(TAOS_BIND) * 9 * 1);
TAOS_
BIND_v2 *params = taosMemoryCalloc(1, sizeof(TAOS_BIND_v2
) * 1*10);
TAOS_
MULTI_BIND *params = taosMemoryCalloc(1, sizeof(TAOS_MULTI_BIND
) * 1*10);
// int one_null = 1;
int one_not_null = 0;
...
...
@@ -1378,7 +1378,7 @@ int stmt_funcb_autoctb3(TAOS_STMT *stmt) {
int *lb = taosMemoryMalloc(10 * sizeof(int));
TAOS_BIND *tags = taosMemoryCalloc(1, sizeof(TAOS_BIND) * 9 * 1);
TAOS_
BIND_v2 *params = taosMemoryCalloc(1, sizeof(TAOS_BIND_v2
) * 1*10);
TAOS_
MULTI_BIND *params = taosMemoryCalloc(1, sizeof(TAOS_MULTI_BIND
) * 1*10);
// int one_null = 1;
int one_not_null = 0;
...
...
@@ -1569,7 +1569,7 @@ int stmt_funcb_autoctb4(TAOS_STMT *stmt) {
int *lb = taosMemoryMalloc(10 * sizeof(int));
TAOS_BIND *tags = taosMemoryCalloc(1, sizeof(TAOS_BIND) * 9 * 1);
TAOS_
BIND_v2 *params = taosMemoryCalloc(1, sizeof(TAOS_BIND_v2
) * 1*5);
TAOS_
MULTI_BIND *params = taosMemoryCalloc(1, sizeof(TAOS_MULTI_BIND
) * 1*5);
// int one_null = 1;
int one_not_null = 0;
...
...
@@ -1722,7 +1722,7 @@ int stmt_funcb_autoctb_e1(TAOS_STMT *stmt) {
int *lb = taosMemoryMalloc(10 * sizeof(int));
TAOS_BIND *tags = taosMemoryCalloc(1, sizeof(TAOS_BIND) * 9 * 1);
TAOS_
BIND_v2 *params = taosMemoryCalloc(1, sizeof(TAOS_BIND_v2
) * 1*10);
TAOS_
MULTI_BIND *params = taosMemoryCalloc(1, sizeof(TAOS_MULTI_BIND
) * 1*10);
// int one_null = 1;
int one_not_null = 0;
...
...
@@ -1911,7 +1911,7 @@ int stmt_funcb_autoctb_e2(TAOS_STMT *stmt) {
int *lb = taosMemoryMalloc(10 * sizeof(int));
TAOS_BIND *tags = taosMemoryCalloc(1, sizeof(TAOS_BIND) * 9 * 1);
TAOS_
BIND_v2 *params = taosMemoryCalloc(1, sizeof(TAOS_BIND_v2
) * 1*10);
TAOS_
MULTI_BIND *params = taosMemoryCalloc(1, sizeof(TAOS_MULTI_BIND
) * 1*10);
// int one_null = 1;
int one_not_null = 0;
...
...
@@ -2128,7 +2128,7 @@ int stmt_funcb_autoctb_e3(TAOS_STMT *stmt) {
int *lb = taosMemoryMalloc(10 * sizeof(int));
TAOS_BIND *tags = taosMemoryCalloc(1, sizeof(TAOS_BIND) * 9 * 1);
TAOS_
BIND_v2 *params = taosMemoryCalloc(1, sizeof(TAOS_BIND_v2
) * 1*10);
TAOS_
MULTI_BIND *params = taosMemoryCalloc(1, sizeof(TAOS_MULTI_BIND
) * 1*10);
// int one_null = 1;
int one_not_null = 0;
...
...
@@ -2343,7 +2343,7 @@ int stmt_funcb_autoctb_e4(TAOS_STMT *stmt) {
int *lb = taosMemoryMalloc(10 * sizeof(int));
TAOS_BIND *tags = taosMemoryCalloc(1, sizeof(TAOS_BIND) * 9 * 1);
TAOS_
BIND_v2 *params = taosMemoryCalloc(1, sizeof(TAOS_BIND_v2
) * 1*10);
TAOS_
MULTI_BIND *params = taosMemoryCalloc(1, sizeof(TAOS_MULTI_BIND
) * 1*10);
// int one_null = 1;
int one_not_null = 0;
...
...
@@ -2570,7 +2570,7 @@ int stmt_funcb_autoctb_e5(TAOS_STMT *stmt) {
int *lb = taosMemoryMalloc(10 * sizeof(int));
TAOS_BIND *tags = taosMemoryCalloc(1, sizeof(TAOS_BIND) * 9 * 1);
TAOS_
BIND_v2 *params = taosMemoryCalloc(1, sizeof(TAOS_BIND_v2
) * 1*10);
TAOS_
MULTI_BIND *params = taosMemoryCalloc(1, sizeof(TAOS_MULTI_BIND
) * 1*10);
// int one_null = 1;
int one_not_null = 0;
...
...
@@ -2791,7 +2791,7 @@ int stmt_funcb4(TAOS_STMT *stmt) {
int *lb = taosMemoryMalloc(60 * sizeof(int));
TAOS_
BIND_v2 *params = taosMemoryCalloc(1, sizeof(TAOS_BIND_v2
) * 900000*10);
TAOS_
MULTI_BIND *params = taosMemoryCalloc(1, sizeof(TAOS_MULTI_BIND
) * 900000*10);
char* is_null = taosMemoryMalloc(sizeof(char) * 60);
char* no_null = taosMemoryMalloc(sizeof(char) * 60);
...
...
@@ -2950,7 +2950,7 @@ int stmt_funcb5(TAOS_STMT *stmt) {
int *lb = taosMemoryMalloc(18000 * sizeof(int));
TAOS_
BIND_v2 *params = taosMemoryCalloc(1, sizeof(TAOS_BIND_v2
) * 3000*10);
TAOS_
MULTI_BIND *params = taosMemoryCalloc(1, sizeof(TAOS_MULTI_BIND
) * 3000*10);
char* is_null = taosMemoryMalloc(sizeof(char) * 18000);
char* no_null = taosMemoryMalloc(sizeof(char) * 18000);
...
...
@@ -3094,7 +3094,7 @@ int stmt_funcb_ssz1(TAOS_STMT *stmt) {
int *lb = taosMemoryMalloc(30000 * sizeof(int));
TAOS_
BIND_v2 *params = taosMemoryCalloc(1, sizeof(TAOS_BIND_v2
) * 3000*10);
TAOS_
MULTI_BIND *params = taosMemoryCalloc(1, sizeof(TAOS_MULTI_BIND
) * 3000*10);
char* no_null = taosMemoryMalloc(sizeof(int) * 200000);
for (int i = 0; i < 30000; ++i) {
...
...
@@ -3185,7 +3185,7 @@ int stmt_funcb_s1(TAOS_STMT *stmt) {
int *lb = taosMemoryMalloc(60 * sizeof(int));
TAOS_
BIND_v2 *params = taosMemoryCalloc(1, sizeof(TAOS_BIND_v2
) * 900000*10);
TAOS_
MULTI_BIND *params = taosMemoryCalloc(1, sizeof(TAOS_MULTI_BIND
) * 900000*10);
char* is_null = taosMemoryMalloc(sizeof(char) * 60);
char* no_null = taosMemoryMalloc(sizeof(char) * 60);
...
...
@@ -3347,7 +3347,7 @@ int stmt_funcb_sc1(TAOS_STMT *stmt) {
int *lb = taosMemoryMalloc(60 * sizeof(int));
TAOS_
BIND_v2 *params = taosMemoryCalloc(1, sizeof(TAOS_BIND_v2
) * 900000*10);
TAOS_
MULTI_BIND *params = taosMemoryCalloc(1, sizeof(TAOS_MULTI_BIND
) * 900000*10);
char* is_null = taosMemoryMalloc(sizeof(char) * 60);
char* no_null = taosMemoryMalloc(sizeof(char) * 60);
...
...
@@ -3505,7 +3505,7 @@ int stmt_funcb_sc2(TAOS_STMT *stmt) {
int *lb = taosMemoryMalloc(60 * sizeof(int));
TAOS_
BIND_v2 *params = taosMemoryCalloc(1, sizeof(TAOS_BIND_v2
) * 900000*10);
TAOS_
MULTI_BIND *params = taosMemoryCalloc(1, sizeof(TAOS_MULTI_BIND
) * 900000*10);
char* is_null = taosMemoryMalloc(sizeof(char) * 60);
char* no_null = taosMemoryMalloc(sizeof(char) * 60);
...
...
@@ -3665,7 +3665,7 @@ int stmt_funcb_sc3(TAOS_STMT *stmt) {
int *lb = taosMemoryMalloc(60 * sizeof(int));
TAOS_
BIND_v2 *params = taosMemoryCalloc(1, sizeof(TAOS_BIND_v2
) * 60*10);
TAOS_
MULTI_BIND *params = taosMemoryCalloc(1, sizeof(TAOS_MULTI_BIND
) * 60*10);
char* is_null = taosMemoryMalloc(sizeof(char) * 60);
char* no_null = taosMemoryMalloc(sizeof(char) * 60);
...
...
@@ -4147,6 +4147,7 @@ void prepare(TAOS *taos, int32_t colNum, int32_t *colList, int autoCreate) {
exit
(
1
);
}
taos_free_result
(
result
);
sleep
(
2
);
//TODO REMOVE IT
result
=
taos_query
(
taos
,
"use demo"
);
taos_free_result
(
result
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录