Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
0bef2830
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看板
提交
0bef2830
编写于
12月 15, 2022
作者:
dengyihao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add/drop dynamic idx
上级
0bea3475
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
65 addition
and
45 deletion
+65
-45
source/dnode/vnode/src/meta/metaTable.c
source/dnode/vnode/src/meta/metaTable.c
+65
-45
未找到文件。
source/dnode/vnode/src/meta/metaTable.c
浏览文件 @
0bef2830
...
@@ -635,31 +635,38 @@ static int metaDropTableByUid(SMeta *pMeta, tb_uid_t uid, int *type) {
...
@@ -635,31 +635,38 @@ static int metaDropTableByUid(SMeta *pMeta, tb_uid_t uid, int *type) {
tDecoderInit
(
&
tdc
,
tData
,
tLen
);
tDecoderInit
(
&
tdc
,
tData
,
tLen
);
metaDecodeEntry
(
&
tdc
,
&
stbEntry
);
metaDecodeEntry
(
&
tdc
,
&
stbEntry
);
const
SSchema
*
pTagColumn
=
&
stbEntry
.
stbEntry
.
schemaTag
.
pSchema
[
0
];
if
(
pTagColumn
->
type
==
TSDB_DATA_TYPE_JSON
)
{
SSchema
*
pTagColumn
=
NULL
;
SSchemaWrapper
*
pTagSchema
=
&
stbEntry
.
stbEntry
.
schemaTag
;
if
(
pTagSchema
->
nCols
==
1
&&
pTagSchema
->
pSchema
[
0
].
type
==
TSDB_DATA_TYPE_JSON
)
{
pTagColumn
=
&
stbEntry
.
stbEntry
.
schemaTag
.
pSchema
[
0
];
metaDelJsonVarFromIdx
(
pMeta
,
&
e
,
pTagColumn
);
metaDelJsonVarFromIdx
(
pMeta
,
&
e
,
pTagColumn
);
}
else
{
}
else
{
STagIdxKey
*
pTagIdxKey
=
NULL
;
for
(
int
i
=
0
;
i
<
pTagSchema
->
nCols
;
i
++
)
{
int32_t
nTagIdxKey
;
pTagColumn
=
&
stbEntry
.
stbEntry
.
schemaTag
.
pSchema
[
i
];
if
(
!
IS_INDX_ON
(
pTagColumn
))
continue
;
const
void
*
pTagData
=
NULL
;
STagIdxKey
*
pTagIdxKey
=
NULL
;
int32_t
nTagData
=
0
;
int32_t
nTagIdxKey
;
STagVal
tagVal
=
{.
cid
=
pTagColumn
->
colId
};
const
void
*
pTagData
=
NULL
;
tTagGet
((
const
STag
*
)
e
.
ctbEntry
.
pTags
,
&
tagVal
);
int32_t
nTagData
=
0
;
if
(
IS_VAR_DATA_TYPE
(
pTagColumn
->
type
))
{
pTagData
=
tagVal
.
pData
;
STagVal
tagVal
=
{.
cid
=
pTagColumn
->
colId
};
nTagData
=
(
int32_t
)
tagVal
.
nData
;
tTagGet
((
const
STag
*
)
e
.
ctbEntry
.
pTags
,
&
tagVal
);
}
else
{
if
(
IS_VAR_DATA_TYPE
(
pTagColumn
->
type
))
{
pTagData
=
&
(
tagVal
.
i64
);
pTagData
=
tagVal
.
pData
;
nTagData
=
tDataTypes
[
pTagColumn
->
type
].
bytes
;
nTagData
=
(
int32_t
)
tagVal
.
nData
;
}
}
else
{
pTagData
=
&
(
tagVal
.
i64
);
if
(
metaCreateTagIdxKey
(
e
.
ctbEntry
.
suid
,
pTagColumn
->
colId
,
pTagData
,
nTagData
,
pTagColumn
->
type
,
uid
,
nTagData
=
tDataTypes
[
pTagColumn
->
type
].
bytes
;
&
pTagIdxKey
,
&
nTagIdxKey
)
==
0
)
{
}
tdbTbDelete
(
pMeta
->
pTagIdx
,
pTagIdxKey
,
nTagIdxKey
,
pMeta
->
txn
);
if
(
metaCreateTagIdxKey
(
e
.
ctbEntry
.
suid
,
pTagColumn
->
colId
,
pTagData
,
nTagData
,
pTagColumn
->
type
,
uid
,
&
pTagIdxKey
,
&
nTagIdxKey
)
==
0
)
{
tdbTbDelete
(
pMeta
->
pTagIdx
,
pTagIdxKey
,
nTagIdxKey
,
pMeta
->
txn
);
}
metaDestroyTagIdxKey
(
pTagIdxKey
);
}
}
metaDestroyTagIdxKey
(
pTagIdxKey
);
}
}
tDecoderClear
(
&
tdc
);
tDecoderClear
(
&
tdc
);
}
}
...
@@ -1379,6 +1386,12 @@ static int metaDropTagIndex(SMeta *pMeta, int64_t version, SVAlterTbReq *pAlterT
...
@@ -1379,6 +1386,12 @@ static int metaDropTagIndex(SMeta *pMeta, int64_t version, SVAlterTbReq *pAlterT
terrno
=
TSDB_CODE_VND_COL_NOT_EXISTS
;
terrno
=
TSDB_CODE_VND_COL_NOT_EXISTS
;
goto
_err
;
goto
_err
;
}
}
if
(
IS_INDX_ON
(
pCol
))
{
terrno
=
TSDB_CODE_VND_COL_ALREADY_EXISTS
;
goto
_err
;
}
SArray
*
tagIdxList
=
taosArrayInit
(
512
,
sizeof
(
SMetaPair
));
SArray
*
tagIdxList
=
taosArrayInit
(
512
,
sizeof
(
SMetaPair
));
TBC
*
pTagIdxc
=
NULL
;
TBC
*
pTagIdxc
=
NULL
;
...
@@ -1408,7 +1421,7 @@ static int metaDropTagIndex(SMeta *pMeta, int64_t version, SVAlterTbReq *pAlterT
...
@@ -1408,7 +1421,7 @@ static int metaDropTagIndex(SMeta *pMeta, int64_t version, SVAlterTbReq *pAlterT
taosArrayDestroy
(
tagIdxList
);
taosArrayDestroy
(
tagIdxList
);
//
drop index
//
set pCol->flags; INDEX_ON
return
0
;
return
0
;
_err:
_err:
return
-
1
;
return
-
1
;
...
@@ -1590,36 +1603,43 @@ static int metaUpdateTagIdx(SMeta *pMeta, const SMetaEntry *pCtbEntry) {
...
@@ -1590,36 +1603,43 @@ static int metaUpdateTagIdx(SMeta *pMeta, const SMetaEntry *pCtbEntry) {
goto
end
;
goto
end
;
}
}
pTagColumn
=
&
stbEntry
.
stbEntry
.
schemaTag
.
pSchema
[
0
];
SSchemaWrapper
*
pTagSchema
=
&
stbEntry
.
stbEntry
.
schemaTag
;
if
(
pTagSchema
->
nCols
==
1
&&
pTagSchema
->
pSchema
[
0
].
type
==
TSDB_DATA_TYPE_JSON
)
{
STagVal
tagVal
=
{.
cid
=
pTagColumn
->
colId
};
pTagColumn
=
&
stbEntry
.
stbEntry
.
schemaTag
.
pSchema
[
0
];
STagVal
tagVal
=
{.
cid
=
pTagColumn
->
colId
};
if
(
pTagColumn
->
type
!=
TSDB_DATA_TYPE_JSON
)
{
tTagGet
((
const
STag
*
)
pCtbEntry
->
ctbEntry
.
pTags
,
&
tagVal
);
if
(
IS_VAR_DATA_TYPE
(
pTagColumn
->
type
))
{
pTagData
=
tagVal
.
pData
;
nTagData
=
(
int32_t
)
tagVal
.
nData
;
}
else
{
pTagData
=
&
(
tagVal
.
i64
);
nTagData
=
tDataTypes
[
pTagColumn
->
type
].
bytes
;
}
}
else
{
// pTagData = pCtbEntry->ctbEntry.pTags;
// nTagData = ((const STag *)pCtbEntry->ctbEntry.pTags)->len;
pTagData
=
pCtbEntry
->
ctbEntry
.
pTags
;
pTagData
=
pCtbEntry
->
ctbEntry
.
pTags
;
nTagData
=
((
const
STag
*
)
pCtbEntry
->
ctbEntry
.
pTags
)
->
len
;
nTagData
=
((
const
STag
*
)
pCtbEntry
->
ctbEntry
.
pTags
)
->
len
;
ret
=
metaSaveJsonVarToIdx
(
pMeta
,
pCtbEntry
,
pTagColumn
);
ret
=
metaSaveJsonVarToIdx
(
pMeta
,
pCtbEntry
,
pTagColumn
);
goto
end
;
goto
end
;
}
}
else
{
if
(
pTagData
!=
NULL
)
{
for
(
int
i
=
0
;
i
<
pTagSchema
->
nCols
;
i
++
)
{
if
(
metaCreateTagIdxKey
(
pCtbEntry
->
ctbEntry
.
suid
,
pTagColumn
->
colId
,
pTagData
,
nTagData
,
pTagColumn
->
type
,
pTagColumn
=
&
pTagSchema
->
pSchema
[
i
];
pCtbEntry
->
uid
,
&
pTagIdxKey
,
&
nTagIdxKey
)
<
0
)
{
if
(
!
IS_INDX_ON
(
pTagColumn
))
continue
;
ret
=
-
1
;
goto
end
;
STagVal
tagVal
=
{.
cid
=
pTagColumn
->
colId
};
tTagGet
((
const
STag
*
)
pCtbEntry
->
ctbEntry
.
pTags
,
&
tagVal
);
if
(
IS_VAR_DATA_TYPE
(
pTagColumn
->
type
))
{
pTagData
=
tagVal
.
pData
;
nTagData
=
(
int32_t
)
tagVal
.
nData
;
}
else
{
pTagData
=
&
(
tagVal
.
i64
);
nTagData
=
tDataTypes
[
pTagColumn
->
type
].
bytes
;
}
if
(
pTagData
!=
NULL
)
{
if
(
metaCreateTagIdxKey
(
pCtbEntry
->
ctbEntry
.
suid
,
pTagColumn
->
colId
,
pTagData
,
nTagData
,
pTagColumn
->
type
,
pCtbEntry
->
uid
,
&
pTagIdxKey
,
&
nTagIdxKey
)
<
0
)
{
ret
=
-
1
;
goto
end
;
}
tdbTbUpsert
(
pMeta
->
pTagIdx
,
pTagIdxKey
,
nTagIdxKey
,
NULL
,
0
,
pMeta
->
txn
);
}
metaDestroyTagIdxKey
(
pTagIdxKey
);
}
}
tdbTbUpsert
(
pMeta
->
pTagIdx
,
pTagIdxKey
,
nTagIdxKey
,
NULL
,
0
,
pMeta
->
txn
);
}
}
end:
end:
metaDestroyTagIdxKey
(
pTagIdxKey
);
//
metaDestroyTagIdxKey(pTagIdxKey);
tDecoderClear
(
&
dc
);
tDecoderClear
(
&
dc
);
tdbFree
(
pData
);
tdbFree
(
pData
);
return
ret
;
return
ret
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录