Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
6beccecf
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看板
未验证
提交
6beccecf
编写于
11月 01, 2021
作者:
D
dapan1121
提交者:
GitHub
11月 01, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #8474 from taosdata/enhance/TD-10700
fixed alter tag modify tag lengh clause when escape
上级
e382478e
586329ed
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
40 addition
and
14 deletion
+40
-14
src/client/src/tscParseLineProtocol.c
src/client/src/tscParseLineProtocol.c
+13
-13
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+6
-0
src/query/src/qSqlParser.c
src/query/src/qSqlParser.c
+0
-1
tests/script/general/parser/tagName_escape.sim
tests/script/general/parser/tagName_escape.sim
+21
-0
未找到文件。
src/client/src/tscParseLineProtocol.c
浏览文件 @
6beccecf
...
...
@@ -20,7 +20,7 @@
#include "tscParseLine.h"
typedef
struct
{
char
sTableName
[
TSDB_TABLE_NAME_LEN
];
char
sTableName
[
TSDB_TABLE_NAME_LEN
+
TS_ESCAPE_CHAR_SIZE
];
SHashObj
*
tagHash
;
SHashObj
*
fieldHash
;
SArray
*
tags
;
//SArray<SSchema>
...
...
@@ -64,13 +64,13 @@ typedef enum {
}
ESchemaAction
;
typedef
struct
{
char
sTableName
[
TSDB_TABLE_NAME_LEN
];
char
sTableName
[
TSDB_TABLE_NAME_LEN
+
TS_ESCAPE_CHAR_SIZE
];
SArray
*
tags
;
//SArray<SSchema>
SArray
*
fields
;
//SArray<SSchema>
}
SCreateSTableActionInfo
;
typedef
struct
{
char
sTableName
[
TSDB_TABLE_NAME_LEN
];
char
sTableName
[
TSDB_TABLE_NAME_LEN
+
TS_ESCAPE_CHAR_SIZE
];
SSchema
*
field
;
}
SAlterSTableActionInfo
;
...
...
@@ -155,13 +155,13 @@ static int32_t getSmlMd5ChildTableName(TAOS_SML_DATA_POINT* point, char* tableNa
qsort
(
point
->
tags
,
point
->
tagNum
,
sizeof
(
TAOS_SML_KV
),
compareSmlColKv
);
SStringBuilder
sb
;
memset
(
&
sb
,
0
,
sizeof
(
sb
));
char
sTableName
[
TSDB_TABLE_NAME_LEN
]
=
{
0
};
char
sTableName
[
TSDB_TABLE_NAME_LEN
+
TS_ESCAPE_CHAR_SIZE
]
=
{
0
};
strtolower
(
sTableName
,
point
->
stableName
);
taosStringBuilderAppendString
(
&
sb
,
sTableName
);
for
(
int
j
=
0
;
j
<
point
->
tagNum
;
++
j
)
{
taosStringBuilderAppendChar
(
&
sb
,
','
);
TAOS_SML_KV
*
tagKv
=
point
->
tags
+
j
;
char
tagName
[
TSDB_COL_NAME_LEN
]
=
{
0
};
char
tagName
[
TSDB_COL_NAME_LEN
+
TS_ESCAPE_CHAR_SIZE
]
=
{
0
};
strtolower
(
tagName
,
tagKv
->
key
);
taosStringBuilderAppendString
(
&
sb
,
tagName
);
taosStringBuilderAppendChar
(
&
sb
,
'='
);
...
...
@@ -214,8 +214,8 @@ static int32_t buildDataPointSchemas(TAOS_SML_DATA_POINT* points, int numPoint,
for
(
int
j
=
0
;
j
<
point
->
tagNum
;
++
j
)
{
TAOS_SML_KV
*
tagKv
=
point
->
tags
+
j
;
if
(
!
point
->
childTableName
)
{
char
childTableName
[
TSDB_TABLE_NAME_LEN
];
int32_t
tableNameLen
=
TSDB_TABLE_NAME_LEN
;
char
childTableName
[
TSDB_TABLE_NAME_LEN
+
TS_ESCAPE_CHAR_SIZE
];
int32_t
tableNameLen
=
TSDB_TABLE_NAME_LEN
+
TS_ESCAPE_CHAR_SIZE
;
getSmlMd5ChildTableName
(
point
,
childTableName
,
&
tableNameLen
,
info
);
point
->
childTableName
=
calloc
(
1
,
tableNameLen
+
1
);
strncpy
(
point
->
childTableName
,
childTableName
,
tableNameLen
);
...
...
@@ -261,7 +261,7 @@ static int32_t buildDataPointSchemas(TAOS_SML_DATA_POINT* points, int numPoint,
static
int32_t
generateSchemaAction
(
SSchema
*
pointColField
,
SHashObj
*
dbAttrHash
,
SArray
*
dbAttrArray
,
bool
isTag
,
char
sTableName
[],
SSchemaAction
*
action
,
bool
*
actionNeeded
,
SSmlLinesInfo
*
info
)
{
char
fieldNameLowerCase
[
TSDB_COL_NAME_LEN
]
=
{
0
};
char
fieldNameLowerCase
[
TSDB_COL_NAME_LEN
+
TS_ESCAPE_CHAR_SIZE
]
=
{
0
};
strtolower
(
fieldNameLowerCase
,
pointColField
->
name
);
size_t
*
pDbIndex
=
taosHashGet
(
dbAttrHash
,
fieldNameLowerCase
,
strlen
(
fieldNameLowerCase
));
...
...
@@ -281,7 +281,7 @@ static int32_t generateSchemaAction(SSchema* pointColField, SHashObj* dbAttrHash
action
->
action
=
SCHEMA_ACTION_CHANGE_COLUMN_SIZE
;
}
memset
(
&
action
->
alterSTable
,
0
,
sizeof
(
SAlterSTableActionInfo
));
memcpy
(
action
->
alterSTable
.
sTableName
,
sTableName
,
TSDB_TABLE_NAME_LEN
);
memcpy
(
action
->
alterSTable
.
sTableName
,
sTableName
,
TSDB_TABLE_NAME_LEN
+
TS_ESCAPE_CHAR_SIZE
);
action
->
alterSTable
.
field
=
pointColField
;
*
actionNeeded
=
true
;
}
...
...
@@ -292,7 +292,7 @@ static int32_t generateSchemaAction(SSchema* pointColField, SHashObj* dbAttrHash
action
->
action
=
SCHEMA_ACTION_ADD_COLUMN
;
}
memset
(
&
action
->
alterSTable
,
0
,
sizeof
(
SAlterSTableActionInfo
));
memcpy
(
action
->
alterSTable
.
sTableName
,
sTableName
,
TSDB_TABLE_NAME_LEN
);
memcpy
(
action
->
alterSTable
.
sTableName
,
sTableName
,
TSDB_TABLE_NAME_LEN
+
TS_ESCAPE_CHAR_SIZE
);
action
->
alterSTable
.
field
=
pointColField
;
*
actionNeeded
=
true
;
}
...
...
@@ -536,7 +536,7 @@ static int32_t retrieveTableMeta(TAOS* taos, char* tableName, STableMeta** pTabl
tscDebug
(
"SML:0x%"
PRIx64
" retrieve table meta. super table name: %s"
,
info
->
id
,
tableName
);
char
tableNameLowerCase
[
TSDB_TABLE_NAME_LEN
];
char
tableNameLowerCase
[
TSDB_TABLE_NAME_LEN
+
TS_ESCAPE_CHAR_SIZE
];
strtolower
(
tableNameLowerCase
,
tableName
);
char
sql
[
256
];
...
...
@@ -623,7 +623,7 @@ static int32_t modifyDBSchemas(TAOS* taos, SArray* stableSchemas, SSmlLinesInfo*
SSchemaAction
schemaAction
=
{
0
};
schemaAction
.
action
=
SCHEMA_ACTION_CREATE_STABLE
;
memset
(
&
schemaAction
.
createSTable
,
0
,
sizeof
(
SCreateSTableActionInfo
));
memcpy
(
schemaAction
.
createSTable
.
sTableName
,
pointSchema
->
sTableName
,
TSDB_TABLE_NAME_LEN
);
memcpy
(
schemaAction
.
createSTable
.
sTableName
,
pointSchema
->
sTableName
,
TSDB_TABLE_NAME_LEN
+
TS_ESCAPE_CHAR_SIZE
);
schemaAction
.
createSTable
.
tags
=
pointSchema
->
tags
;
schemaAction
.
createSTable
.
fields
=
pointSchema
->
fields
;
applySchemaAction
(
taos
,
&
schemaAction
,
info
);
...
...
@@ -659,7 +659,7 @@ static int32_t modifyDBSchemas(TAOS* taos, SArray* stableSchemas, SSmlLinesInfo*
SSchema
*
pointColTs
=
taosArrayGet
(
pointSchema
->
fields
,
0
);
SSchema
*
dbColTs
=
taosArrayGet
(
dbSchema
.
fields
,
0
);
memcpy
(
pointColTs
->
name
,
dbColTs
->
name
,
TSDB_COL_NAME_LEN
);
memcpy
(
pointColTs
->
name
,
dbColTs
->
name
,
TSDB_COL_NAME_LEN
+
TS_ESCAPE_CHAR_SIZE
);
for
(
int
j
=
1
;
j
<
pointFieldSize
;
++
j
)
{
SSchema
*
pointCol
=
taosArrayGet
(
pointSchema
->
fields
,
j
);
...
...
src/client/src/tscSQLParser.c
浏览文件 @
6beccecf
...
...
@@ -6368,6 +6368,12 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
SColumnIndex
columnIndex
=
COLUMN_INDEX_INITIALIZER
;
SStrToken
name
=
{.
type
=
TK_STRING
,
.
z
=
pItem
->
name
,
.
n
=
(
uint32_t
)
strlen
(
pItem
->
name
)};
//handle Escape character backstick
if
(
name
.
z
[
0
]
==
TS_ESCAPE_CHAR
&&
name
.
z
[
name
.
n
-
1
]
==
TS_ESCAPE_CHAR
)
{
memmove
(
name
.
z
,
name
.
z
+
1
,
name
.
n
);
name
.
z
[
name
.
n
-
TS_ESCAPE_CHAR_SIZE
]
=
'\0'
;
name
.
n
-=
TS_ESCAPE_CHAR_SIZE
;
}
if
(
getColumnIndexByName
(
&
name
,
pQueryInfo
,
&
columnIndex
,
tscGetErrorMsgPayload
(
pCmd
))
!=
TSDB_CODE_SUCCESS
)
{
return
invalidOperationMsg
(
pMsg
,
msg17
);
}
...
...
src/query/src/qSqlParser.c
浏览文件 @
6beccecf
...
...
@@ -67,7 +67,6 @@ SSqlInfo qSqlParse(const char *pStr) {
sqlInfo
.
valid
=
false
;
goto
abort_parse
;
}
default:
Parse
(
pParser
,
t0
.
type
,
t0
,
&
sqlInfo
);
if
(
sqlInfo
.
valid
==
false
)
{
...
...
tests/script/general/parser/tagName_escape.sim
浏览文件 @
6beccecf
...
...
@@ -144,6 +144,25 @@ if $data30 != @456 123@ then
return -1
endi
##MODIFY TAG
sql alter stable stb0 add tag `key` binary(10)
sql alter stable stb0 add tag `value` nchar(10)
sql alter stable stb0 modify tag `key` binary(15)
sql alter stable stb0 modify tag `value` nchar(15)
sql describe stb0;
if $rows != 7 then
return -1
endi
if $data52 != 15 then
return -1
endi
if $data62 != 15 then
return -1
endi
##SET TAG
sql insert into ctb0 values (now, 1)
...
...
@@ -155,6 +174,7 @@ sql alter table ctb0 set tag `456 123`=2
#sql alter table ctb0 set tag `abc.123`=2
#change tag has bug when using dot in tagname
print ======================= test insert specific tags automatically create table
sql alter table ctb0 set tag `321`=2
...
...
@@ -184,3 +204,4 @@ if $data24 != NULL then
endi
system sh/exec.sh -n dnode1 -s stop -x SIGINT
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录