Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
cb027cc5
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1193
Star
22019
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看板
提交
cb027cc5
编写于
8月 15, 2023
作者:
W
wangjiaming0909
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: support alter table add column with comment
上级
dcbef83d
变更
8
展开全部
隐藏空白更改
内联
并排
Showing
8 changed file
with
949 addition
and
857 deletion
+949
-857
include/common/tmsg.h
include/common/tmsg.h
+3
-0
include/libs/nodes/cmdnodes.h
include/libs/nodes/cmdnodes.h
+1
-0
source/libs/parser/inc/parAst.h
source/libs/parser/inc/parAst.h
+1
-2
source/libs/parser/inc/sql.y
source/libs/parser/inc/sql.y
+4
-4
source/libs/parser/src/parAstCreater.c
source/libs/parser/src/parAstCreater.c
+5
-7
source/libs/parser/src/parTranslater.c
source/libs/parser/src/parTranslater.c
+18
-0
source/libs/parser/src/sql.c
source/libs/parser/src/sql.c
+876
-843
tests/system-test/0-others/show.py
tests/system-test/0-others/show.py
+41
-1
未找到文件。
include/common/tmsg.h
浏览文件 @
cb027cc5
...
...
@@ -2389,6 +2389,9 @@ typedef struct {
int8_t
type
;
int8_t
flags
;
int32_t
bytes
;
bool
hasColComment
;
char
*
colComment
;
int32_t
colCommentLen
;
// TSDB_ALTER_TABLE_DROP_COLUMN
// TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES
int8_t
colModType
;
...
...
include/libs/nodes/cmdnodes.h
浏览文件 @
cb027cc5
...
...
@@ -214,6 +214,7 @@ typedef struct SAlterTableStmt {
char
newColName
[
TSDB_COL_NAME_LEN
];
STableOptions
*
pOptions
;
SDataType
dataType
;
char
colComment
[
TSDB_COL_COMMENT_LEN
];
SValueNode
*
pVal
;
}
SAlterTableStmt
;
...
...
source/libs/parser/inc/parAst.h
浏览文件 @
cb027cc5
...
...
@@ -171,8 +171,7 @@ SNode* createDropTableClause(SAstCreateContext* pCxt, bool ignoreNotExists, SNod
SNode
*
createDropTableStmt
(
SAstCreateContext
*
pCxt
,
SNodeList
*
pTables
);
SNode
*
createDropSuperTableStmt
(
SAstCreateContext
*
pCxt
,
bool
ignoreNotExists
,
SNode
*
pRealTable
);
SNode
*
createAlterTableModifyOptions
(
SAstCreateContext
*
pCxt
,
SNode
*
pRealTable
,
SNode
*
pOptions
);
SNode
*
createAlterTableAddModifyCol
(
SAstCreateContext
*
pCxt
,
SNode
*
pRealTable
,
int8_t
alterType
,
SToken
*
pColName
,
SDataType
dataType
);
SNode
*
createAlterTableAddModifyCol
(
SAstCreateContext
*
pCxt
,
SNode
*
pRealTable
,
int8_t
alterType
,
SNode
*
pColDefNode
);
SNode
*
createAlterTableDropCol
(
SAstCreateContext
*
pCxt
,
SNode
*
pRealTable
,
int8_t
alterType
,
SToken
*
pColName
);
SNode
*
createAlterTableRenameCol
(
SAstCreateContext
*
pCxt
,
SNode
*
pRealTable
,
int8_t
alterType
,
SToken
*
pOldColName
,
SToken
*
pNewColName
);
...
...
source/libs/parser/inc/sql.y
浏览文件 @
cb027cc5
...
...
@@ -312,17 +312,17 @@ cmd ::= ALTER STABLE alter_table_clause(A).
alter_table_clause(A) ::= full_table_name(B) alter_table_options(C). { A = createAlterTableModifyOptions(pCxt, B, C); }
alter_table_clause(A) ::=
full_table_name(B) ADD COLUMN column_
name(C) type_name(D). { A = createAlterTableAddModifyCol(pCxt, B, TSDB_ALTER_TABLE_ADD_COLUMN, &C, D
); }
full_table_name(B) ADD COLUMN column_
def(C). { A = createAlterTableAddModifyCol(pCxt, B, TSDB_ALTER_TABLE_ADD_COLUMN, C
); }
alter_table_clause(A) ::= full_table_name(B) DROP COLUMN column_name(C). { A = createAlterTableDropCol(pCxt, B, TSDB_ALTER_TABLE_DROP_COLUMN, &C); }
alter_table_clause(A) ::=
full_table_name(B) MODIFY COLUMN column_
name(C) type_name(D). { A = createAlterTableAddModifyCol(pCxt, B, TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES, &C, D
); }
full_table_name(B) MODIFY COLUMN column_
def(C). { A = createAlterTableAddModifyCol(pCxt, B, TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES, C
); }
alter_table_clause(A) ::=
full_table_name(B) RENAME COLUMN column_name(C) column_name(D). { A = createAlterTableRenameCol(pCxt, B, TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME, &C, &D); }
alter_table_clause(A) ::=
full_table_name(B) ADD TAG column_
name(C) type_name(D). { A = createAlterTableAddModifyCol(pCxt, B, TSDB_ALTER_TABLE_ADD_TAG, &C, D
); }
full_table_name(B) ADD TAG column_
def(C). { A = createAlterTableAddModifyCol(pCxt, B, TSDB_ALTER_TABLE_ADD_TAG, C
); }
alter_table_clause(A) ::= full_table_name(B) DROP TAG column_name(C). { A = createAlterTableDropCol(pCxt, B, TSDB_ALTER_TABLE_DROP_TAG, &C); }
alter_table_clause(A) ::=
full_table_name(B) MODIFY TAG column_
name(C) type_name(D). { A = createAlterTableAddModifyCol(pCxt, B, TSDB_ALTER_TABLE_UPDATE_TAG_BYTES, &C, D
); }
full_table_name(B) MODIFY TAG column_
def(C). { A = createAlterTableAddModifyCol(pCxt, B, TSDB_ALTER_TABLE_UPDATE_TAG_BYTES, C
); }
alter_table_clause(A) ::=
full_table_name(B) RENAME TAG column_name(C) column_name(D). { A = createAlterTableRenameCol(pCxt, B, TSDB_ALTER_TABLE_UPDATE_TAG_NAME, &C, &D); }
alter_table_clause(A) ::=
...
...
source/libs/parser/src/parAstCreater.c
浏览文件 @
cb027cc5
...
...
@@ -1333,17 +1333,15 @@ SNode* createAlterTableModifyOptions(SAstCreateContext* pCxt, SNode* pRealTable,
return
createAlterTableStmtFinalize
(
pRealTable
,
pStmt
);
}
SNode
*
createAlterTableAddModifyCol
(
SAstCreateContext
*
pCxt
,
SNode
*
pRealTable
,
int8_t
alterType
,
SToken
*
pColName
,
SDataType
dataType
)
{
SNode
*
createAlterTableAddModifyCol
(
SAstCreateContext
*
pCxt
,
SNode
*
pRealTable
,
int8_t
alterType
,
SNode
*
pColDefNode
)
{
CHECK_PARSER_STATUS
(
pCxt
);
if
(
!
checkColumnName
(
pCxt
,
pColName
))
{
return
NULL
;
}
SColumnDefNode
*
pCol
=
(
SColumnDefNode
*
)
pColDefNode
;
SAlterTableStmt
*
pStmt
=
(
SAlterTableStmt
*
)
nodesMakeNode
(
QUERY_NODE_ALTER_TABLE_STMT
);
CHECK_OUT_OF_MEM
(
pStmt
);
pStmt
->
alterType
=
alterType
;
COPY_STRING_FORM_ID_TOKEN
(
pStmt
->
colName
,
pColName
);
pStmt
->
dataType
=
dataType
;
strcpy
(
pStmt
->
colName
,
pCol
->
colName
);
strcpy
(
pStmt
->
colComment
,
pCol
->
comments
);
pStmt
->
dataType
=
pCol
->
dataType
;
return
createAlterTableStmtFinalize
(
pRealTable
,
pStmt
);
}
...
...
source/libs/parser/src/parTranslater.c
浏览文件 @
cb027cc5
...
...
@@ -8863,6 +8863,15 @@ static int32_t buildAddColReq(STranslateContext* pCxt, SAlterTableStmt* pStmt, S
pReq
->
type
=
pStmt
->
dataType
.
type
;
pReq
->
flags
=
COL_SMA_ON
;
pReq
->
bytes
=
calcTypeBytes
(
pStmt
->
dataType
);
if
(
pStmt
->
colComment
[
0
])
{
pReq
->
colComment
=
taosStrdup
(
pStmt
->
colComment
);
if
(
pReq
->
colComment
==
NULL
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
}
pReq
->
colCommentLen
=
strlen
(
pReq
->
colComment
);
}
else
{
pReq
->
colCommentLen
=
-
1
;
}
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -8913,6 +8922,15 @@ static int32_t buildUpdateColReq(STranslateContext* pCxt, SAlterTableStmt* pStmt
return
TSDB_CODE_OUT_OF_MEMORY
;
}
pReq
->
colId
=
pSchema
->
colId
;
if
(
pStmt
->
colComment
[
0
])
{
pReq
->
colComment
=
taosStrdup
(
pStmt
->
colComment
);
if
(
pReq
->
colComment
==
NULL
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
}
pReq
->
colCommentLen
=
strlen
(
pReq
->
colComment
);
}
else
{
pReq
->
colCommentLen
=
-
1
;
}
return
TSDB_CODE_SUCCESS
;
}
...
...
source/libs/parser/src/sql.c
浏览文件 @
cb027cc5
此差异已折叠。
点击以展开。
tests/system-test/0-others/show.py
浏览文件 @
cb027cc5
...
...
@@ -215,12 +215,51 @@ class TDTestCase:
tdSql
.
execute
(
"use comment_test_db"
)
tdSql
.
execute
(
"create table normal_table(ts timestamp, c2 int comment 'c2 comment')"
)
tdSql
.
execute
(
"create stable super_table(ts timestamp comment 'ts', c2 int comment 'c2 comment') tags(tg int comment 'tg comment')"
)
tdSql
.
query
(
'show create table normal_table'
)
create_sql
=
"create table `normal_table` (`ts` timestamp, `c2` int)"
tdSql
.
query
(
'show create table normal_table'
)
tdSql
.
checkEqual
(
tdSql
.
queryResult
[
0
][
1
].
lower
(),
create_sql
)
tdSql
.
query
(
'show create table super_table'
)
create_sql
=
"create stable `super_table` (`ts` timestamp, `c2` int) tags (`tg` int)"
tdSql
.
checkEqual
(
tdSql
.
queryResult
[
0
][
1
].
lower
(),
create_sql
)
tdSql
.
execute
(
"drop database comment_test_db"
)
def
alter_table_with_col_comment
(
self
):
tdSql
.
execute
(
"create database comment_test_db"
)
tdSql
.
execute
(
"use comment_test_db"
)
tdSql
.
execute
(
"create table normal_table(ts timestamp, c2 int comment 'c2 comment')"
)
tdSql
.
execute
(
"create stable super_table(ts timestamp comment 'ts', c2 int comment 'c2 comment') tags(tg int comment 'tg comment')"
)
create_sql
=
"create table `normal_table` (`ts` timestamp, `c2` int, `c3` int)"
tdSql
.
execute
(
"alter table normal_table add column c3 int comment 'c3 comment'"
,
queryTimes
=
1
)
tdSql
.
query
(
"show create table normal_table"
)
tdSql
.
checkEqual
(
tdSql
.
queryResult
[
0
][
1
].
lower
(),
create_sql
)
create_sql
=
"create table `normal_table` (`ts` timestamp, `c2` int, `c3` int, `c4` varchar(255))"
tdSql
.
execute
(
"alter table normal_table add column c4 varchar(255) comment 'c4 comment'"
,
queryTimes
=
1
)
tdSql
.
query
(
"show create table normal_table"
)
tdSql
.
checkEqual
(
tdSql
.
queryResult
[
0
][
1
].
lower
(),
create_sql
)
create_sql
=
"create table `normal_table` (`ts` timestamp, `c2` int, `c3` int, `c4` varchar(255), `c5` varchar(255))"
tdSql
.
execute
(
"alter table normal_table add column c5 varchar(255)"
,
queryTimes
=
1
)
tdSql
.
query
(
"show create table normal_table"
)
tdSql
.
checkEqual
(
tdSql
.
queryResult
[
0
][
1
].
lower
(),
create_sql
)
create_sql
=
"create stable `super_table` (`ts` timestamp, `c2` int, `c3` int) tags (`tg` int) sma(`ts`,`c2`)"
tdSql
.
execute
(
"alter table super_table add column c3 int comment 'c3 comment'"
,
queryTimes
=
1
)
tdSql
.
query
(
"show create table super_table"
)
tdSql
.
checkEqual
(
tdSql
.
queryResult
[
0
][
1
].
lower
(),
create_sql
)
create_sql
=
"create stable `super_table` (`ts` timestamp, `c2` int, `c3` int, `c4` varchar(255)) tags (`tg` int) sma(`ts`,`c2`)"
tdSql
.
execute
(
"alter table super_table add column c4 varchar(255) comment 'c4 comment'"
,
queryTimes
=
1
)
tdSql
.
query
(
"show create table super_table"
)
tdSql
.
checkEqual
(
tdSql
.
queryResult
[
0
][
1
].
lower
(),
create_sql
)
create_sql
=
"create stable `super_table` (`ts` timestamp, `c2` int, `c3` int, `c4` varchar(256)) tags (`tg` int) sma(`ts`,`c2`)"
tdSql
.
execute
(
"alter table super_table modify column c4 varchar(256) comment 'c4 256 comment'"
,
queryTimes
=
1
)
tdSql
.
query
(
"show create table super_table"
)
tdSql
.
checkEqual
(
tdSql
.
queryResult
[
0
][
1
].
lower
(),
create_sql
)
tdSql
.
execute
(
"drop database comment_test_db"
)
def
run
(
self
):
self
.
check_gitinfo
()
...
...
@@ -231,6 +270,7 @@ class TDTestCase:
self
.
show_create_sysdb_sql
()
self
.
show_create_systb_sql
()
self
.
show_create_table_with_col_comment
()
self
.
alter_table_with_col_comment
()
def
stop
(
self
):
tdSql
.
close
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录