Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
4c34c53b
T
TDengine
项目概览
慢慢CG
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
4c34c53b
编写于
7月 07, 2021
作者:
haoranc
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'develop' of github.com:taosdata/TDengine into release/ver-2.1.4.1
上级
ee290fe2
ce9119b3
变更
21
展开全部
隐藏空白更改
内联
并排
Showing
21 changed file
with
362 addition
and
258 deletion
+362
-258
packaging/release.sh
packaging/release.sh
+4
-4
packaging/tools/install.sh
packaging/tools/install.sh
+6
-2
packaging/tools/install_power.sh
packaging/tools/install_power.sh
+6
-2
packaging/tools/install_tq.sh
packaging/tools/install_tq.sh
+6
-2
packaging/tools/makepkg.sh
packaging/tools/makepkg.sh
+2
-2
packaging/tools/makepkg_power.sh
packaging/tools/makepkg_power.sh
+21
-21
packaging/tools/makepkg_tq.sh
packaging/tools/makepkg_tq.sh
+15
-15
src/client/inc/tscUtil.h
src/client/inc/tscUtil.h
+1
-1
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+216
-133
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+12
-11
src/common/inc/tname.h
src/common/inc/tname.h
+1
-1
src/common/src/tglobal.c
src/common/src/tglobal.c
+9
-9
src/inc/taosmsg.h
src/inc/taosmsg.h
+1
-1
src/mnode/src/mnodeTable.c
src/mnode/src/mnodeTable.c
+18
-16
src/query/inc/qSqlparser.h
src/query/inc/qSqlparser.h
+9
-7
src/query/inc/sql.y
src/query/inc/sql.y
+1
-1
src/query/src/qPlan.c
src/query/src/qPlan.c
+2
-1
src/query/src/qSqlParser.c
src/query/src/qSqlParser.c
+27
-27
src/query/src/sql.c
src/query/src/sql.c
+1
-1
src/util/src/tlog.c
src/util/src/tlog.c
+1
-1
tests/script/general/parser/having.sim
tests/script/general/parser/having.sim
+3
-0
未找到文件。
packaging/release.sh
浏览文件 @
4c34c53b
...
...
@@ -204,7 +204,7 @@ else
exit
1
fi
make
-j8
make
cd
${
curr_dir
}
...
...
@@ -246,15 +246,15 @@ if [ "$osType" != "Darwin" ]; then
cd
${
script_dir
}
/tools
if
[[
"
$dbName
"
==
"taos"
]]
;
then
${
csudo
}
./makepkg.sh
${
compile_dir
}
${
verNumber
}
"
${
build_time
}
"
${
cpuType
}
${
osType
}
${
verMode
}
${
verType
}
${
pagMode
}
${
csudo
}
./makepkg.sh
${
compile_dir
}
${
verNumber
}
"
${
build_time
}
"
${
cpuType
}
${
osType
}
${
verMode
}
${
verType
}
${
pagMode
}
${
verNumberComp
}
${
csudo
}
./makeclient.sh
${
compile_dir
}
${
verNumber
}
"
${
build_time
}
"
${
cpuType
}
${
osType
}
${
verMode
}
${
verType
}
${
pagMode
}
${
csudo
}
./makearbi.sh
${
compile_dir
}
${
verNumber
}
"
${
build_time
}
"
${
cpuType
}
${
osType
}
${
verMode
}
${
verType
}
${
pagMode
}
elif
[[
"
$dbName
"
==
"tq"
]]
;
then
${
csudo
}
./makepkg_tq.sh
${
compile_dir
}
${
verNumber
}
"
${
build_time
}
"
${
cpuType
}
${
osType
}
${
verMode
}
${
verType
}
${
pagMode
}
${
dbName
}
${
csudo
}
./makepkg_tq.sh
${
compile_dir
}
${
verNumber
}
"
${
build_time
}
"
${
cpuType
}
${
osType
}
${
verMode
}
${
verType
}
${
pagMode
}
${
dbName
}
${
verNumberComp
}
${
csudo
}
./makeclient_tq.sh
${
compile_dir
}
${
verNumber
}
"
${
build_time
}
"
${
cpuType
}
${
osType
}
${
verMode
}
${
verType
}
${
pagMode
}
${
dbName
}
${
csudo
}
./makearbi_tq.sh
${
compile_dir
}
${
verNumber
}
"
${
build_time
}
"
${
cpuType
}
${
osType
}
${
verMode
}
${
verType
}
${
pagMode
}
else
${
csudo
}
./makepkg_power.sh
${
compile_dir
}
${
verNumber
}
"
${
build_time
}
"
${
cpuType
}
${
osType
}
${
verMode
}
${
verType
}
${
pagMode
}
${
dbName
}
${
csudo
}
./makepkg_power.sh
${
compile_dir
}
${
verNumber
}
"
${
build_time
}
"
${
cpuType
}
${
osType
}
${
verMode
}
${
verType
}
${
pagMode
}
${
dbName
}
${
verNumberComp
}
${
csudo
}
./makeclient_power.sh
${
compile_dir
}
${
verNumber
}
"
${
build_time
}
"
${
cpuType
}
${
osType
}
${
verMode
}
${
verType
}
${
pagMode
}
${
dbName
}
${
csudo
}
./makearbi_power.sh
${
compile_dir
}
${
verNumber
}
"
${
build_time
}
"
${
cpuType
}
${
osType
}
${
verMode
}
${
verType
}
${
pagMode
}
fi
...
...
packaging/tools/install.sh
浏览文件 @
4c34c53b
...
...
@@ -772,9 +772,13 @@ vercomp () {
function
is_version_compatible
()
{
curr_version
=
$(
${
bin_dir
}
/taosd
-V
|
head
-1
|
cut
-d
' '
-f
3
)
curr_version
=
`
ls
${
script_dir
}
/driver/libtaos.so
*
|cut
-d
'.'
-f
3-6
`
min_compatible_version
=
$(
${
script_dir
}
/bin/taosd
-V
|
head
-1
|
cut
-d
' '
-f
5
)
if
[
-f
${
script_dir
}
/driver/vercomp.txt
]
;
then
min_compatible_version
=
`
cat
${
script_dir
}
/driver/vercomp.txt
`
else
min_compatible_version
=
$(
${
script_dir
}
/bin/tqd
-V
|
head
-1
|
cut
-d
' '
-f
5
)
fi
vercomp
$curr_version
$min_compatible_version
case
$?
in
...
...
packaging/tools/install_power.sh
浏览文件 @
4c34c53b
...
...
@@ -741,9 +741,13 @@ vercomp () {
function
is_version_compatible
()
{
curr_version
=
$(
${
bin_dir
}
/powerd
-V
|
head
-1
|
cut
-d
' '
-f
3
)
curr_version
=
`
ls
${
script_dir
}
/driver/libtaos.so
*
|cut
-d
'.'
-f
3-6
`
min_compatible_version
=
$(
${
script_dir
}
/bin/powerd
-V
|
head
-1
|
cut
-d
' '
-f
5
)
if
[
-f
${
script_dir
}
/driver/vercomp.txt
]
;
then
min_compatible_version
=
`
cat
${
script_dir
}
/driver/vercomp.txt
`
else
min_compatible_version
=
$(
${
script_dir
}
/bin/tqd
-V
|
head
-1
|
cut
-d
' '
-f
5
)
fi
vercomp
$curr_version
$min_compatible_version
case
$?
in
...
...
packaging/tools/install_tq.sh
浏览文件 @
4c34c53b
...
...
@@ -741,9 +741,13 @@ vercomp () {
function
is_version_compatible
()
{
curr_version
=
$(
${
bin_dir
}
/tqd
-V
|
head
-1
|
cut
-d
' '
-f
3
)
curr_version
=
`
ls
${
script_dir
}
/driver/libtaos.so
*
|cut
-d
'.'
-f
3-6
`
min_compatible_version
=
$(
${
script_dir
}
/bin/tqd
-V
|
head
-1
|
cut
-d
' '
-f
5
)
if
[
-f
${
script_dir
}
/driver/vercomp.txt
]
;
then
min_compatible_version
=
`
cat
${
script_dir
}
/driver/vercomp.txt
`
else
min_compatible_version
=
$(
${
script_dir
}
/bin/tqd
-V
|
head
-1
|
cut
-d
' '
-f
5
)
fi
vercomp
$curr_version
$min_compatible_version
case
$?
in
...
...
packaging/tools/makepkg.sh
浏览文件 @
4c34c53b
...
...
@@ -14,6 +14,7 @@ osType=$5
verMode
=
$6
verType
=
$7
pagMode
=
$8
versionComp
=
$9
script_dir
=
"
$(
dirname
$(
readlink
-f
$0
))
"
top_dir
=
"
$(
readlink
-f
${
script_dir
}
/../..
)
"
...
...
@@ -175,8 +176,7 @@ if [[ "$pagMode" != "lite" ]] && [[ "$cpuType" != "aarch32" ]]; then
cp
-r
${
examples_dir
}
/C#
${
install_dir
}
/examples
fi
# Copy driver
mkdir
-p
${
install_dir
}
/driver
cp
${
lib_files
}
${
install_dir
}
/driver
mkdir
-p
${
install_dir
}
/driver
&&
cp
${
lib_files
}
${
install_dir
}
/driver
&&
echo
"
${
versionComp
}
"
>
${
install_dir
}
/driver/vercomp.txt
# Copy connector
connector_dir
=
"
${
code_dir
}
/connector"
...
...
packaging/tools/makepkg_power.sh
浏览文件 @
4c34c53b
...
...
@@ -14,6 +14,7 @@ osType=$5
verMode
=
$6
verType
=
$7
pagMode
=
$8
versionComp
=
$9
script_dir
=
"
$(
dirname
$(
readlink
-f
$0
))
"
top_dir
=
"
$(
readlink
-f
${
script_dir
}
/../..
)
"
...
...
@@ -32,10 +33,10 @@ fi
# Directories and files.
#if [ "$pagMode" == "lite" ]; then
# strip ${build_dir}/bin/taosd
# strip ${build_dir}/bin/taosd
# strip ${build_dir}/bin/taos
# bin_files="${build_dir}/bin/powerd ${build_dir}/bin/power ${script_dir}/remove_power.sh"
#else
#else
# bin_files="${build_dir}/bin/powerd ${build_dir}/bin/power ${build_dir}/bin/powerdemo ${build_dir}/bin/tarbitrator ${script_dir}/remove_power.sh\
# ${script_dir}/set_core.sh ${script_dir}/startPre.sh ${script_dir}/taosd-dump-cfg.gdb"
#fi
...
...
@@ -70,19 +71,19 @@ mkdir -p ${install_dir}/cfg && cp ${cfg_dir}/taos.cfg ${install_dir}/cfg/taos.cf
#mkdir -p ${install_dir}/bin && cp ${bin_files} ${install_dir}/bin && chmod a+x ${install_dir}/bin/* || :
mkdir
-p
${
install_dir
}
/bin
if
[
"
$pagMode
"
==
"lite"
]
;
then
strip
${
build_dir
}
/bin/taosd
strip
${
build_dir
}
/bin/taosd
strip
${
build_dir
}
/bin/taos
# bin_files="${build_dir}/bin/powerd ${build_dir}/bin/power ${script_dir}/remove_power.sh"
cp
${
build_dir
}
/bin/taos
${
install_dir
}
/bin/power
cp
${
build_dir
}
/bin/taosd
${
install_dir
}
/bin/powerd
cp
${
script_dir
}
/remove_power.sh
${
install_dir
}
/bin
else
else
# bin_files="${build_dir}/bin/powerd ${build_dir}/bin/power ${build_dir}/bin/powerdemo ${build_dir}/bin/tarbitrator ${script_dir}/remove_power.sh ${script_dir}/set_core.sh"
cp
${
build_dir
}
/bin/taos
${
install_dir
}
/bin/power
cp
${
build_dir
}
/bin/taosd
${
install_dir
}
/bin/powerd
cp
${
script_dir
}
/remove_power.sh
${
install_dir
}
/bin
cp
${
build_dir
}
/bin/taosdemo
${
install_dir
}
/bin/powerdemo
cp
${
build_dir
}
/bin/taosdump
${
install_dir
}
/bin/powerdump
cp
${
build_dir
}
/bin/taosdemo
${
install_dir
}
/bin/powerdemo
cp
${
build_dir
}
/bin/taosdump
${
install_dir
}
/bin/powerdump
cp
${
build_dir
}
/bin/tarbitrator
${
install_dir
}
/bin
cp
${
script_dir
}
/set_core.sh
${
install_dir
}
/bin
cp
${
script_dir
}
/get_client.sh
${
install_dir
}
/bin
...
...
@@ -99,14 +100,14 @@ mkdir -p ${install_dir}/init.d && cp ${init_file_tarbitrator_rpm} ${install_dir}
if
[
"
$verMode
"
==
"cluster"
]
;
then
sed
's/verMode=edge/verMode=cluster/g'
${
install_dir
}
/bin/remove_power.sh
>>
remove_power_temp.sh
mv
remove_power_temp.sh
${
install_dir
}
/bin/remove_power.sh
mkdir
-p
${
install_dir
}
/nginxd
&&
cp
-r
${
nginx_dir
}
/
*
${
install_dir
}
/nginxd
cp
${
nginx_dir
}
/png/taos.png
${
install_dir
}
/nginxd/admin/images/taos.png
rm
-rf
${
install_dir
}
/nginxd/png
sed
-i
"s/TDengine/PowerDB/g"
${
install_dir
}
/nginxd/admin/
*
.html
sed
-i
"s/TDengine/PowerDB/g"
${
install_dir
}
/nginxd/admin/
*
.html
sed
-i
"s/TDengine/PowerDB/g"
${
install_dir
}
/nginxd/admin/js/
*
.js
sed
-i
'/dataDir/ {s/taos/power/g}'
${
install_dir
}
/cfg/taos.cfg
sed
-i
'/logDir/ {s/taos/power/g}'
${
install_dir
}
/cfg/taos.cfg
sed
-i
"s/TDengine/PowerDB/g"
${
install_dir
}
/cfg/taos.cfg
...
...
@@ -149,17 +150,16 @@ sed -i '/root/ {s/taosdata/powerdb/g}' ${install_dir}/examples/c/*.c
if
[[
"
$pagMode
"
!=
"lite"
]]
&&
[[
"
$cpuType
"
!=
"aarch32"
]]
;
then
cp
-r
${
examples_dir
}
/JDBC
${
install_dir
}
/examples
cp
-r
${
examples_dir
}
/matlab
${
install_dir
}
/examples
sed
-i
'/password/ {s/taosdata/powerdb/g}'
${
install_dir
}
/examples/matlab/TDengineDemo.m
sed
-i
'/password/ {s/taosdata/powerdb/g}'
${
install_dir
}
/examples/matlab/TDengineDemo.m
cp
-r
${
examples_dir
}
/python
${
install_dir
}
/examples
sed
-i
'/password/ {s/taosdata/powerdb/g}'
${
install_dir
}
/examples/python/read_example.py
sed
-i
'/password/ {s/taosdata/powerdb/g}'
${
install_dir
}
/examples/python/read_example.py
cp
-r
${
examples_dir
}
/R
${
install_dir
}
/examples
sed
-i
'/password/ {s/taosdata/powerdb/g}'
${
install_dir
}
/examples/R/command.txt
cp
-r
${
examples_dir
}
/go
${
install_dir
}
/examples
sed
-i
'/password/ {s/taosdata/powerdb/g}'
${
install_dir
}
/examples/R/command.txt
cp
-r
${
examples_dir
}
/go
${
install_dir
}
/examples
sed
-i
'/root/ {s/taosdata/powerdb/g}'
${
install_dir
}
/examples/go/taosdemo.go
fi
# Copy driver
mkdir
-p
${
install_dir
}
/driver
cp
${
lib_files
}
${
install_dir
}
/driver
mkdir
-p
${
install_dir
}
/driver
&&
cp
${
lib_files
}
${
install_dir
}
/driver
&&
echo
"
${
versionComp
}
"
>
${
install_dir
}
/driver/vercomp.txt
# Copy connector
connector_dir
=
"
${
code_dir
}
/connector"
...
...
@@ -178,11 +178,11 @@ if [[ "$pagMode" != "lite" ]] && [[ "$cpuType" != "aarch32" ]]; then
echo
"WARNING: go connector not found, please check if want to use it!"
fi
cp
-r
${
connector_dir
}
/python
${
install_dir
}
/connector/
sed
-i
'/password/ {s/taosdata/powerdb/g}'
${
install_dir
}
/connector/python/taos/cinterface.py
sed
-i
'/password/ {s/taosdata/powerdb/g}'
${
install_dir
}
/connector/python/taos/subscription.py
sed
-i
'/self._password/ {s/taosdata/powerdb/g}'
${
install_dir
}
/connector/python/taos/connection.py
fi
# Copy release note
...
...
@@ -190,7 +190,7 @@ fi
# exit 1
cd
${
release_dir
}
cd
${
release_dir
}
if
[
"
$verMode
"
==
"cluster"
]
;
then
pkg_name
=
${
install_dir
}
-
${
osType
}
-
${
cpuType
}
...
...
@@ -207,8 +207,8 @@ fi
if
[
"
$verType
"
==
"beta"
]
;
then
pkg_name
=
${
pkg_name
}
-
${
verType
}
elif
[
"
$verType
"
==
"stable"
]
;
then
pkg_name
=
${
pkg_name
}
elif
[
"
$verType
"
==
"stable"
]
;
then
pkg_name
=
${
pkg_name
}
else
echo
"unknow verType, nor stabel or beta"
exit
1
...
...
packaging/tools/makepkg_tq.sh
浏览文件 @
4c34c53b
...
...
@@ -14,6 +14,7 @@ osType=$5
verMode
=
$6
verType
=
$7
pagMode
=
$8
versionComp
=
$9
script_dir
=
"
$(
dirname
$(
readlink
-f
$0
))
"
top_dir
=
"
$(
readlink
-f
${
script_dir
}
/../..
)
"
...
...
@@ -32,10 +33,10 @@ fi
# Directories and files.
#if [ "$pagMode" == "lite" ]; then
# strip ${build_dir}/bin/taosd
# strip ${build_dir}/bin/taosd
# strip ${build_dir}/bin/taos
# bin_files="${build_dir}/bin/tqd ${build_dir}/bin/tq ${script_dir}/remove_tq.sh"
#else
#else
# bin_files="${build_dir}/bin/tqd ${build_dir}/bin/tq ${build_dir}/bin/tqdemo ${build_dir}/bin/tarbitrator ${script_dir}/remove_tq.sh\
# ${script_dir}/set_core.sh ${script_dir}/startPre.sh ${script_dir}/taosd-dump-cfg.gdb"
#fi
...
...
@@ -70,13 +71,13 @@ mkdir -p ${install_dir}/cfg && cp ${cfg_dir}/taos.cfg ${install_dir}/cfg/taos.cf
#mkdir -p ${install_dir}/bin && cp ${bin_files} ${install_dir}/bin && chmod a+x ${install_dir}/bin/* || :
mkdir
-p
${
install_dir
}
/bin
if
[
"
$pagMode
"
==
"lite"
]
;
then
strip
${
build_dir
}
/bin/taosd
strip
${
build_dir
}
/bin/taosd
strip
${
build_dir
}
/bin/taos
# bin_files="${build_dir}/bin/tqd ${build_dir}/bin/tq ${script_dir}/remove_tq.sh"
cp
${
build_dir
}
/bin/taos
${
install_dir
}
/bin/tq
cp
${
build_dir
}
/bin/taosd
${
install_dir
}
/bin/tqd
cp
${
script_dir
}
/remove_tq.sh
${
install_dir
}
/bin
else
else
# bin_files="${build_dir}/bin/tqd ${build_dir}/bin/tq ${build_dir}/bin/tqdemo ${build_dir}/bin/tarbitrator ${script_dir}/remove_tq.sh ${script_dir}/set_core.sh"
cp
${
build_dir
}
/bin/taos
${
install_dir
}
/bin/tq
cp
${
build_dir
}
/bin/taosd
${
install_dir
}
/bin/tqd
...
...
@@ -99,14 +100,14 @@ chmod a+x ${install_dir}/bin/* || :
if
[
"
$verMode
"
==
"cluster"
]
;
then
sed
's/verMode=edge/verMode=cluster/g'
${
install_dir
}
/bin/remove_tq.sh
>>
remove_tq_temp.sh
mv
remove_tq_temp.sh
${
install_dir
}
/bin/remove_tq.sh
mkdir
-p
${
install_dir
}
/nginxd
&&
cp
-r
${
nginx_dir
}
/
*
${
install_dir
}
/nginxd
cp
${
nginx_dir
}
/png/taos.png
${
install_dir
}
/nginxd/admin/images/taos.png
rm
-rf
${
install_dir
}
/nginxd/png
sed
-i
"s/TDengine/TQ/g"
${
install_dir
}
/nginxd/admin/
*
.html
sed
-i
"s/TDengine/TQ/g"
${
install_dir
}
/nginxd/admin/js/
*
.js
sed
-i
'/dataDir/ {s/taos/tq/g}'
${
install_dir
}
/cfg/taos.cfg
sed
-i
'/logDir/ {s/taos/tq/g}'
${
install_dir
}
/cfg/taos.cfg
sed
-i
"s/TDengine/TQ/g"
${
install_dir
}
/cfg/taos.cfg
...
...
@@ -154,12 +155,11 @@ if [[ "$pagMode" != "lite" ]] && [[ "$cpuType" != "aarch32" ]]; then
sed
-i
'/password/ {s/taosdata/tqueue/g}'
${
install_dir
}
/examples/python/read_example.py
cp
-r
${
examples_dir
}
/R
${
install_dir
}
/examples
sed
-i
'/password/ {s/taosdata/tqueue/g}'
${
install_dir
}
/examples/R/command.txt
cp
-r
${
examples_dir
}
/go
${
install_dir
}
/examples
cp
-r
${
examples_dir
}
/go
${
install_dir
}
/examples
sed
-i
'/root/ {s/taosdata/tqueue/g}'
${
install_dir
}
/examples/go/taosdemo.go
fi
# Copy driver
mkdir
-p
${
install_dir
}
/driver
cp
${
lib_files
}
${
install_dir
}
/driver
mkdir
-p
${
install_dir
}
/driver
&&
cp
${
lib_files
}
${
install_dir
}
/driver
&&
echo
"
${
versionComp
}
"
>
${
install_dir
}
/driver/vercomp.txt
# Copy connector
connector_dir
=
"
${
code_dir
}
/connector"
...
...
@@ -178,11 +178,11 @@ if [[ "$pagMode" != "lite" ]] && [[ "$cpuType" != "aarch32" ]]; then
echo
"WARNING: go connector not found, please check if want to use it!"
fi
cp
-r
${
connector_dir
}
/python
${
install_dir
}
/connector/
sed
-i
'/password/ {s/taosdata/tqueue/g}'
${
install_dir
}
/connector/python/taos/cinterface.py
sed
-i
'/password/ {s/taosdata/tqueue/g}'
${
install_dir
}
/connector/python/taos/subscription.py
sed
-i
'/self._password/ {s/taosdata/tqueue/g}'
${
install_dir
}
/connector/python/taos/connection.py
fi
# Copy release note
...
...
@@ -190,7 +190,7 @@ fi
# exit 1
cd
${
release_dir
}
cd
${
release_dir
}
if
[
"
$verMode
"
==
"cluster"
]
;
then
pkg_name
=
${
install_dir
}
-
${
osType
}
-
${
cpuType
}
...
...
@@ -207,8 +207,8 @@ fi
if
[
"
$verType
"
==
"beta"
]
;
then
pkg_name
=
${
pkg_name
}
-
${
verType
}
elif
[
"
$verType
"
==
"stable"
]
;
then
pkg_name
=
${
pkg_name
}
elif
[
"
$verType
"
==
"stable"
]
;
then
pkg_name
=
${
pkg_name
}
else
echo
"unknow verType, nor stabel or beta"
exit
1
...
...
src/client/inc/tscUtil.h
浏览文件 @
4c34c53b
...
...
@@ -187,7 +187,7 @@ int32_t tscGetResRowLength(SArray* pExprList);
SExprInfo
*
tscExprInsert
(
SQueryInfo
*
pQueryInfo
,
int32_t
index
,
int16_t
functionId
,
SColumnIndex
*
pColIndex
,
int16_t
type
,
int16_t
size
,
int16_t
resColId
,
int16_t
interSize
,
bool
isTagCol
);
SExprInfo
*
tscExprCreate
(
S
QueryInfo
*
pQuery
Info
,
int16_t
functionId
,
SColumnIndex
*
pColIndex
,
int16_t
type
,
SExprInfo
*
tscExprCreate
(
S
TableMetaInfo
*
pTableMeta
Info
,
int16_t
functionId
,
SColumnIndex
*
pColIndex
,
int16_t
type
,
int16_t
size
,
int16_t
resColId
,
int16_t
interSize
,
int32_t
colType
);
void
tscExprAddParams
(
SSqlExpr
*
pExpr
,
char
*
argument
,
int32_t
type
,
int32_t
bytes
);
...
...
src/client/src/tscSQLParser.c
浏览文件 @
4c34c53b
此差异已折叠。
点击以展开。
src/client/src/tscUtil.c
浏览文件 @
4c34c53b
...
...
@@ -661,7 +661,7 @@ void tscSetResRawPtrRv(SSqlRes* pRes, SQueryInfo* pQueryInfo, SSDataBlock* pBloc
setResRawPtrImpl
(
pRes
,
pInfo
,
i
,
convertNchar
);
/*
// generated the user-defined column result
if (pInfo->pExpr->pExpr == NULL && TSDB_COL_IS_UD_COL(pInfo->pExpr->base.
colInfo
.flag)) {
if (pInfo->pExpr->pExpr == NULL && TSDB_COL_IS_UD_COL(pInfo->pExpr->base.
ColName
.flag)) {
if (pInfo->pExpr->base.param[1].nType == TSDB_DATA_TYPE_NULL) {
setNullN(pRes->urow[i], pInfo->field.type, pInfo->field.bytes, (int32_t) pRes->numOfRows);
} else {
...
...
@@ -2096,10 +2096,8 @@ void tscFieldInfoCopy(SFieldInfo* pFieldInfo, const SFieldInfo* pSrc, const SArr
}
SExprInfo
*
tscExprCreate
(
S
QueryInfo
*
pQuery
Info
,
int16_t
functionId
,
SColumnIndex
*
pColIndex
,
int16_t
type
,
SExprInfo
*
tscExprCreate
(
S
TableMetaInfo
*
pTableMeta
Info
,
int16_t
functionId
,
SColumnIndex
*
pColIndex
,
int16_t
type
,
int16_t
size
,
int16_t
resColId
,
int16_t
interSize
,
int32_t
colType
)
{
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
pColIndex
->
tableIndex
);
SExprInfo
*
pExpr
=
calloc
(
1
,
sizeof
(
SExprInfo
));
if
(
pExpr
==
NULL
)
{
return
NULL
;
...
...
@@ -2121,21 +2119,22 @@ SExprInfo* tscExprCreate(SQueryInfo* pQueryInfo, int16_t functionId, SColumnInde
}
else
if
(
functionId
==
TSDB_FUNC_BLKINFO
)
{
p
->
colInfo
.
colId
=
pColIndex
->
columnIndex
;
p
->
colBytes
=
TSDB_MAX_BINARY_LEN
;
p
->
colType
=
TSDB_DATA_TYPE_BINARY
;
p
->
colType
=
TSDB_DATA_TYPE_BINARY
;
}
else
{
int32_t
len
=
tListLen
(
p
->
colInfo
.
name
);
if
(
TSDB_COL_IS_TAG
(
colType
))
{
SSchema
*
pSchema
=
tscGetTableTagSchema
(
pTableMetaInfo
->
pTableMeta
);
p
->
colInfo
.
colId
=
pSchema
[
pColIndex
->
columnIndex
].
colId
;
p
->
colBytes
=
pSchema
[
pColIndex
->
columnIndex
].
bytes
;
p
->
colType
=
pSchema
[
pColIndex
->
columnIndex
].
type
;
tstrncpy
(
p
->
colInfo
.
name
,
pSchema
[
pColIndex
->
columnIndex
].
name
,
sizeof
(
p
->
colInfo
.
name
)
);
snprintf
(
p
->
colInfo
.
name
,
len
,
"%s.%s"
,
pTableMetaInfo
->
aliasName
,
pSchema
[
pColIndex
->
columnIndex
].
name
);
}
else
if
(
pTableMetaInfo
->
pTableMeta
!=
NULL
)
{
// in handling select database/version/server_status(), the pTableMeta is NULL
SSchema
*
pSchema
=
tscGetTableColumnSchema
(
pTableMetaInfo
->
pTableMeta
,
pColIndex
->
columnIndex
);
p
->
colInfo
.
colId
=
pSchema
->
colId
;
p
->
colBytes
=
pSchema
->
bytes
;
p
->
colType
=
pSchema
->
type
;
tstrncpy
(
p
->
colInfo
.
name
,
pSchema
->
name
,
sizeof
(
p
->
colInfo
.
name
)
);
p
->
colType
=
pSchema
->
type
;
snprintf
(
p
->
colInfo
.
name
,
len
,
"%s.%s"
,
pTableMetaInfo
->
aliasName
,
pSchema
->
name
);
}
}
...
...
@@ -2160,15 +2159,17 @@ SExprInfo* tscExprInsert(SQueryInfo* pQueryInfo, int32_t index, int16_t function
if
(
index
==
num
)
{
return
tscExprAppend
(
pQueryInfo
,
functionId
,
pColIndex
,
type
,
size
,
resColId
,
interSize
,
isTagCol
);
}
SExprInfo
*
pExpr
=
tscExprCreate
(
pQueryInfo
,
functionId
,
pColIndex
,
type
,
size
,
resColId
,
interSize
,
isTagCol
);
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
pColIndex
->
tableIndex
);
SExprInfo
*
pExpr
=
tscExprCreate
(
pTableMetaInfo
,
functionId
,
pColIndex
,
type
,
size
,
resColId
,
interSize
,
isTagCol
);
taosArrayInsert
(
pQueryInfo
->
exprList
,
index
,
&
pExpr
);
return
pExpr
;
}
SExprInfo
*
tscExprAppend
(
SQueryInfo
*
pQueryInfo
,
int16_t
functionId
,
SColumnIndex
*
pColIndex
,
int16_t
type
,
int16_t
size
,
int16_t
resColId
,
int16_t
interSize
,
bool
isTagCol
)
{
SExprInfo
*
pExpr
=
tscExprCreate
(
pQueryInfo
,
functionId
,
pColIndex
,
type
,
size
,
resColId
,
interSize
,
isTagCol
);
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
pColIndex
->
tableIndex
);
SExprInfo
*
pExpr
=
tscExprCreate
(
pTableMetaInfo
,
functionId
,
pColIndex
,
type
,
size
,
resColId
,
interSize
,
isTagCol
);
taosArrayPush
(
pQueryInfo
->
exprList
,
&
pExpr
);
return
pExpr
;
}
...
...
src/common/inc/tname.h
浏览文件 @
4c34c53b
...
...
@@ -46,7 +46,7 @@ typedef struct SSqlExpr {
char
aliasName
[
TSDB_COL_NAME_LEN
];
// as aliasName
char
token
[
TSDB_COL_NAME_LEN
];
// original token
SColIndex
colInfo
;
uint64_t
uid
;
// refactor use the pointer
uint64_t
uid
;
//
table uid, todo
refactor use the pointer
int16_t
functionId
;
// function id in aAgg array
...
...
src/common/src/tglobal.c
浏览文件 @
4c34c53b
...
...
@@ -180,15 +180,15 @@ int8_t tsEnableStream = 1;
int8_t
tsCompactMnodeWal
=
0
;
int8_t
tsPrintAuth
=
0
;
int8_t
tscEmbedded
=
0
;
char
configDir
[
TSDB_FILENAME_LEN
]
=
{
0
};
char
tsVnodeDir
[
TSDB_FILENAME_LEN
]
=
{
0
};
char
tsDnodeDir
[
TSDB_FILENAME_LEN
]
=
{
0
};
char
tsMnodeDir
[
TSDB_FILENAME_LEN
]
=
{
0
};
char
tsMnodeTmpDir
[
TSDB_FILENAME_LEN
]
=
{
0
};
char
tsMnodeBakDir
[
TSDB_FILENAME_LEN
]
=
{
0
};
char
tsDataDir
[
TSDB_FILENAME_LEN
]
=
{
0
};
char
tsScriptDir
[
TSDB_FILENAME_LEN
]
=
{
0
};
char
tsTempDir
[
TSDB_FILENAME_LEN
]
=
"/tmp/"
;
char
configDir
[
PATH_MAX
]
=
{
0
};
char
tsVnodeDir
[
PATH_MAX
]
=
{
0
};
char
tsDnodeDir
[
PATH_MAX
]
=
{
0
};
char
tsMnodeDir
[
PATH_MAX
]
=
{
0
};
char
tsMnodeTmpDir
[
PATH_MAX
]
=
{
0
};
char
tsMnodeBakDir
[
PATH_MAX
]
=
{
0
};
char
tsDataDir
[
PATH_MAX
]
=
{
0
};
char
tsScriptDir
[
PATH_MAX
]
=
{
0
};
char
tsTempDir
[
PATH_MAX
]
=
"/tmp/"
;
int32_t
tsDiskCfgNum
=
0
;
...
...
src/inc/taosmsg.h
浏览文件 @
4c34c53b
...
...
@@ -402,7 +402,7 @@ typedef struct SColIndex {
int16_t
colId
;
// column id
int16_t
colIndex
;
// column index in colList if it is a normal column or index in tagColList if a tag
uint16_t
flag
;
// denote if it is a tag or a normal column
char
name
[
TSDB_COL_NAME_LEN
];
// TODO remove it
char
name
[
TSDB_COL_NAME_LEN
+
TSDB_DB_NAME_LEN
+
1
];
}
SColIndex
;
typedef
struct
SColumnFilterInfo
{
...
...
src/mnode/src/mnodeTable.c
浏览文件 @
4c34c53b
...
...
@@ -1035,6 +1035,20 @@ static int32_t mnodeCreateSuperTableCb(SMnodeMsg *pMsg, int32_t code) {
return
code
;
}
static
uint64_t
mnodeCreateSuperTableUid
()
{
int64_t
us
=
taosGetTimestampUs
();
uint64_t
x
=
(
us
&
((((
uint64_t
)
1
)
<<
40
)
-
1
));
x
=
x
<<
24
;
return
x
+
((
sdbGetVersion
()
&
((
1ul
<<
16
)
-
1ul
))
<<
8
)
+
(
taosRand
()
&
((
1ul
<<
8
)
-
1ul
));
}
static
uint64_t
mnodeCreateTableUid
(
int32_t
vgId
,
int32_t
tid
)
{
uint64_t
uid
=
(((
uint64_t
)
vgId
)
<<
48
)
+
((((
uint64_t
)
tid
)
&
((
1ul
<<
24
)
-
1ul
))
<<
24
)
+
((
sdbGetVersion
()
&
((
1ul
<<
16
)
-
1ul
))
<<
8
)
+
(
taosRand
()
&
((
1ul
<<
8
)
-
1ul
));
return
uid
;
}
static
int32_t
mnodeProcessCreateSuperTableMsg
(
SMnodeMsg
*
pMsg
)
{
if
(
pMsg
==
NULL
)
return
TSDB_CODE_MND_APP_ERROR
;
...
...
@@ -1064,15 +1078,10 @@ static int32_t mnodeProcessCreateSuperTableMsg(SMnodeMsg *pMsg) {
return
TSDB_CODE_MND_OUT_OF_MEMORY
;
}
int64_t
us
=
taosGetTimestampUs
();
pStable
->
info
.
tableId
=
strdup
(
pCreate
->
tableName
);
pStable
->
info
.
type
=
TSDB_SUPER_TABLE
;
pStable
->
createdTime
=
taosGetTimestampMs
();
uint64_t
x
=
(
us
&
((((
uint64_t
)
1
)
<<
40
)
-
1
));
// todo refactor
x
=
x
<<
24
;
pStable
->
uid
=
x
+
((
sdbGetVersion
()
&
((
1ul
<<
16
)
-
1ul
))
<<
8
)
+
(
taosRand
()
&
((
1ul
<<
8
)
-
1ul
));
pStable
->
uid
=
mnodeCreateSuperTableUid
();
pStable
->
sversion
=
0
;
pStable
->
tversion
=
0
;
pStable
->
numOfColumns
=
numOfColumns
;
...
...
@@ -2075,20 +2084,13 @@ static int32_t mnodeDoCreateChildTable(SMnodeMsg *pMsg, int32_t tid) {
}
pTable
->
suid
=
pMsg
->
pSTable
->
uid
;
pTable
->
uid
=
(((
uint64_t
)
pTable
->
vgId
)
<<
48
)
+
((((
uint64_t
)
pTable
->
tid
)
&
((
1ul
<<
24
)
-
1ul
))
<<
24
)
+
((
sdbGetVersion
()
&
((
1ul
<<
16
)
-
1ul
))
<<
8
)
+
(
taosRand
()
&
((
1ul
<<
8
)
-
1ul
));
pTable
->
uid
=
mnodeCreateTableUid
(
pTable
->
vgId
,
pTable
->
tid
);
pTable
->
superTable
=
pMsg
->
pSTable
;
}
else
{
if
(
pTable
->
info
.
type
==
TSDB_SUPER_TABLE
)
{
uint64_t
us
=
(
uint64_t
)
taosGetTimestampUs
();
uint64_t
x
=
(
us
&
((((
uint64_t
)
1
)
<<
40
)
-
1
));
x
=
x
<<
24
;
pTable
->
uid
=
x
+
((
sdbGetVersion
()
&
((
1ul
<<
16
)
-
1ul
))
<<
8
)
+
(
taosRand
()
&
((
1ul
<<
8
)
-
1ul
));
pTable
->
uid
=
mnodeCreateSuperTableUid
();
}
else
{
pTable
->
uid
=
(((
uint64_t
)
pTable
->
vgId
)
<<
48
)
+
((((
uint64_t
)
pTable
->
tid
)
&
((
1ul
<<
24
)
-
1ul
))
<<
24
)
+
((
sdbGetVersion
()
&
((
1ul
<<
16
)
-
1ul
))
<<
8
)
+
(
taosRand
()
&
((
1ul
<<
8
)
-
1ul
));
pTable
->
uid
=
mnodeCreateTableUid
(
pTable
->
vgId
,
pTable
->
tid
);
}
pTable
->
sversion
=
0
;
...
...
src/query/inc/qSqlparser.h
浏览文件 @
4c34c53b
...
...
@@ -237,18 +237,20 @@ typedef struct tSqlExpr {
uint16_t
type
;
// sql node type
uint32_t
tokenId
;
// TK_LE: less than(binary expr)
// the whole string of the function(col, param), while the function name is kept in token
SStrToken
operand
;
uint32_t
functionId
;
// function id
// the whole string of the function(col, param), while the function name is kept in exprToken
struct
{
SStrToken
operand
;
struct
SArray
*
paramList
;
// function parameters list
}
Expr
;
SStrToken
colInfo
;
// table column info
uint32_t
functionId
;
// function id, todo remove it
SStrToken
columnName
;
// table column info
tVariant
value
;
// the use input value
SStrToken
token
;
// original sql expr string
uint32_t
flags
;
SStrToken
exprToken
;
// original sql expr string
uint32_t
flags
;
// todo remove it
struct
tSqlExpr
*
pLeft
;
// left child
struct
tSqlExpr
*
pRight
;
// right child
struct
SArray
*
pParam
;
// function parameters list
}
tSqlExpr
;
// used in select clause. select <SArray> from xxx
...
...
src/query/inc/sql.y
浏览文件 @
4c34c53b
...
...
@@ -681,7 +681,7 @@ where_opt(A) ::= WHERE expr(X). {A = X;}
%type expr {tSqlExpr*}
%destructor expr {tSqlExprDestroy($$);}
expr(A) ::= LP(X) expr(Y) RP(Z). {A = Y; A->
token.z = X.z; A->t
oken.n = (Z.z - X.z + 1);}
expr(A) ::= LP(X) expr(Y) RP(Z). {A = Y; A->
exprToken.z = X.z; A->exprT
oken.n = (Z.z - X.z + 1);}
expr(A) ::= ID(X). { A = tSqlExprCreateIdValue(&X, TK_ID);}
expr(A) ::= ID(X) DOT ID(Y). { X.n += (1+Y.n); A = tSqlExprCreateIdValue(&X, TK_ID);}
...
...
src/query/src/qPlan.c
浏览文件 @
4c34c53b
...
...
@@ -127,7 +127,8 @@ static SQueryNode* doAddTableColumnNode(SQueryInfo* pQueryInfo, STableMetaInfo*
SColumn
*
pCol
=
taosArrayGetP
(
tableCols
,
i
);
SColumnIndex
index
=
{.
tableIndex
=
0
,
.
columnIndex
=
pCol
->
columnIndex
};
SExprInfo
*
p
=
tscExprCreate
(
pQueryInfo
,
TSDB_FUNC_PRJ
,
&
index
,
pCol
->
info
.
type
,
pCol
->
info
.
bytes
,
STableMetaInfo
*
pTableMetaInfo1
=
tscGetMetaInfo
(
pQueryInfo
,
index
.
tableIndex
);
SExprInfo
*
p
=
tscExprCreate
(
pTableMetaInfo1
,
TSDB_FUNC_PRJ
,
&
index
,
pCol
->
info
.
type
,
pCol
->
info
.
bytes
,
pCol
->
info
.
colId
,
0
,
TSDB_COL_NORMAL
);
strncpy
(
p
->
base
.
aliasName
,
pSchema
[
pCol
->
columnIndex
].
name
,
tListLen
(
p
->
base
.
aliasName
));
...
...
src/query/src/qSqlParser.c
浏览文件 @
4c34c53b
...
...
@@ -124,7 +124,7 @@ tSqlExpr *tSqlExprCreateIdValue(SStrToken *pToken, int32_t optrType) {
tSqlExpr
*
pSqlExpr
=
calloc
(
1
,
sizeof
(
tSqlExpr
));
if
(
pToken
!=
NULL
)
{
pSqlExpr
->
t
oken
=
*
pToken
;
pSqlExpr
->
exprT
oken
=
*
pToken
;
}
if
(
optrType
==
TK_NULL
)
{
...
...
@@ -161,7 +161,7 @@ tSqlExpr *tSqlExprCreateIdValue(SStrToken *pToken, int32_t optrType) {
// Here it must be the column name (tk_id) if it is not a number or string.
assert
(
optrType
==
TK_ID
||
optrType
==
TK_ALL
);
if
(
pToken
!=
NULL
)
{
pSqlExpr
->
col
Info
=
*
pToken
;
pSqlExpr
->
col
umnName
=
*
pToken
;
}
pSqlExpr
->
tokenId
=
optrType
;
...
...
@@ -180,17 +180,17 @@ tSqlExpr *tSqlExprCreateFunction(SArray *pParam, SStrToken *pFuncToken, SStrToke
return
NULL
;
}
tSqlExpr
*
pExpr
=
calloc
(
1
,
sizeof
(
tSqlExpr
));
pExpr
->
tokenId
=
optType
;
pExpr
->
type
=
SQL_NODE_SQLFUNCTION
;
pExpr
->
pParam
=
pParam
;
tSqlExpr
*
pExpr
=
calloc
(
1
,
sizeof
(
tSqlExpr
));
pExpr
->
tokenId
=
optType
;
pExpr
->
type
=
SQL_NODE_SQLFUNCTION
;
pExpr
->
Expr
.
paramList
=
pParam
;
int32_t
len
=
(
int32_t
)((
endToken
->
z
+
endToken
->
n
)
-
pFuncToken
->
z
);
pExpr
->
operand
=
(
*
pFuncToken
);
pExpr
->
Expr
.
operand
=
(
*
pFuncToken
);
pExpr
->
t
oken
.
n
=
len
;
pExpr
->
t
oken
.
z
=
pFuncToken
->
z
;
pExpr
->
t
oken
.
type
=
pFuncToken
->
type
;
pExpr
->
exprT
oken
.
n
=
len
;
pExpr
->
exprT
oken
.
z
=
pFuncToken
->
z
;
pExpr
->
exprT
oken
.
type
=
pFuncToken
->
type
;
return
pExpr
;
}
...
...
@@ -204,16 +204,16 @@ tSqlExpr *tSqlExprCreate(tSqlExpr *pLeft, tSqlExpr *pRight, int32_t optrType) {
pExpr
->
type
=
SQL_NODE_EXPR
;
if
(
pLeft
!=
NULL
&&
pRight
!=
NULL
&&
(
optrType
!=
TK_IN
))
{
char
*
endPos
=
pRight
->
token
.
z
+
pRight
->
t
oken
.
n
;
pExpr
->
token
.
z
=
pLeft
->
t
oken
.
z
;
pExpr
->
token
.
n
=
(
uint32_t
)(
endPos
-
pExpr
->
t
oken
.
z
);
pExpr
->
token
.
type
=
pLeft
->
t
oken
.
type
;
char
*
endPos
=
pRight
->
exprToken
.
z
+
pRight
->
exprT
oken
.
n
;
pExpr
->
exprToken
.
z
=
pLeft
->
exprT
oken
.
z
;
pExpr
->
exprToken
.
n
=
(
uint32_t
)(
endPos
-
pExpr
->
exprT
oken
.
z
);
pExpr
->
exprToken
.
type
=
pLeft
->
exprT
oken
.
type
;
}
if
((
pLeft
!=
NULL
&&
pRight
!=
NULL
)
&&
(
optrType
==
TK_PLUS
||
optrType
==
TK_MINUS
||
optrType
==
TK_STAR
||
optrType
==
TK_DIVIDE
||
optrType
==
TK_REM
))
{
/*
* if a
t
oken is noted as the TK_TIMESTAMP, the time precision is microsecond
* if a
exprT
oken is noted as the TK_TIMESTAMP, the time precision is microsecond
* Otherwise, the time precision is adaptive, determined by the time precision from databases.
*/
if
((
pLeft
->
tokenId
==
TK_INTEGER
&&
pRight
->
tokenId
==
TK_INTEGER
)
||
...
...
@@ -304,7 +304,7 @@ tSqlExpr *tSqlExprCreate(tSqlExpr *pLeft, tSqlExpr *pRight, int32_t optrType) {
tSqlExpr
*
pRSub
=
calloc
(
1
,
sizeof
(
tSqlExpr
));
pRSub
->
tokenId
=
TK_SET
;
// TODO refactor .....
pRSub
->
pParam
=
(
SArray
*
)
pRight
;
pRSub
->
Expr
.
paramList
=
(
SArray
*
)
pRight
;
pExpr
->
pRight
=
pRSub
;
}
else
{
...
...
@@ -346,8 +346,8 @@ int32_t tSqlExprCompare(tSqlExpr *left, tSqlExpr *right) {
||
(
left
->
pLeft
==
NULL
&&
right
->
pLeft
)
||
(
left
->
pRight
&&
right
->
pRight
==
NULL
)
||
(
left
->
pRight
==
NULL
&&
right
->
pRight
)
||
(
left
->
pParam
&&
right
->
pParam
==
NULL
)
||
(
left
->
pParam
==
NULL
&&
right
->
pParam
))
{
||
(
left
->
Expr
.
paramList
&&
right
->
Expr
.
paramList
==
NULL
)
||
(
left
->
Expr
.
paramList
==
NULL
&&
right
->
Expr
.
paramList
))
{
return
1
;
}
...
...
@@ -355,20 +355,20 @@ int32_t tSqlExprCompare(tSqlExpr *left, tSqlExpr *right) {
return
1
;
}
if
(
tStrTokenCompare
(
&
left
->
col
Info
,
&
right
->
colInfo
))
{
if
(
tStrTokenCompare
(
&
left
->
col
umnName
,
&
right
->
columnName
))
{
return
1
;
}
if
(
right
->
pParam
&&
left
->
pParam
)
{
size_t
size
=
taosArrayGetSize
(
right
->
pParam
);
if
(
left
->
pParam
&&
taosArrayGetSize
(
left
->
pParam
)
!=
size
)
{
if
(
right
->
Expr
.
paramList
&&
left
->
Expr
.
paramList
)
{
size_t
size
=
taosArrayGetSize
(
right
->
Expr
.
paramList
);
if
(
left
->
Expr
.
paramList
&&
taosArrayGetSize
(
left
->
Expr
.
paramList
)
!=
size
)
{
return
1
;
}
for
(
int32_t
i
=
0
;
i
<
size
;
i
++
)
{
tSqlExprItem
*
pLeftElem
=
taosArrayGet
(
left
->
pParam
,
i
);
tSqlExprItem
*
pLeftElem
=
taosArrayGet
(
left
->
Expr
.
paramList
,
i
);
tSqlExpr
*
pSubLeft
=
pLeftElem
->
pNode
;
tSqlExprItem
*
pRightElem
=
taosArrayGet
(
right
->
pParam
,
i
);
tSqlExprItem
*
pRightElem
=
taosArrayGet
(
right
->
Expr
.
paramList
,
i
);
tSqlExpr
*
pSubRight
=
pRightElem
->
pNode
;
if
(
tSqlExprCompare
(
pSubLeft
,
pSubRight
))
{
...
...
@@ -401,8 +401,8 @@ tSqlExpr *tSqlExprClone(tSqlExpr *pSrc) {
pExpr
->
pRight
=
tSqlExprClone
(
pSrc
->
pRight
);
}
//we don't clone p
Param
now because clone is only used for between/and
assert
(
pSrc
->
pParam
==
NULL
);
//we don't clone p
aramList
now because clone is only used for between/and
assert
(
pSrc
->
Expr
.
paramList
==
NULL
);
return
pExpr
;
}
...
...
@@ -460,7 +460,7 @@ static void doDestroySqlExprNode(tSqlExpr *pExpr) {
tVariantDestroy
(
&
pExpr
->
value
);
}
tSqlExprListDestroy
(
pExpr
->
pParam
);
tSqlExprListDestroy
(
pExpr
->
Expr
.
paramList
);
free
(
pExpr
);
}
...
...
src/query/src/sql.c
浏览文件 @
4c34c53b
...
...
@@ -2921,7 +2921,7 @@ static void yy_reduce(
{
yymsp
[
-
3
].
minor
.
yy414
.
limit
=
yymsp
[
0
].
minor
.
yy369
;
yymsp
[
-
3
].
minor
.
yy414
.
offset
=
yymsp
[
-
2
].
minor
.
yy369
;}
break
;
case
223
:
/* expr ::= LP expr RP */
{
yylhsminor
.
yy166
=
yymsp
[
-
1
].
minor
.
yy166
;
yylhsminor
.
yy166
->
token
.
z
=
yymsp
[
-
2
].
minor
.
yy0
.
z
;
yylhsminor
.
yy166
->
t
oken
.
n
=
(
yymsp
[
0
].
minor
.
yy0
.
z
-
yymsp
[
-
2
].
minor
.
yy0
.
z
+
1
);}
{
yylhsminor
.
yy166
=
yymsp
[
-
1
].
minor
.
yy166
;
yylhsminor
.
yy166
->
exprToken
.
z
=
yymsp
[
-
2
].
minor
.
yy0
.
z
;
yylhsminor
.
yy166
->
exprT
oken
.
n
=
(
yymsp
[
0
].
minor
.
yy0
.
z
-
yymsp
[
-
2
].
minor
.
yy0
.
z
+
1
);}
yymsp
[
-
2
].
minor
.
yy166
=
yylhsminor
.
yy166
;
break
;
case
224
:
/* expr ::= ID */
...
...
src/util/src/tlog.c
浏览文件 @
4c34c53b
...
...
@@ -86,7 +86,7 @@ char tsLogDir[TSDB_FILENAME_LEN] = "/var/log/power";
#elif (_TD_TQ_ == true)
char
tsLogDir
[
TSDB_FILENAME_LEN
]
=
"/var/log/tq"
;
#else
char
tsLogDir
[
TSDB_FILENAME_LEN
]
=
"/var/log/taos"
;
char
tsLogDir
[
PATH_MAX
]
=
"/var/log/taos"
;
#endif
static
SLogObj
tsLogObj
=
{
.
fileNum
=
1
};
...
...
tests/script/general/parser/having.sim
浏览文件 @
4c34c53b
...
...
@@ -1835,5 +1835,8 @@ if $data04 != 1 then
endi
sql_error select top(f1,2) from tb1 group by f1 having count(f1) > 0;
sql_error select count(*) from tb1 group by f1 having last(*) > 0;
print bug for select count(*) k from tb1 group by f1 having k > 0;
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录