Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
e907d58d
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看板
提交
e907d58d
编写于
6月 07, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
差异文件
Merge branch '3.0' of
https://github.com/taosdata/TDengine
into feat/row_refact
上级
aa4e866a
f335ffe8
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
3323 addition
and
3308 deletion
+3323
-3308
source/libs/scalar/src/sclvector.c
source/libs/scalar/src/sclvector.c
+15
-4
source/libs/scalar/test/scalar/scalarTests.cpp
source/libs/scalar/test/scalar/scalarTests.cpp
+3301
-3301
tests/system-test/2-query/json_tag.py
tests/system-test/2-query/json_tag.py
+7
-3
未找到文件。
source/libs/scalar/src/sclvector.c
浏览文件 @
e907d58d
...
@@ -373,9 +373,6 @@ static FORCE_INLINE void ncharToVar(char* buf, SScalarParam* pOut, int32_t rowIn
...
@@ -373,9 +373,6 @@ static FORCE_INLINE void ncharToVar(char* buf, SScalarParam* pOut, int32_t rowIn
//TODO opt performance, tmp is not needed.
//TODO opt performance, tmp is not needed.
int32_t
vectorConvertFromVarData
(
const
SScalarParam
*
pIn
,
SScalarParam
*
pOut
,
int32_t
inType
,
int32_t
outType
)
{
int32_t
vectorConvertFromVarData
(
const
SScalarParam
*
pIn
,
SScalarParam
*
pOut
,
int32_t
inType
,
int32_t
outType
)
{
int32_t
bufSize
=
pIn
->
columnData
->
info
.
bytes
;
char
*
tmp
=
taosMemoryMalloc
(
bufSize
+
VARSTR_HEADER_SIZE
);
bool
vton
=
false
;
bool
vton
=
false
;
_bufConverteFunc
func
=
NULL
;
_bufConverteFunc
func
=
NULL
;
...
@@ -423,6 +420,12 @@ int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, in
...
@@ -423,6 +420,12 @@ int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, in
continue
;
continue
;
}
}
}
}
int32_t
bufSize
=
pIn
->
columnData
->
info
.
bytes
;
char
*
tmp
=
taosMemoryMalloc
(
varDataTLen
(
data
));
if
(
!
tmp
){
sclError
(
"out of memory in vectorConvertFromVarData"
);
return
TSDB_CODE_OUT_OF_MEMORY
;
}
if
(
vton
)
{
if
(
vton
)
{
memcpy
(
tmp
,
data
,
varDataTLen
(
data
));
memcpy
(
tmp
,
data
,
varDataTLen
(
data
));
}
else
{
}
else
{
...
@@ -444,9 +447,9 @@ int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, in
...
@@ -444,9 +447,9 @@ int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, in
}
}
(
*
func
)(
tmp
,
pOut
,
i
);
(
*
func
)(
tmp
,
pOut
,
i
);
taosMemoryFreeClear
(
tmp
);
}
}
taosMemoryFreeClear
(
tmp
);
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
...
@@ -1674,6 +1677,14 @@ void vectorNotNull(SScalarParam* pLeft, SScalarParam* pRight, SScalarParam *pOut
...
@@ -1674,6 +1677,14 @@ void vectorNotNull(SScalarParam* pLeft, SScalarParam* pRight, SScalarParam *pOut
void
vectorIsTrue
(
SScalarParam
*
pLeft
,
SScalarParam
*
pRight
,
SScalarParam
*
pOut
,
int32_t
_ord
)
{
void
vectorIsTrue
(
SScalarParam
*
pLeft
,
SScalarParam
*
pRight
,
SScalarParam
*
pOut
,
int32_t
_ord
)
{
vectorConvertImpl
(
pLeft
,
pOut
);
vectorConvertImpl
(
pLeft
,
pOut
);
for
(
int32_t
i
=
0
;
i
<
pOut
->
numOfRows
;
++
i
)
{
if
(
colDataIsNull_s
(
pOut
->
columnData
,
i
))
{
int8_t
v
=
0
;
colDataAppendInt8
(
pOut
->
columnData
,
i
,
&
v
);
colDataSetNotNull_f
(
pOut
->
columnData
->
nullbitmap
,
i
);
}
}
pOut
->
columnData
->
hasNull
=
false
;
}
}
STagVal
getJsonValue
(
char
*
json
,
char
*
key
,
bool
*
isExist
)
{
STagVal
getJsonValue
(
char
*
json
,
char
*
key
,
bool
*
isExist
)
{
...
...
source/libs/scalar/test/scalar/scalarTests.cpp
浏览文件 @
e907d58d
/*
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
*
* This program is free software: you can use, redistribute, and/or modify
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
* or later ("AGPL"), as published by the Free Software Foundation.
*
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
* FITNESS FOR A PARTICULAR PURPOSE.
*
*
* You should have received a copy of the GNU Affero General Public License
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
*/
#include <gtest/gtest.h>
#include <gtest/gtest.h>
#include <iostream>
#include <iostream>
...
@@ -1328,7 +1328,7 @@ TEST(columnTest, json_column_logic_op) {
...
@@ -1328,7 +1328,7 @@ TEST(columnTest, json_column_logic_op) {
printf
(
"--------------------json null---null {1, 8, 2, 2, 3, 0, 0, 0, 0}------------------
\n
"
);
printf
(
"--------------------json null---null {1, 8, 2, 2, 3, 0, 0, 0, 0}------------------
\n
"
);
key
=
"k3"
;
// (null is true) return NULL, so use DBL_MAX represent NULL
key
=
"k3"
;
// (null is true) return NULL, so use DBL_MAX represent NULL
double
eRes2
[
len
+
len1
]
=
{
false
,
false
,
false
,
false
,
false
,
false
,
true
,
false
,
DBL_MAX
,
false
,
false
,
false
,
false
};
bool
eRes2
[
len
+
len1
]
=
{
false
,
false
,
false
,
false
,
false
,
false
,
true
,
false
,
false
,
false
,
false
,
false
,
false
};
for
(
int
i
=
0
;
i
<
len
;
i
++
){
for
(
int
i
=
0
;
i
<
len
;
i
++
){
makeCalculate
(
row
,
key
,
TSDB_DATA_TYPE_INT
,
&
input
[
i
],
eRes2
[
i
],
op
[
i
],
false
);
makeCalculate
(
row
,
key
,
TSDB_DATA_TYPE_INT
,
&
input
[
i
],
eRes2
[
i
],
op
[
i
],
false
);
}
}
...
@@ -1456,7 +1456,7 @@ TEST(columnTest, json_column_logic_op) {
...
@@ -1456,7 +1456,7 @@ TEST(columnTest, json_column_logic_op) {
printf
(
"---------------------json not exist-- NULL {1, 8, 2, 2, 3, 0, 0, 0, 0}------------------
\n
"
);
printf
(
"---------------------json not exist-- NULL {1, 8, 2, 2, 3, 0, 0, 0, 0}------------------
\n
"
);
key
=
"k10"
;
// (NULL is true) return NULL, so use DBL_MAX represent NULL
key
=
"k10"
;
// (NULL is true) return NULL, so use DBL_MAX represent NULL
double
eRes9
[
len
+
len1
]
=
{
false
,
false
,
false
,
false
,
false
,
false
,
true
,
false
,
DBL_MAX
,
false
,
false
,
false
,
false
};
bool
eRes9
[
len
+
len1
]
=
{
false
,
false
,
false
,
false
,
false
,
false
,
true
,
false
,
false
,
false
,
false
,
false
,
false
};
for
(
int
i
=
0
;
i
<
len
;
i
++
){
for
(
int
i
=
0
;
i
<
len
;
i
++
){
makeCalculate
(
row
,
key
,
TSDB_DATA_TYPE_INT
,
&
input
[
i
],
eRes9
[
i
],
op
[
i
],
false
);
makeCalculate
(
row
,
key
,
TSDB_DATA_TYPE_INT
,
&
input
[
i
],
eRes9
[
i
],
op
[
i
],
false
);
}
}
...
@@ -2040,7 +2040,7 @@ void scltMakeDataBlock(SScalarParam **pInput, int32_t type, void *pVal, int32_t
...
@@ -2040,7 +2040,7 @@ void scltMakeDataBlock(SScalarParam **pInput, int32_t type, void *pVal, int32_t
colDataAppend
(
input
->
columnData
,
i
,
(
const
char
*
)
pVal
,
false
);
colDataAppend
(
input
->
columnData
,
i
,
(
const
char
*
)
pVal
,
false
);
}
}
}
else
{
}
else
{
// memset(input->data, 0, num * bytes);
// memset(input->data, 0, num * bytes);
}
}
*
pInput
=
input
;
*
pInput
=
input
;
...
...
tests/system-test/2-query/json_tag.py
浏览文件 @
e907d58d
...
@@ -109,9 +109,6 @@ class TDTestCase:
...
@@ -109,9 +109,6 @@ class TDTestCase:
# print("============== STEP 3 ===== query table")
# print("============== STEP 3 ===== query table")
# # test error syntax
# # test error syntax
tdSql
.
error
(
"select * from jsons1 where jtag->tag1='beijing'"
)
tdSql
.
error
(
"select * from jsons1 where jtag->tag1='beijing'"
)
#tdSql.error("select * from jsons1 where jtag->'location'")
#tdSql.error("select * from jsons1 where jtag->''")
#tdSql.error("select * from jsons1 where jtag->''=9")
tdSql
.
error
(
"select -> from jsons1"
)
tdSql
.
error
(
"select -> from jsons1"
)
tdSql
.
error
(
"select * from jsons1 where contains"
)
tdSql
.
error
(
"select * from jsons1 where contains"
)
tdSql
.
error
(
"select * from jsons1 where jtag->"
)
tdSql
.
error
(
"select * from jsons1 where jtag->"
)
...
@@ -341,6 +338,13 @@ class TDTestCase:
...
@@ -341,6 +338,13 @@ class TDTestCase:
# tdSql.checkRows(3)
# tdSql.checkRows(3)
# tdSql.query("select * from jsons1 where jtag->'tag1' between 'femail' and 'beijing'")
# tdSql.query("select * from jsons1 where jtag->'tag1' between 'femail' and 'beijing'")
# tdSql.checkRows(2)
# tdSql.checkRows(2)
# test is true
tdSql
.
query
(
"select * from jsons1 where jtag->'location'"
)
tdSql
.
checkRows
(
0
)
tdSql
.
query
(
"select * from jsons1 where jtag->'tag1'"
)
tdSql
.
checkRows
(
3
)
#
#
# # test with tbname/normal column
# # test with tbname/normal column
tdSql
.
query
(
"select * from jsons1 where tbname = 'jsons1_1'"
)
tdSql
.
query
(
"select * from jsons1 where tbname = 'jsons1_1'"
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录