Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
8f7bd35a
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
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看板
提交
8f7bd35a
编写于
4月 23, 2020
作者:
weixin_48148422
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
TD-97: tbname criteria with other criteria is done
上级
5741959c
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
29 addition
and
14 deletion
+29
-14
src/query/src/qast.c
src/query/src/qast.c
+7
-3
src/tsdb/src/tsdbRead.c
src/tsdb/src/tsdbRead.c
+17
-7
src/util/src/tarray.c
src/util/src/tarray.c
+3
-2
src/util/src/tcompare.c
src/util/src/tcompare.c
+2
-2
未找到文件。
src/query/src/qast.c
浏览文件 @
8f7bd35a
...
...
@@ -783,13 +783,17 @@ static void exprTreeTraverseImpl(tExprNode *pExpr, SArray *pResult, SBinaryFilte
taosArrayCopy
(
pResult
,
array
);
}
static
void
tSQLBinaryTraverseOnSkipList
(
tExprNode
*
pExpr
,
SArray
*
pResult
,
SSkipList
*
pSkipList
,
SBinaryFilterSupp
*
param
)
{
static
void
tSQLBinaryTraverseOnSkipList
(
tExprNode
*
pExpr
,
SArray
*
pResult
,
SSkipList
*
pSkipList
,
SBinaryFilterSupp
*
param
)
{
SSkipListIterator
*
iter
=
tSkipListCreateIter
(
pSkipList
);
while
(
tSkipListIterNext
(
iter
))
{
SSkipListNode
*
pNode
=
tSkipListIterGet
(
iter
);
if
(
filterItem
(
pExpr
,
pNode
,
param
))
{
taosArrayPush
(
pResult
,
SL_GET_NODE_DATA
(
pNode
));
}
...
...
src/tsdb/src/tsdbRead.c
浏览文件 @
8f7bd35a
...
...
@@ -1357,16 +1357,26 @@ bool tSkipListNodeFilterCallback(const void* pNode, void* param) {
STable
*
pTable
=
*
(
STable
**
)(
SL_GET_NODE_DATA
((
SSkipListNode
*
)
pNode
));
char
*
val
=
dataRowTuple
(
pTable
->
tagVal
);
// todo not only the first column
char
*
val
=
NULL
;
int8_t
type
=
pInfo
->
sch
.
type
;
if
(
pInfo
->
colIndex
==
TSDB_TBNAME_COLUMN_INDEX
)
{
val
=
pTable
->
name
;
type
=
TSDB_DATA_TYPE_BINARY
;
}
else
{
val
=
dataRowTuple
(
pTable
->
tagVal
);
// todo not only the first column
}
int32_t
ret
=
0
;
if
(
pInfo
->
q
.
nType
==
TSDB_DATA_TYPE_BINARY
||
pInfo
->
q
.
nType
==
TSDB_DATA_TYPE_NCHAR
)
{
ret
=
pInfo
->
compare
(
val
,
pInfo
->
q
.
pz
);
if
(
type
==
TSDB_DATA_TYPE_BINARY
||
type
==
TSDB_DATA_TYPE_NCHAR
)
{
if
(
pInfo
->
optr
==
TSDB_RELATION_IN
)
{
ret
=
pInfo
->
compare
(
val
,
pInfo
->
q
.
arr
);
}
else
{
ret
=
pInfo
->
compare
(
val
,
pInfo
->
q
.
pz
);
}
}
else
{
tVariant
t
=
{
0
};
tVariantCreateFromBinary
(
&
t
,
val
,
(
uint32_t
)
pInfo
->
sch
.
bytes
,
type
);
ret
=
pInfo
->
compare
(
&
t
.
i64Key
,
&
pInfo
->
q
.
i64Key
);
}
...
...
@@ -1393,7 +1403,7 @@ bool tSkipListNodeFilterCallback(const void* pNode, void* param) {
return
ret
==
0
;
}
case
TSDB_RELATION_IN
:
{
return
ret
==
1
;
}
default:
...
...
@@ -1474,8 +1484,8 @@ int32_t tsdbQueryByTagsCond(
expr
=
calloc
(
1
,
sizeof
(
tExprNode
));
expr
->
nodeType
=
TSQL_NODE_EXPR
;
expr
->
_node
.
optr
=
tagNameRelType
;
expr
->
_node
.
pLeft
=
t
bname
Expr
;
expr
->
_node
.
pRight
=
t
ag
Expr
;
expr
->
_node
.
pLeft
=
t
ag
Expr
;
expr
->
_node
.
pRight
=
t
bname
Expr
;
}
}
...
...
src/util/src/tarray.c
浏览文件 @
8f7bd35a
...
...
@@ -77,10 +77,11 @@ void* taosArrayPush(SArray* pArray, void* pData) {
}
void
*
taosArrayPop
(
SArray
*
pArray
)
{
if
(
pArray
==
NULL
||
pArray
->
size
==
0
)
{
assert
(
pArray
!=
NULL
);
if
(
pArray
->
size
==
0
)
{
return
NULL
;
}
pArray
->
size
-=
1
;
return
TARRAY_GET_ELEM
(
pArray
,
pArray
->
size
);
}
...
...
src/util/src/tcompare.c
浏览文件 @
8f7bd35a
...
...
@@ -215,7 +215,7 @@ static UNUSED_FUNC int32_t compareStrPatternComp(const void* pLeft, const void*
return
(
ret
==
TSDB_PATTERN_MATCH
)
?
0
:
1
;
}
static
int32_t
compare
StrInList
(
const
void
*
pLeft
,
const
void
*
pRight
)
{
static
int32_t
compare
FindStrInArray
(
const
void
*
pLeft
,
const
void
*
pRight
)
{
const
SArray
*
arr
=
(
const
SArray
*
)
pRight
;
return
taosArraySearchString
(
arr
,
pLeft
)
==
NULL
?
0
:
1
;
}
...
...
@@ -277,7 +277,7 @@ __compar_fn_t getComparFunc(int32_t type, int32_t filterDataType, int32_t optr)
}
else
if
(
optr
==
TSDB_RELATION_IN
)
{
assert
(
filterDataType
==
TSDB_DATA_TYPE_ARRAY
);
comparFn
=
compare
StrInList
;
comparFn
=
compare
FindStrInArray
;
}
else
{
/* normal relational comparFn */
assert
(
filterDataType
==
TSDB_DATA_TYPE_BINARY
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录