Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
52c62e7c
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看板
提交
52c62e7c
编写于
4月 20, 2022
作者:
X
Xiaoyu Wang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: sql command 'create function'
上级
6f377189
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
40 addition
and
35 deletion
+40
-35
source/dnode/mnode/impl/src/mndFunc.c
source/dnode/mnode/impl/src/mndFunc.c
+2
-2
source/dnode/mnode/impl/test/func/func.cpp
source/dnode/mnode/impl/test/func/func.cpp
+1
-33
source/libs/parser/src/parTranslater.c
source/libs/parser/src/parTranslater.c
+19
-0
source/libs/planner/src/planLogicCreater.c
source/libs/planner/src/planLogicCreater.c
+18
-0
未找到文件。
source/dnode/mnode/impl/src/mndFunc.c
浏览文件 @
52c62e7c
...
...
@@ -441,14 +441,14 @@ static int32_t mndProcessRetrieveFuncReq(SNodeMsg *pReq) {
funcInfo
.
signature
=
pFunc
->
signature
;
funcInfo
.
commentSize
=
pFunc
->
commentSize
;
funcInfo
.
codeSize
=
pFunc
->
codeSize
;
funcInfo
.
pCode
=
taosMemoryCalloc
(
1
,
sizeof
(
funcInfo
.
codeSize
)
);
funcInfo
.
pCode
=
taosMemoryCalloc
(
1
,
funcInfo
.
codeSize
);
if
(
funcInfo
.
pCode
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
RETRIEVE_FUNC_OVER
;
}
memcpy
(
funcInfo
.
pCode
,
pFunc
->
pCode
,
pFunc
->
codeSize
);
if
(
funcInfo
.
commentSize
>
0
)
{
funcInfo
.
pComment
=
taosMemoryCalloc
(
1
,
sizeof
(
funcInfo
.
commentSize
)
);
funcInfo
.
pComment
=
taosMemoryCalloc
(
1
,
funcInfo
.
commentSize
);
if
(
funcInfo
.
pComment
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
RETRIEVE_FUNC_OVER
;
...
...
source/dnode/mnode/impl/test/func/func.cpp
浏览文件 @
52c62e7c
...
...
@@ -32,6 +32,7 @@ void MndTestFunc::SetCode(SCreateFuncReq* pReq, const char* pCode) {
int32_t
len
=
strlen
(
pCode
);
pReq
->
pCode
=
(
char
*
)
taosMemoryCalloc
(
1
,
len
+
1
);
strcpy
(
pReq
->
pCode
,
pCode
);
pReq
->
codeLen
=
len
;
}
void
MndTestFunc
::
SetComment
(
SCreateFuncReq
*
pReq
,
const
char
*
pComment
)
{
...
...
@@ -60,21 +61,6 @@ TEST_F(MndTestFunc, 02_Create_Func) {
ASSERT_EQ
(
pRsp
->
code
,
TSDB_CODE_MND_INVALID_FUNC_NAME
);
}
{
SCreateFuncReq
createReq
=
{
0
};
strcpy
(
createReq
.
name
,
"f1"
);
SetCode
(
&
createReq
,
"code1"
);
int32_t
contLen
=
tSerializeSCreateFuncReq
(
NULL
,
0
,
&
createReq
);
void
*
pReq
=
rpcMallocCont
(
contLen
);
tSerializeSCreateFuncReq
(
pReq
,
contLen
,
&
createReq
);
tFreeSCreateFuncReq
(
&
createReq
);
SRpcMsg
*
pRsp
=
test
.
SendReq
(
TDMT_MND_CREATE_FUNC
,
pReq
,
contLen
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
TSDB_CODE_MND_INVALID_FUNC_COMMENT
);
}
{
SCreateFuncReq
createReq
=
{
0
};
strcpy
(
createReq
.
name
,
"f1"
);
...
...
@@ -90,22 +76,6 @@ TEST_F(MndTestFunc, 02_Create_Func) {
ASSERT_EQ
(
pRsp
->
code
,
TSDB_CODE_MND_INVALID_FUNC_CODE
);
}
{
SCreateFuncReq
createReq
=
{
0
};
strcpy
(
createReq
.
name
,
"f1"
);
SetCode
(
&
createReq
,
"code1"
);
SetComment
(
&
createReq
,
""
);
int32_t
contLen
=
tSerializeSCreateFuncReq
(
NULL
,
0
,
&
createReq
);
void
*
pReq
=
rpcMallocCont
(
contLen
);
tSerializeSCreateFuncReq
(
pReq
,
contLen
,
&
createReq
);
tFreeSCreateFuncReq
(
&
createReq
);
SRpcMsg
*
pRsp
=
test
.
SendReq
(
TDMT_MND_CREATE_FUNC
,
pReq
,
contLen
);
ASSERT_NE
(
pRsp
,
nullptr
);
ASSERT_EQ
(
pRsp
->
code
,
TSDB_CODE_MND_INVALID_FUNC_COMMENT
);
}
{
SCreateFuncReq
createReq
=
{
0
};
strcpy
(
createReq
.
name
,
"f1"
);
...
...
@@ -329,7 +299,6 @@ TEST_F(MndTestFunc, 03_Retrieve_Func) {
EXPECT_EQ
(
pFuncInfo
->
bufSize
,
6
);
EXPECT_EQ
(
pFuncInfo
->
signature
,
18
);
EXPECT_EQ
(
pFuncInfo
->
commentSize
,
strlen
(
"comment2"
)
+
1
);
EXPECT_EQ
(
pFuncInfo
->
codeSize
,
strlen
(
"code2"
)
+
1
);
EXPECT_STREQ
(
"comment2"
,
pFuncInfo
->
pComment
);
EXPECT_STREQ
(
"code2"
,
pFuncInfo
->
pCode
);
...
...
@@ -368,7 +337,6 @@ TEST_F(MndTestFunc, 03_Retrieve_Func) {
EXPECT_EQ
(
pFuncInfo
->
bufSize
,
6
);
EXPECT_EQ
(
pFuncInfo
->
signature
,
18
);
EXPECT_EQ
(
pFuncInfo
->
commentSize
,
strlen
(
"comment2"
)
+
1
);
EXPECT_EQ
(
pFuncInfo
->
codeSize
,
strlen
(
"code2"
)
+
1
);
EXPECT_STREQ
(
"comment2"
,
pFuncInfo
->
pComment
);
EXPECT_STREQ
(
"code2"
,
pFuncInfo
->
pCode
);
}
...
...
source/libs/parser/src/parTranslater.c
浏览文件 @
52c62e7c
...
...
@@ -1349,6 +1349,22 @@ static int32_t translateSelect(STranslateContext* pCxt, SSelectStmt* pSelect) {
return
code
;
}
static
int32_t
translateSetOperatorImpl
(
STranslateContext
*
pCxt
,
SSetOperator
*
pSetOperator
)
{
// todo
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
translateSetOperator
(
STranslateContext
*
pCxt
,
SSetOperator
*
pSetOperator
)
{
int32_t
code
=
translateQuery
(
pCxt
,
pSetOperator
->
pLeft
);
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
translateQuery
(
pCxt
,
pSetOperator
->
pRight
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
translateSetOperatorImpl
(
pCxt
,
pSetOperator
);
}
return
code
;
}
static
int64_t
getUnitPerMinute
(
uint8_t
precision
)
{
switch
(
precision
)
{
case
TSDB_TIME_PRECISION_MILLI
:
...
...
@@ -2650,6 +2666,9 @@ static int32_t translateQuery(STranslateContext* pCxt, SNode* pNode) {
case
QUERY_NODE_SELECT_STMT
:
code
=
translateSelect
(
pCxt
,
(
SSelectStmt
*
)
pNode
);
break
;
case
QUERY_NODE_SET_OPERATOR
:
code
=
translateSetOperator
(
pCxt
,
(
SSetOperator
*
)
pNode
);
break
;
case
QUERY_NODE_CREATE_DATABASE_STMT
:
code
=
translateCreateDatabase
(
pCxt
,
(
SCreateDatabaseStmt
*
)
pNode
);
break
;
...
...
source/libs/planner/src/planLogicCreater.c
浏览文件 @
52c62e7c
...
...
@@ -768,6 +768,22 @@ static int32_t createSelectLogicNode(SLogicPlanContext* pCxt, SSelectStmt* pSele
return
code
;
}
static
int32_t
createSetOperatorLogicNode
(
SLogicPlanContext
*
pCxt
,
SSetOperator
*
pSetOperator
,
SLogicNode
**
pLogicNode
)
{
SLogicNode
*
pRoot
=
NULL
;
int32_t
code
=
createQueryLogicNode
(
pCxt
,
pSetOperator
->
pLeft
,
&
pRoot
);
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
createQueryLogicNode
(
pCxt
,
pSetOperator
->
pRight
,
&
pRoot
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
*
pLogicNode
=
pRoot
;
}
else
{
nodesDestroyNode
(
pRoot
);
}
return
code
;
}
static
int32_t
getMsgType
(
ENodeType
sqlType
)
{
return
(
QUERY_NODE_CREATE_TABLE_STMT
==
sqlType
||
QUERY_NODE_CREATE_MULTI_TABLE_STMT
==
sqlType
)
?
TDMT_VND_CREATE_TABLE
:
TDMT_VND_SUBMIT
;
}
...
...
@@ -791,6 +807,8 @@ static int32_t createQueryLogicNode(SLogicPlanContext* pCxt, SNode* pStmt, SLogi
return
createVnodeModifLogicNode
(
pCxt
,
(
SVnodeModifOpStmt
*
)
pStmt
,
pLogicNode
);
case
QUERY_NODE_EXPLAIN_STMT
:
return
createQueryLogicNode
(
pCxt
,
((
SExplainStmt
*
)
pStmt
)
->
pQuery
,
pLogicNode
);
case
QUERY_NODE_SET_OPERATOR
:
return
createSetOperatorLogicNode
(
pCxt
,
(
SSetOperator
*
)
pStmt
,
pLogicNode
);
default:
break
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录