Merge branch 'develop' into test/TD-4463
This commit is contained in:
commit
b23d057366
|
@ -24,14 +24,14 @@ echo "compile_dir: ${compile_dir}"
|
||||||
echo "pkg_dir: ${pkg_dir}"
|
echo "pkg_dir: ${pkg_dir}"
|
||||||
|
|
||||||
if [ -d ${pkg_dir} ]; then
|
if [ -d ${pkg_dir} ]; then
|
||||||
rm -rf ${pkg_dir}
|
rm -rf ${pkg_dir}
|
||||||
fi
|
fi
|
||||||
mkdir -p ${pkg_dir}
|
mkdir -p ${pkg_dir}
|
||||||
cd ${pkg_dir}
|
cd ${pkg_dir}
|
||||||
|
|
||||||
libfile="libtaos.so.${tdengine_ver}"
|
libfile="libtaos.so.${tdengine_ver}"
|
||||||
|
|
||||||
# create install dir
|
# create install dir
|
||||||
install_home_path="/usr/local/taos"
|
install_home_path="/usr/local/taos"
|
||||||
mkdir -p ${pkg_dir}${install_home_path}
|
mkdir -p ${pkg_dir}${install_home_path}
|
||||||
mkdir -p ${pkg_dir}${install_home_path}/bin
|
mkdir -p ${pkg_dir}${install_home_path}/bin
|
||||||
|
@ -42,7 +42,7 @@ mkdir -p ${pkg_dir}${install_home_path}/examples
|
||||||
mkdir -p ${pkg_dir}${install_home_path}/include
|
mkdir -p ${pkg_dir}${install_home_path}/include
|
||||||
mkdir -p ${pkg_dir}${install_home_path}/init.d
|
mkdir -p ${pkg_dir}${install_home_path}/init.d
|
||||||
mkdir -p ${pkg_dir}${install_home_path}/script
|
mkdir -p ${pkg_dir}${install_home_path}/script
|
||||||
|
|
||||||
cp ${compile_dir}/../packaging/cfg/taos.cfg ${pkg_dir}${install_home_path}/cfg
|
cp ${compile_dir}/../packaging/cfg/taos.cfg ${pkg_dir}${install_home_path}/cfg
|
||||||
cp ${compile_dir}/../packaging/deb/taosd ${pkg_dir}${install_home_path}/init.d
|
cp ${compile_dir}/../packaging/deb/taosd ${pkg_dir}${install_home_path}/init.d
|
||||||
cp ${compile_dir}/../packaging/tools/post.sh ${pkg_dir}${install_home_path}/script
|
cp ${compile_dir}/../packaging/tools/post.sh ${pkg_dir}${install_home_path}/script
|
||||||
|
@ -54,7 +54,7 @@ cp ${compile_dir}/build/bin/taosdemo ${pkg_dir}${install_home_pat
|
||||||
cp ${compile_dir}/build/bin/taosdump ${pkg_dir}${install_home_path}/bin
|
cp ${compile_dir}/build/bin/taosdump ${pkg_dir}${install_home_path}/bin
|
||||||
cp ${compile_dir}/build/bin/taosd ${pkg_dir}${install_home_path}/bin
|
cp ${compile_dir}/build/bin/taosd ${pkg_dir}${install_home_path}/bin
|
||||||
cp ${compile_dir}/build/bin/taos ${pkg_dir}${install_home_path}/bin
|
cp ${compile_dir}/build/bin/taos ${pkg_dir}${install_home_path}/bin
|
||||||
cp ${compile_dir}/build/lib/${libfile} ${pkg_dir}${install_home_path}/driver
|
cp ${compile_dir}/build/lib/${libfile} ${pkg_dir}${install_home_path}/driver
|
||||||
cp ${compile_dir}/../src/inc/taos.h ${pkg_dir}${install_home_path}/include
|
cp ${compile_dir}/../src/inc/taos.h ${pkg_dir}${install_home_path}/include
|
||||||
cp ${compile_dir}/../src/inc/taoserror.h ${pkg_dir}${install_home_path}/include
|
cp ${compile_dir}/../src/inc/taoserror.h ${pkg_dir}${install_home_path}/include
|
||||||
cp -r ${top_dir}/tests/examples/* ${pkg_dir}${install_home_path}/examples
|
cp -r ${top_dir}/tests/examples/* ${pkg_dir}${install_home_path}/examples
|
||||||
|
@ -67,7 +67,41 @@ fi
|
||||||
cp -r ${top_dir}/src/connector/python ${pkg_dir}${install_home_path}/connector
|
cp -r ${top_dir}/src/connector/python ${pkg_dir}${install_home_path}/connector
|
||||||
cp -r ${top_dir}/src/connector/go ${pkg_dir}${install_home_path}/connector
|
cp -r ${top_dir}/src/connector/go ${pkg_dir}${install_home_path}/connector
|
||||||
cp -r ${top_dir}/src/connector/nodejs ${pkg_dir}${install_home_path}/connector
|
cp -r ${top_dir}/src/connector/nodejs ${pkg_dir}${install_home_path}/connector
|
||||||
cp ${compile_dir}/build/lib/taos-jdbcdriver*dist.* ${pkg_dir}${install_home_path}/connector ||:
|
cp ${compile_dir}/build/lib/taos-jdbcdriver*.* ${pkg_dir}${install_home_path}/connector ||:
|
||||||
|
|
||||||
|
if [ -f ${compile_dir}/build/bin/jemalloc-config ]; then
|
||||||
|
install_user_local_path="/usr/local"
|
||||||
|
mkdir -p ${pkg_dir}${install_user_local_path}/{bin,lib,lib/pkgconfig,include/jemalloc,share/doc/jemalloc,share/man/man3}
|
||||||
|
cp ${compile_dir}/build/bin/jemalloc-config ${pkg_dir}${install_user_local_path}/bin/
|
||||||
|
if [ -f ${compile_dir}/build/bin/jemalloc.sh ]; then
|
||||||
|
cp ${compile_dir}/build/bin/jemalloc.sh ${pkg_dir}${install_user_local_path}/bin/
|
||||||
|
fi
|
||||||
|
if [ -f ${compile_dir}/build/bin/jeprof ]; then
|
||||||
|
cp ${compile_dir}/build/bin/jeprof ${pkg_dir}${install_user_local_path}/bin/
|
||||||
|
fi
|
||||||
|
if [ -f ${compile_dir}/build/include/jemalloc/jemalloc.h ]; then
|
||||||
|
cp ${compile_dir}/build/include/jemalloc/jemalloc.h ${pkg_dir}${install_user_local_path}/include/jemalloc/
|
||||||
|
fi
|
||||||
|
if [ -f ${compile_dir}/build/lib/libjemalloc.so.2 ]; then
|
||||||
|
cp ${compile_dir}/build/lib/libjemalloc.so.2 ${pkg_dir}${install_user_local_path}/lib/
|
||||||
|
ln -sf libjemalloc.so.2 ${pkg_dir}${install_user_local_path}/lib/libjemalloc.so
|
||||||
|
fi
|
||||||
|
if [ -f ${compile_dir}/build/lib/libjemalloc.a ]; then
|
||||||
|
cp ${compile_dir}/build/lib/libjemalloc.a ${pkg_dir}${install_user_local_path}/lib/
|
||||||
|
fi
|
||||||
|
if [ -f ${compile_dir}/build/lib/libjemalloc_pic.a ]; then
|
||||||
|
cp ${compile_dir}/build/lib/libjemalloc_pic.a ${pkg_dir}${install_user_local_path}/lib/
|
||||||
|
fi
|
||||||
|
if [ -f ${compile_dir}/build/lib/pkgconfig/jemalloc.pc ]; then
|
||||||
|
cp ${compile_dir}/build/lib/pkgconfig/jemalloc.pc ${pkg_dir}${install_user_local_path}/lib/pkgconfig/
|
||||||
|
fi
|
||||||
|
if [ -f ${compile_dir}/build/share/doc/jemalloc/jemalloc.html ]; then
|
||||||
|
cp ${compile_dir}/build/share/doc/jemalloc/jemalloc.html ${pkg_dir}${install_user_local_path}/share/doc/jemalloc/
|
||||||
|
fi
|
||||||
|
if [ -f ${compile_dir}/build/share/man/man3/jemalloc.3 ]; then
|
||||||
|
cp ${compile_dir}/build/share/man/man3/jemalloc.3 ${pkg_dir}${install_user_local_path}/share/man/man3/
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
cp -r ${compile_dir}/../packaging/deb/DEBIAN ${pkg_dir}/
|
cp -r ${compile_dir}/../packaging/deb/DEBIAN ${pkg_dir}/
|
||||||
chmod 755 ${pkg_dir}/DEBIAN/*
|
chmod 755 ${pkg_dir}/DEBIAN/*
|
||||||
|
@ -75,7 +109,7 @@ chmod 755 ${pkg_dir}/DEBIAN/*
|
||||||
# modify version of control
|
# modify version of control
|
||||||
debver="Version: "$tdengine_ver
|
debver="Version: "$tdengine_ver
|
||||||
sed -i "2c$debver" ${pkg_dir}/DEBIAN/control
|
sed -i "2c$debver" ${pkg_dir}/DEBIAN/control
|
||||||
|
|
||||||
#get taos version, then set deb name
|
#get taos version, then set deb name
|
||||||
|
|
||||||
|
|
||||||
|
@ -90,7 +124,7 @@ fi
|
||||||
|
|
||||||
if [ "$verType" == "beta" ]; then
|
if [ "$verType" == "beta" ]; then
|
||||||
debname=${debname}-${verType}".deb"
|
debname=${debname}-${verType}".deb"
|
||||||
elif [ "$verType" == "stable" ]; then
|
elif [ "$verType" == "stable" ]; then
|
||||||
debname=${debname}".deb"
|
debname=${debname}".deb"
|
||||||
else
|
else
|
||||||
echo "unknow verType, nor stabel or beta"
|
echo "unknow verType, nor stabel or beta"
|
||||||
|
@ -101,7 +135,7 @@ fi
|
||||||
dpkg -b ${pkg_dir} $debname
|
dpkg -b ${pkg_dir} $debname
|
||||||
echo "make deb package success!"
|
echo "make deb package success!"
|
||||||
|
|
||||||
cp ${pkg_dir}/*.deb ${output_dir}
|
cp ${pkg_dir}/*.deb ${output_dir}
|
||||||
|
|
||||||
# clean tmep dir
|
# clean tmep dir
|
||||||
rm -rf ${pkg_dir}
|
rm -rf ${pkg_dir}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#
|
#
|
||||||
# Generate rpm package for centos
|
# Generate rpm package for centos
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
# set -x
|
# set -x
|
||||||
|
@ -60,7 +60,7 @@ ${csudo} rpmbuild --define="_version ${tdengine_ver}" --define="_topdir ${pkg_di
|
||||||
|
|
||||||
# copy rpm package to output_dir, and modify package name, then clean temp dir
|
# copy rpm package to output_dir, and modify package name, then clean temp dir
|
||||||
#${csudo} cp -rf RPMS/* ${output_dir}
|
#${csudo} cp -rf RPMS/* ${output_dir}
|
||||||
cp_rpm_package ${pkg_dir}/RPMS
|
cp_rpm_package ${pkg_dir}/RPMS
|
||||||
|
|
||||||
|
|
||||||
if [ "$verMode" == "cluster" ]; then
|
if [ "$verMode" == "cluster" ]; then
|
||||||
|
@ -74,7 +74,7 @@ fi
|
||||||
|
|
||||||
if [ "$verType" == "beta" ]; then
|
if [ "$verType" == "beta" ]; then
|
||||||
rpmname=${rpmname}-${verType}".rpm"
|
rpmname=${rpmname}-${verType}".rpm"
|
||||||
elif [ "$verType" == "stable" ]; then
|
elif [ "$verType" == "stable" ]; then
|
||||||
rpmname=${rpmname}".rpm"
|
rpmname=${rpmname}".rpm"
|
||||||
else
|
else
|
||||||
echo "unknow verType, nor stabel or beta"
|
echo "unknow verType, nor stabel or beta"
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
%define homepath /usr/local/taos
|
%define homepath /usr/local/taos
|
||||||
|
%define userlocalpath /usr/local
|
||||||
%define cfg_install_dir /etc/taos
|
%define cfg_install_dir /etc/taos
|
||||||
%define __strip /bin/true
|
%define __strip /bin/true
|
||||||
|
|
||||||
|
@ -12,22 +13,22 @@ URL: www.taosdata.com
|
||||||
AutoReqProv: no
|
AutoReqProv: no
|
||||||
|
|
||||||
#BuildRoot: %_topdir/BUILDROOT
|
#BuildRoot: %_topdir/BUILDROOT
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
||||||
|
|
||||||
#Prefix: /usr/local/taos
|
#Prefix: /usr/local/taos
|
||||||
|
|
||||||
#BuildRequires:
|
#BuildRequires:
|
||||||
#Requires:
|
#Requires:
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Big Data Platform Designed and Optimized for IoT
|
Big Data Platform Designed and Optimized for IoT
|
||||||
|
|
||||||
#"prep" Nothing needs to be done
|
#"prep" Nothing needs to be done
|
||||||
#%prep
|
#%prep
|
||||||
#%setup -q
|
#%setup -q
|
||||||
#%setup -T
|
#%setup -T
|
||||||
|
|
||||||
#"build" Nothing needs to be done
|
#"build" Nothing needs to be done
|
||||||
#%build
|
#%build
|
||||||
#%configure
|
#%configure
|
||||||
#make %{?_smp_mflags}
|
#make %{?_smp_mflags}
|
||||||
|
@ -75,9 +76,53 @@ fi
|
||||||
cp -r %{_compiledir}/../src/connector/python %{buildroot}%{homepath}/connector
|
cp -r %{_compiledir}/../src/connector/python %{buildroot}%{homepath}/connector
|
||||||
cp -r %{_compiledir}/../src/connector/go %{buildroot}%{homepath}/connector
|
cp -r %{_compiledir}/../src/connector/go %{buildroot}%{homepath}/connector
|
||||||
cp -r %{_compiledir}/../src/connector/nodejs %{buildroot}%{homepath}/connector
|
cp -r %{_compiledir}/../src/connector/nodejs %{buildroot}%{homepath}/connector
|
||||||
cp %{_compiledir}/build/lib/taos-jdbcdriver*dist.* %{buildroot}%{homepath}/connector ||:
|
cp %{_compiledir}/build/lib/taos-jdbcdriver*.* %{buildroot}%{homepath}/connector ||:
|
||||||
cp -r %{_compiledir}/../tests/examples/* %{buildroot}%{homepath}/examples
|
cp -r %{_compiledir}/../tests/examples/* %{buildroot}%{homepath}/examples
|
||||||
|
|
||||||
|
|
||||||
|
if [ -f %{_compiledir}/build/bin/jemalloc-config ]; then
|
||||||
|
mkdir -p %{buildroot}%{userlocalpath}/bin
|
||||||
|
mkdir -p %{buildroot}%{userlocalpath}/lib
|
||||||
|
mkdir -p %{buildroot}%{userlocalpath}/lib/pkgconfig
|
||||||
|
mkdir -p %{buildroot}%{userlocalpath}/include
|
||||||
|
mkdir -p %{buildroot}%{userlocalpath}/include/jemalloc
|
||||||
|
mkdir -p %{buildroot}%{userlocalpath}/share
|
||||||
|
mkdir -p %{buildroot}%{userlocalpath}/share/doc
|
||||||
|
mkdir -p %{buildroot}%{userlocalpath}/share/doc/jemalloc
|
||||||
|
mkdir -p %{buildroot}%{userlocalpath}/share/man
|
||||||
|
mkdir -p %{buildroot}%{userlocalpath}/share/man/man3
|
||||||
|
|
||||||
|
cp %{_compiledir}/build/bin/jemalloc-config %{buildroot}%{userlocalpath}/bin/
|
||||||
|
if [ -f %{_compiledir}/build/bin/jemalloc.sh ]; then
|
||||||
|
cp %{_compiledir}/build/bin/jemalloc.sh %{buildroot}%{userlocalpath}/bin/
|
||||||
|
fi
|
||||||
|
if [ -f %{_compiledir}/build/bin/jeprof ]; then
|
||||||
|
cp %{_compiledir}/build/bin/jeprof %{buildroot}%{userlocalpath}/bin/
|
||||||
|
fi
|
||||||
|
if [ -f %{_compiledir}/build/include/jemalloc/jemalloc.h ]; then
|
||||||
|
cp %{_compiledir}/build/include/jemalloc/jemalloc.h %{buildroot}%{userlocalpath}/include/jemalloc/
|
||||||
|
fi
|
||||||
|
if [ -f %{_compiledir}/build/lib/libjemalloc.so.2 ]; then
|
||||||
|
cp %{_compiledir}/build/lib/libjemalloc.so.2 %{buildroot}%{userlocalpath}/lib/
|
||||||
|
ln -sf libjemalloc.so.2 %{buildroot}%{userlocalpath}/lib/libjemalloc.so
|
||||||
|
fi
|
||||||
|
if [ -f %{_compiledir}/build/lib/libjemalloc.a ]; then
|
||||||
|
cp %{_compiledir}/build/lib/libjemalloc.a %{buildroot}%{userlocalpath}/lib/
|
||||||
|
fi
|
||||||
|
if [ -f %{_compiledir}/build/lib/libjemalloc_pic.a ]; then
|
||||||
|
cp %{_compiledir}/build/lib/libjemalloc_pic.a %{buildroot}%{userlocalpath}/lib/
|
||||||
|
fi
|
||||||
|
if [ -f %{_compiledir}/build/lib/pkgconfig/jemalloc.pc ]; then
|
||||||
|
cp %{_compiledir}/build/lib/pkgconfig/jemalloc.pc %{buildroot}%{userlocalpath}/lib/pkgconfig/
|
||||||
|
fi
|
||||||
|
if [ -f %{_compiledir}/build/share/doc/jemalloc/jemalloc.html ]; then
|
||||||
|
cp %{_compiledir}/build/share/doc/jemalloc/jemalloc.html %{buildroot}%{userlocalpath}/share/doc/jemalloc/
|
||||||
|
fi
|
||||||
|
if [ -f %{_compiledir}/build/share/man/man3/jemalloc.3 ]; then
|
||||||
|
cp %{_compiledir}/build/share/man/man3/jemalloc.3 %{buildroot}%{userlocalpath}/share/man/man3/
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
#Scripts executed before installation
|
#Scripts executed before installation
|
||||||
%pre
|
%pre
|
||||||
csudo=""
|
csudo=""
|
||||||
|
@ -103,7 +148,7 @@ fi
|
||||||
# if taos.cfg already softlink, remove it
|
# if taos.cfg already softlink, remove it
|
||||||
if [ -f %{cfg_install_dir}/taos.cfg ]; then
|
if [ -f %{cfg_install_dir}/taos.cfg ]; then
|
||||||
${csudo} rm -f %{homepath}/cfg/taos.cfg || :
|
${csudo} rm -f %{homepath}/cfg/taos.cfg || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# there can not libtaos.so*, otherwise ln -s error
|
# there can not libtaos.so*, otherwise ln -s error
|
||||||
${csudo} rm -f %{homepath}/driver/libtaos* || :
|
${csudo} rm -f %{homepath}/driver/libtaos* || :
|
||||||
|
@ -116,18 +161,18 @@ if command -v sudo > /dev/null; then
|
||||||
fi
|
fi
|
||||||
cd %{homepath}/script
|
cd %{homepath}/script
|
||||||
${csudo} ./post.sh
|
${csudo} ./post.sh
|
||||||
|
|
||||||
# Scripts executed before uninstall
|
# Scripts executed before uninstall
|
||||||
%preun
|
%preun
|
||||||
csudo=""
|
csudo=""
|
||||||
if command -v sudo > /dev/null; then
|
if command -v sudo > /dev/null; then
|
||||||
csudo="sudo"
|
csudo="sudo"
|
||||||
fi
|
fi
|
||||||
# only remove package to call preun.sh, not but update(2)
|
# only remove package to call preun.sh, not but update(2)
|
||||||
if [ $1 -eq 0 ];then
|
if [ $1 -eq 0 ];then
|
||||||
#cd %{homepath}/script
|
#cd %{homepath}/script
|
||||||
#${csudo} ./preun.sh
|
#${csudo} ./preun.sh
|
||||||
|
|
||||||
if [ -f %{homepath}/script/preun.sh ]; then
|
if [ -f %{homepath}/script/preun.sh ]; then
|
||||||
cd %{homepath}/script
|
cd %{homepath}/script
|
||||||
${csudo} ./preun.sh
|
${csudo} ./preun.sh
|
||||||
|
@ -135,7 +180,7 @@ if [ $1 -eq 0 ];then
|
||||||
bin_link_dir="/usr/bin"
|
bin_link_dir="/usr/bin"
|
||||||
lib_link_dir="/usr/lib"
|
lib_link_dir="/usr/lib"
|
||||||
inc_link_dir="/usr/include"
|
inc_link_dir="/usr/include"
|
||||||
|
|
||||||
data_link_dir="/usr/local/taos/data"
|
data_link_dir="/usr/local/taos/data"
|
||||||
log_link_dir="/usr/local/taos/log"
|
log_link_dir="/usr/local/taos/log"
|
||||||
cfg_link_dir="/usr/local/taos/cfg"
|
cfg_link_dir="/usr/local/taos/cfg"
|
||||||
|
@ -149,20 +194,20 @@ if [ $1 -eq 0 ];then
|
||||||
${csudo} rm -f ${inc_link_dir}/taos.h || :
|
${csudo} rm -f ${inc_link_dir}/taos.h || :
|
||||||
${csudo} rm -f ${inc_link_dir}/taoserror.h || :
|
${csudo} rm -f ${inc_link_dir}/taoserror.h || :
|
||||||
${csudo} rm -f ${lib_link_dir}/libtaos.* || :
|
${csudo} rm -f ${lib_link_dir}/libtaos.* || :
|
||||||
|
|
||||||
${csudo} rm -f ${log_link_dir} || :
|
${csudo} rm -f ${log_link_dir} || :
|
||||||
${csudo} rm -f ${data_link_dir} || :
|
${csudo} rm -f ${data_link_dir} || :
|
||||||
|
|
||||||
pid=$(ps -ef | grep "taosd" | grep -v "grep" | awk '{print $2}')
|
pid=$(ps -ef | grep "taosd" | grep -v "grep" | awk '{print $2}')
|
||||||
if [ -n "$pid" ]; then
|
if [ -n "$pid" ]; then
|
||||||
${csudo} kill -9 $pid || :
|
${csudo} kill -9 $pid || :
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Scripts executed after uninstall
|
# Scripts executed after uninstall
|
||||||
%postun
|
%postun
|
||||||
|
|
||||||
# clean build dir
|
# clean build dir
|
||||||
%clean
|
%clean
|
||||||
csudo=""
|
csudo=""
|
||||||
|
|
|
@ -59,11 +59,11 @@ initd_mod=0
|
||||||
service_mod=2
|
service_mod=2
|
||||||
if pidof systemd &> /dev/null; then
|
if pidof systemd &> /dev/null; then
|
||||||
service_mod=0
|
service_mod=0
|
||||||
elif $(which service &> /dev/null); then
|
elif $(which service &> /dev/null); then
|
||||||
service_mod=1
|
service_mod=1
|
||||||
service_config_dir="/etc/init.d"
|
service_config_dir="/etc/init.d"
|
||||||
if $(which chkconfig &> /dev/null); then
|
if $(which chkconfig &> /dev/null); then
|
||||||
initd_mod=1
|
initd_mod=1
|
||||||
elif $(which insserv &> /dev/null); then
|
elif $(which insserv &> /dev/null); then
|
||||||
initd_mod=2
|
initd_mod=2
|
||||||
elif $(which update-rc.d &> /dev/null); then
|
elif $(which update-rc.d &> /dev/null); then
|
||||||
|
@ -71,7 +71,7 @@ elif $(which service &> /dev/null); then
|
||||||
else
|
else
|
||||||
service_mod=2
|
service_mod=2
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
service_mod=2
|
service_mod=2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ elif echo $osinfo | grep -qwi "fedora" ; then
|
||||||
os_type=2
|
os_type=2
|
||||||
else
|
else
|
||||||
echo " osinfo: ${osinfo}"
|
echo " osinfo: ${osinfo}"
|
||||||
echo " This is an officially unverified linux system,"
|
echo " This is an officially unverified linux system,"
|
||||||
echo " if there are any problems with the installation and operation, "
|
echo " if there are any problems with the installation and operation, "
|
||||||
echo " please feel free to contact taosdata.com for support."
|
echo " please feel free to contact taosdata.com for support."
|
||||||
os_type=1
|
os_type=1
|
||||||
|
@ -138,7 +138,7 @@ do
|
||||||
echo "Usage: `basename $0` -v [server | client] -e [yes | no]"
|
echo "Usage: `basename $0` -v [server | client] -e [yes | no]"
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
?) #unknow option
|
?) #unknow option
|
||||||
echo "unkonw argument"
|
echo "unkonw argument"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
|
@ -157,9 +157,9 @@ function kill_process() {
|
||||||
function install_main_path() {
|
function install_main_path() {
|
||||||
#create install main dir and all sub dir
|
#create install main dir and all sub dir
|
||||||
${csudo} rm -rf ${install_main_dir} || :
|
${csudo} rm -rf ${install_main_dir} || :
|
||||||
${csudo} mkdir -p ${install_main_dir}
|
${csudo} mkdir -p ${install_main_dir}
|
||||||
${csudo} mkdir -p ${install_main_dir}/cfg
|
${csudo} mkdir -p ${install_main_dir}/cfg
|
||||||
${csudo} mkdir -p ${install_main_dir}/bin
|
${csudo} mkdir -p ${install_main_dir}/bin
|
||||||
${csudo} mkdir -p ${install_main_dir}/connector
|
${csudo} mkdir -p ${install_main_dir}/connector
|
||||||
${csudo} mkdir -p ${install_main_dir}/driver
|
${csudo} mkdir -p ${install_main_dir}/driver
|
||||||
${csudo} mkdir -p ${install_main_dir}/examples
|
${csudo} mkdir -p ${install_main_dir}/examples
|
||||||
|
@ -168,10 +168,10 @@ function install_main_path() {
|
||||||
if [ "$verMode" == "cluster" ]; then
|
if [ "$verMode" == "cluster" ]; then
|
||||||
${csudo} mkdir -p ${nginx_dir}
|
${csudo} mkdir -p ${nginx_dir}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -e ${script_dir}/email ]]; then
|
if [[ -e ${script_dir}/email ]]; then
|
||||||
${csudo} cp ${script_dir}/email ${install_main_dir}/ ||:
|
${csudo} cp ${script_dir}/email ${install_main_dir}/ ||:
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_bin() {
|
function install_bin() {
|
||||||
|
@ -207,29 +207,75 @@ function install_lib() {
|
||||||
${csudo} rm -f ${lib_link_dir}/libtaos.* || :
|
${csudo} rm -f ${lib_link_dir}/libtaos.* || :
|
||||||
${csudo} rm -f ${lib64_link_dir}/libtaos.* || :
|
${csudo} rm -f ${lib64_link_dir}/libtaos.* || :
|
||||||
#${csudo} rm -rf ${v15_java_app_dir} || :
|
#${csudo} rm -rf ${v15_java_app_dir} || :
|
||||||
${csudo} cp -rf ${script_dir}/driver/* ${install_main_dir}/driver && ${csudo} chmod 777 ${install_main_dir}/driver/*
|
${csudo} cp -rf ${script_dir}/driver/* ${install_main_dir}/driver && ${csudo} chmod 777 ${install_main_dir}/driver/*
|
||||||
|
|
||||||
${csudo} ln -s ${install_main_dir}/driver/libtaos.* ${lib_link_dir}/libtaos.so.1
|
${csudo} ln -s ${install_main_dir}/driver/libtaos.* ${lib_link_dir}/libtaos.so.1
|
||||||
${csudo} ln -s ${lib_link_dir}/libtaos.so.1 ${lib_link_dir}/libtaos.so
|
${csudo} ln -s ${lib_link_dir}/libtaos.so.1 ${lib_link_dir}/libtaos.so
|
||||||
|
|
||||||
if [[ -d ${lib64_link_dir} && ! -e ${lib64_link_dir}/libtaos.so ]]; then
|
if [[ -d ${lib64_link_dir} && ! -e ${lib64_link_dir}/libtaos.so ]]; then
|
||||||
${csudo} ln -s ${install_main_dir}/driver/libtaos.* ${lib64_link_dir}/libtaos.so.1 || :
|
${csudo} ln -s ${install_main_dir}/driver/libtaos.* ${lib64_link_dir}/libtaos.so.1 || :
|
||||||
${csudo} ln -s ${lib64_link_dir}/libtaos.so.1 ${lib64_link_dir}/libtaos.so || :
|
${csudo} ln -s ${lib64_link_dir}/libtaos.so.1 ${lib64_link_dir}/libtaos.so || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#if [ "$verMode" == "cluster" ]; then
|
#if [ "$verMode" == "cluster" ]; then
|
||||||
# # Compatible with version 1.5
|
# # Compatible with version 1.5
|
||||||
# ${csudo} mkdir -p ${v15_java_app_dir}
|
# ${csudo} mkdir -p ${v15_java_app_dir}
|
||||||
# ${csudo} ln -s ${install_main_dir}/connector/taos-jdbcdriver-1.0.2-dist.jar ${v15_java_app_dir}/JDBCDriver-1.0.2-dist.jar
|
# ${csudo} ln -s ${install_main_dir}/connector/taos-jdbcdriver-1.0.2-dist.jar ${v15_java_app_dir}/JDBCDriver-1.0.2-dist.jar
|
||||||
# ${csudo} chmod 777 ${v15_java_app_dir} || :
|
# ${csudo} chmod 777 ${v15_java_app_dir} || :
|
||||||
#fi
|
#fi
|
||||||
|
|
||||||
${csudo} ldconfig
|
${csudo} ldconfig
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function install_jemalloc() {
|
||||||
|
jemalloc_dir=${script_dir}/jemalloc
|
||||||
|
|
||||||
|
if [ -d ${jemalloc_dir} ]; then
|
||||||
|
${csudo} /usr/bin/install -c -d /usr/local/bin
|
||||||
|
|
||||||
|
if [ -f ${jemalloc_dir}/bin/jemalloc-config ]; then
|
||||||
|
${csudo} /usr/bin/install -c -m 755 ${jemalloc_dir}/bin/jemalloc-config /usr/local/bin
|
||||||
|
fi
|
||||||
|
if [ -f ${jemalloc_dir}/bin/jemalloc.sh ]; then
|
||||||
|
${csudo} /usr/bin/install -c -m 755 ${jemalloc_dir}/bin/jemalloc.sh /usr/local/bin
|
||||||
|
fi
|
||||||
|
if [ -f ${jemalloc_dir}/bin/jeprof ]; then
|
||||||
|
${csudo} /usr/bin/install -c -m 755 ${jemalloc_dir}/bin/jeprof /usr/local/bin
|
||||||
|
fi
|
||||||
|
if [ -f ${jemalloc_dir}/include/jemalloc/jemalloc.h ]; then
|
||||||
|
${csudo} /usr/bin/install -c -d /usr/local/include/jemalloc
|
||||||
|
${csudo} /usr/bin/install -c -m 644 ${jemalloc_dir}/include/jemalloc/jemalloc.h /usr/local/include/jemalloc
|
||||||
|
fi
|
||||||
|
if [ -f ${jemalloc_dir}/lib/libjemalloc.so.2 ]; then
|
||||||
|
${csudo} /usr/bin/install -c -d /usr/local/lib
|
||||||
|
${csudo} /usr/bin/install -c -m 755 ${jemalloc_dir}/lib/libjemalloc.so.2 /usr/local/lib
|
||||||
|
${csudo} ln -sf libjemalloc.so.2 /usr/local/lib/libjemalloc.so
|
||||||
|
${csudo} /usr/bin/install -c -d /usr/local/lib
|
||||||
|
if [ -f ${jemalloc_dir}/lib/libjemalloc.a ]; then
|
||||||
|
${csudo} /usr/bin/install -c -m 755 ${jemalloc_dir}/lib/libjemalloc.a /usr/local/lib
|
||||||
|
fi
|
||||||
|
if [ -f ${jemalloc_dir}/lib/libjemalloc_pic.a ]; then
|
||||||
|
${csudo} /usr/bin/install -c -m 755 ${jemalloc_dir}/lib/libjemalloc_pic.a /usr/local/lib
|
||||||
|
fi
|
||||||
|
if [ -f ${jemalloc_dir}/lib/libjemalloc_pic.a ]; then
|
||||||
|
${csudo} /usr/bin/install -c -d /usr/local/lib/pkgconfig
|
||||||
|
${csudo} /usr/bin/install -c -m 644 ${jemalloc_dir}/lib/pkgconfig/jemalloc.pc /usr/local/lib/pkgconfig
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -f ${jemalloc_dir}/share/doc/jemalloc/jemalloc.html ]; then
|
||||||
|
${csudo} /usr/bin/install -c -d /usr/local/share/doc/jemalloc
|
||||||
|
${csudo} /usr/bin/install -c -m 644 ${jemalloc_dir}/share/doc/jemalloc/jemalloc.html /usr/local/share/doc/jemalloc
|
||||||
|
fi
|
||||||
|
if [ -f ${jemalloc_dir}/share/man/man3/jemalloc.3 ]; then
|
||||||
|
${csudo} /usr/bin/install -c -d /usr/local/share/man/man3
|
||||||
|
${csudo} /usr/bin/install -c -m 644 ${jemalloc_dir}/share/man/man3/jemalloc.3 /usr/local/share/man/man3
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function install_header() {
|
function install_header() {
|
||||||
${csudo} rm -f ${inc_link_dir}/taos.h ${inc_link_dir}/taoserror.h || :
|
${csudo} rm -f ${inc_link_dir}/taos.h ${inc_link_dir}/taoserror.h || :
|
||||||
${csudo} cp -f ${script_dir}/inc/* ${install_main_dir}/include && ${csudo} chmod 644 ${install_main_dir}/include/*
|
${csudo} cp -f ${script_dir}/inc/* ${install_main_dir}/include && ${csudo} chmod 644 ${install_main_dir}/include/*
|
||||||
${csudo} ln -s ${install_main_dir}/include/taos.h ${inc_link_dir}/taos.h
|
${csudo} ln -s ${install_main_dir}/include/taos.h ${inc_link_dir}/taos.h
|
||||||
${csudo} ln -s ${install_main_dir}/include/taoserror.h ${inc_link_dir}/taoserror.h
|
${csudo} ln -s ${install_main_dir}/include/taoserror.h ${inc_link_dir}/taoserror.h
|
||||||
}
|
}
|
||||||
|
@ -246,13 +292,13 @@ function add_newHostname_to_hosts() {
|
||||||
if [[ "$s" == "$localIp" ]]; then
|
if [[ "$s" == "$localIp" ]]; then
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
${csudo} echo "127.0.0.1 $1" >> /etc/hosts ||:
|
${csudo} echo "127.0.0.1 $1" >> /etc/hosts ||:
|
||||||
}
|
}
|
||||||
|
|
||||||
function set_hostname() {
|
function set_hostname() {
|
||||||
echo -e -n "${GREEN}Please enter one hostname(must not be 'localhost')${NC}:"
|
echo -e -n "${GREEN}Please enter one hostname(must not be 'localhost')${NC}:"
|
||||||
read newHostname
|
read newHostname
|
||||||
while true; do
|
while true; do
|
||||||
if [[ ! -z "$newHostname" && "$newHostname" != "localhost" ]]; then
|
if [[ ! -z "$newHostname" && "$newHostname" != "localhost" ]]; then
|
||||||
break
|
break
|
||||||
|
@ -266,25 +312,25 @@ function set_hostname() {
|
||||||
if [[ $retval != 0 ]]; then
|
if [[ $retval != 0 ]]; then
|
||||||
echo
|
echo
|
||||||
echo "set hostname fail!"
|
echo "set hostname fail!"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
#echo -e -n "$(hostnamectl status --static)"
|
#echo -e -n "$(hostnamectl status --static)"
|
||||||
#echo -e -n "$(hostnamectl status --transient)"
|
#echo -e -n "$(hostnamectl status --transient)"
|
||||||
#echo -e -n "$(hostnamectl status --pretty)"
|
#echo -e -n "$(hostnamectl status --pretty)"
|
||||||
|
|
||||||
#ubuntu/centos /etc/hostname
|
#ubuntu/centos /etc/hostname
|
||||||
if [[ -e /etc/hostname ]]; then
|
if [[ -e /etc/hostname ]]; then
|
||||||
${csudo} echo $newHostname > /etc/hostname ||:
|
${csudo} echo $newHostname > /etc/hostname ||:
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#debian: #HOSTNAME=yourname
|
#debian: #HOSTNAME=yourname
|
||||||
if [[ -e /etc/sysconfig/network ]]; then
|
if [[ -e /etc/sysconfig/network ]]; then
|
||||||
${csudo} sed -i -r "s/#*\s*(HOSTNAME=\s*).*/\1$newHostname/" /etc/sysconfig/network ||:
|
${csudo} sed -i -r "s/#*\s*(HOSTNAME=\s*).*/\1$newHostname/" /etc/sysconfig/network ||:
|
||||||
fi
|
fi
|
||||||
|
|
||||||
${csudo} sed -i -r "s/#*\s*(fqdn\s*).*/\1$newHostname/" ${cfg_install_dir}/taos.cfg
|
${csudo} sed -i -r "s/#*\s*(fqdn\s*).*/\1$newHostname/" ${cfg_install_dir}/taos.cfg
|
||||||
serverFqdn=$newHostname
|
serverFqdn=$newHostname
|
||||||
|
|
||||||
if [[ -e /etc/hosts ]]; then
|
if [[ -e /etc/hosts ]]; then
|
||||||
add_newHostname_to_hosts $newHostname
|
add_newHostname_to_hosts $newHostname
|
||||||
fi
|
fi
|
||||||
|
@ -302,7 +348,7 @@ function is_correct_ipaddr() {
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -316,13 +362,13 @@ function set_ipAsFqdn() {
|
||||||
echo
|
echo
|
||||||
echo -e -n "${GREEN}Unable to get local ip, use 127.0.0.1${NC}"
|
echo -e -n "${GREEN}Unable to get local ip, use 127.0.0.1${NC}"
|
||||||
localFqdn="127.0.0.1"
|
localFqdn="127.0.0.1"
|
||||||
# Write the local FQDN to configuration file
|
# Write the local FQDN to configuration file
|
||||||
${csudo} sed -i -r "s/#*\s*(fqdn\s*).*/\1$localFqdn/" ${cfg_install_dir}/taos.cfg
|
${csudo} sed -i -r "s/#*\s*(fqdn\s*).*/\1$localFqdn/" ${cfg_install_dir}/taos.cfg
|
||||||
serverFqdn=$localFqdn
|
serverFqdn=$localFqdn
|
||||||
echo
|
echo
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -e -n "${GREEN}Please choose an IP from local IP list${NC}:"
|
echo -e -n "${GREEN}Please choose an IP from local IP list${NC}:"
|
||||||
echo
|
echo
|
||||||
echo -e -n "${GREEN}$iplist${NC}"
|
echo -e -n "${GREEN}$iplist${NC}"
|
||||||
|
@ -331,15 +377,15 @@ function set_ipAsFqdn() {
|
||||||
echo -e -n "${GREEN}Notes: if IP is used as the node name, data can NOT be migrated to other machine directly${NC}:"
|
echo -e -n "${GREEN}Notes: if IP is used as the node name, data can NOT be migrated to other machine directly${NC}:"
|
||||||
read localFqdn
|
read localFqdn
|
||||||
while true; do
|
while true; do
|
||||||
if [ ! -z "$localFqdn" ]; then
|
if [ ! -z "$localFqdn" ]; then
|
||||||
# Check if correct ip address
|
# Check if correct ip address
|
||||||
is_correct_ipaddr $localFqdn
|
is_correct_ipaddr $localFqdn
|
||||||
retval=`echo $?`
|
retval=`echo $?`
|
||||||
if [[ $retval != 0 ]]; then
|
if [[ $retval != 0 ]]; then
|
||||||
read -p "Please choose an IP from local IP list:" localFqdn
|
read -p "Please choose an IP from local IP list:" localFqdn
|
||||||
else
|
else
|
||||||
# Write the local FQDN to configuration file
|
# Write the local FQDN to configuration file
|
||||||
${csudo} sed -i -r "s/#*\s*(fqdn\s*).*/\1$localFqdn/" ${cfg_install_dir}/taos.cfg
|
${csudo} sed -i -r "s/#*\s*(fqdn\s*).*/\1$localFqdn/" ${cfg_install_dir}/taos.cfg
|
||||||
serverFqdn=$localFqdn
|
serverFqdn=$localFqdn
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
|
@ -354,59 +400,59 @@ function local_fqdn_check() {
|
||||||
echo
|
echo
|
||||||
echo -e -n "System hostname is: ${GREEN}$serverFqdn${NC}"
|
echo -e -n "System hostname is: ${GREEN}$serverFqdn${NC}"
|
||||||
echo
|
echo
|
||||||
if [[ "$serverFqdn" == "" ]] || [[ "$serverFqdn" == "localhost" ]]; then
|
if [[ "$serverFqdn" == "" ]] || [[ "$serverFqdn" == "localhost" ]]; then
|
||||||
echo -e -n "${GREEN}It is strongly recommended to configure a hostname for this machine ${NC}"
|
echo -e -n "${GREEN}It is strongly recommended to configure a hostname for this machine ${NC}"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
while true
|
while true
|
||||||
do
|
do
|
||||||
read -r -p "Set hostname now? [Y/n] " input
|
read -r -p "Set hostname now? [Y/n] " input
|
||||||
if [ ! -n "$input" ]; then
|
if [ ! -n "$input" ]; then
|
||||||
set_hostname
|
set_hostname
|
||||||
break
|
break
|
||||||
else
|
else
|
||||||
case $input in
|
case $input in
|
||||||
[yY][eE][sS]|[yY])
|
[yY][eE][sS]|[yY])
|
||||||
set_hostname
|
set_hostname
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[nN][oO]|[nN])
|
[nN][oO]|[nN])
|
||||||
set_ipAsFqdn
|
set_ipAsFqdn
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
echo "Invalid input..."
|
echo "Invalid input..."
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_config() {
|
function install_config() {
|
||||||
#${csudo} rm -f ${install_main_dir}/cfg/taos.cfg || :
|
#${csudo} rm -f ${install_main_dir}/cfg/taos.cfg || :
|
||||||
|
|
||||||
if [ ! -f ${cfg_install_dir}/taos.cfg ]; then
|
if [ ! -f ${cfg_install_dir}/taos.cfg ]; then
|
||||||
${csudo} mkdir -p ${cfg_install_dir}
|
${csudo} mkdir -p ${cfg_install_dir}
|
||||||
[ -f ${script_dir}/cfg/taos.cfg ] && ${csudo} cp ${script_dir}/cfg/taos.cfg ${cfg_install_dir}
|
[ -f ${script_dir}/cfg/taos.cfg ] && ${csudo} cp ${script_dir}/cfg/taos.cfg ${cfg_install_dir}
|
||||||
${csudo} chmod 644 ${cfg_install_dir}/*
|
${csudo} chmod 644 ${cfg_install_dir}/*
|
||||||
fi
|
fi
|
||||||
|
|
||||||
${csudo} cp -f ${script_dir}/cfg/taos.cfg ${install_main_dir}/cfg/taos.cfg.org
|
${csudo} cp -f ${script_dir}/cfg/taos.cfg ${install_main_dir}/cfg/taos.cfg.org
|
||||||
${csudo} ln -s ${cfg_install_dir}/taos.cfg ${install_main_dir}/cfg
|
${csudo} ln -s ${cfg_install_dir}/taos.cfg ${install_main_dir}/cfg
|
||||||
|
|
||||||
[ ! -z $1 ] && return 0 || : # only install client
|
[ ! -z $1 ] && return 0 || : # only install client
|
||||||
|
|
||||||
if ((${update_flag}==1)); then
|
if ((${update_flag}==1)); then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$interactiveFqdn" == "no" ]; then
|
if [ "$interactiveFqdn" == "no" ]; then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local_fqdn_check
|
local_fqdn_check
|
||||||
|
|
||||||
#FQDN_FORMAT="(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
|
#FQDN_FORMAT="(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
|
||||||
|
@ -424,8 +470,8 @@ function install_config() {
|
||||||
if [ ! -z "$firstEp" ]; then
|
if [ ! -z "$firstEp" ]; then
|
||||||
# check the format of the firstEp
|
# check the format of the firstEp
|
||||||
#if [[ $firstEp == $FQDN_PATTERN ]]; then
|
#if [[ $firstEp == $FQDN_PATTERN ]]; then
|
||||||
# Write the first FQDN to configuration file
|
# Write the first FQDN to configuration file
|
||||||
${csudo} sed -i -r "s/#*\s*(firstEp\s*).*/\1$firstEp/" ${cfg_install_dir}/taos.cfg
|
${csudo} sed -i -r "s/#*\s*(firstEp\s*).*/\1$firstEp/" ${cfg_install_dir}/taos.cfg
|
||||||
break
|
break
|
||||||
#else
|
#else
|
||||||
# read -p "Please enter the correct FQDN:port: " firstEp
|
# read -p "Please enter the correct FQDN:port: " firstEp
|
||||||
|
@ -433,9 +479,9 @@ function install_config() {
|
||||||
else
|
else
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# user email
|
# user email
|
||||||
#EMAIL_PATTERN='^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$'
|
#EMAIL_PATTERN='^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$'
|
||||||
#EMAIL_PATTERN='^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$'
|
#EMAIL_PATTERN='^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$'
|
||||||
#EMAIL_PATTERN="^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"
|
#EMAIL_PATTERN="^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"
|
||||||
|
@ -446,31 +492,31 @@ function install_config() {
|
||||||
if [ ! -z "$emailAddr" ]; then
|
if [ ! -z "$emailAddr" ]; then
|
||||||
# check the format of the emailAddr
|
# check the format of the emailAddr
|
||||||
#if [[ "$emailAddr" =~ $EMAIL_PATTERN ]]; then
|
#if [[ "$emailAddr" =~ $EMAIL_PATTERN ]]; then
|
||||||
# Write the email address to temp file
|
# Write the email address to temp file
|
||||||
email_file="${install_main_dir}/email"
|
email_file="${install_main_dir}/email"
|
||||||
${csudo} bash -c "echo $emailAddr > ${email_file}"
|
${csudo} bash -c "echo $emailAddr > ${email_file}"
|
||||||
break
|
break
|
||||||
#else
|
#else
|
||||||
# read -p "Please enter the correct email address: " emailAddr
|
# read -p "Please enter the correct email address: " emailAddr
|
||||||
#fi
|
#fi
|
||||||
else
|
else
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function install_log() {
|
function install_log() {
|
||||||
${csudo} rm -rf ${log_dir} || :
|
${csudo} rm -rf ${log_dir} || :
|
||||||
${csudo} mkdir -p ${log_dir} && ${csudo} chmod 777 ${log_dir}
|
${csudo} mkdir -p ${log_dir} && ${csudo} chmod 777 ${log_dir}
|
||||||
|
|
||||||
${csudo} ln -s ${log_dir} ${install_main_dir}/log
|
${csudo} ln -s ${log_dir} ${install_main_dir}/log
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_data() {
|
function install_data() {
|
||||||
${csudo} mkdir -p ${data_dir}
|
${csudo} mkdir -p ${data_dir}
|
||||||
|
|
||||||
${csudo} ln -s ${data_dir} ${install_main_dir}/data
|
${csudo} ln -s ${data_dir} ${install_main_dir}/data
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_connector() {
|
function install_connector() {
|
||||||
|
@ -485,26 +531,26 @@ function install_examples() {
|
||||||
|
|
||||||
function clean_service_on_sysvinit() {
|
function clean_service_on_sysvinit() {
|
||||||
#restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start"
|
#restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start"
|
||||||
#${csudo} sed -i "\|${restart_config_str}|d" /etc/inittab || :
|
#${csudo} sed -i "\|${restart_config_str}|d" /etc/inittab || :
|
||||||
|
|
||||||
if pidof taosd &> /dev/null; then
|
if pidof taosd &> /dev/null; then
|
||||||
${csudo} service taosd stop || :
|
${csudo} service taosd stop || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if pidof tarbitrator &> /dev/null; then
|
if pidof tarbitrator &> /dev/null; then
|
||||||
${csudo} service tarbitratord stop || :
|
${csudo} service tarbitratord stop || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ((${initd_mod}==1)); then
|
if ((${initd_mod}==1)); then
|
||||||
if [ -e ${service_config_dir}/taosd ]; then
|
if [ -e ${service_config_dir}/taosd ]; then
|
||||||
${csudo} chkconfig --del taosd || :
|
${csudo} chkconfig --del taosd || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -e ${service_config_dir}/tarbitratord ]; then
|
if [ -e ${service_config_dir}/tarbitratord ]; then
|
||||||
${csudo} chkconfig --del tarbitratord || :
|
${csudo} chkconfig --del tarbitratord || :
|
||||||
fi
|
fi
|
||||||
elif ((${initd_mod}==2)); then
|
elif ((${initd_mod}==2)); then
|
||||||
if [ -e ${service_config_dir}/taosd ]; then
|
if [ -e ${service_config_dir}/taosd ]; then
|
||||||
${csudo} insserv -r taosd || :
|
${csudo} insserv -r taosd || :
|
||||||
fi
|
fi
|
||||||
if [ -e ${service_config_dir}/tarbitratord ]; then
|
if [ -e ${service_config_dir}/tarbitratord ]; then
|
||||||
|
@ -518,10 +564,10 @@ function clean_service_on_sysvinit() {
|
||||||
${csudo} update-rc.d -f tarbitratord remove || :
|
${csudo} update-rc.d -f tarbitratord remove || :
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
${csudo} rm -f ${service_config_dir}/taosd || :
|
${csudo} rm -f ${service_config_dir}/taosd || :
|
||||||
${csudo} rm -f ${service_config_dir}/tarbitratord || :
|
${csudo} rm -f ${service_config_dir}/tarbitratord || :
|
||||||
|
|
||||||
if $(which init &> /dev/null); then
|
if $(which init &> /dev/null); then
|
||||||
${csudo} init q || :
|
${csudo} init q || :
|
||||||
fi
|
fi
|
||||||
|
@ -544,10 +590,10 @@ function install_service_on_sysvinit() {
|
||||||
${csudo} cp -f ${script_dir}/init.d/tarbitratord.rpm ${install_main_dir}/init.d/tarbitratord
|
${csudo} cp -f ${script_dir}/init.d/tarbitratord.rpm ${install_main_dir}/init.d/tarbitratord
|
||||||
${csudo} cp ${script_dir}/init.d/tarbitratord.rpm ${service_config_dir}/tarbitratord && ${csudo} chmod a+x ${service_config_dir}/tarbitratord
|
${csudo} cp ${script_dir}/init.d/tarbitratord.rpm ${service_config_dir}/tarbitratord && ${csudo} chmod a+x ${service_config_dir}/tarbitratord
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start"
|
#restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start"
|
||||||
#${csudo} grep -q -F "$restart_config_str" /etc/inittab || ${csudo} bash -c "echo '${restart_config_str}' >> /etc/inittab"
|
#${csudo} grep -q -F "$restart_config_str" /etc/inittab || ${csudo} bash -c "echo '${restart_config_str}' >> /etc/inittab"
|
||||||
|
|
||||||
if ((${initd_mod}==1)); then
|
if ((${initd_mod}==1)); then
|
||||||
${csudo} chkconfig --add taosd || :
|
${csudo} chkconfig --add taosd || :
|
||||||
${csudo} chkconfig --level 2345 taosd on || :
|
${csudo} chkconfig --level 2345 taosd on || :
|
||||||
|
@ -572,7 +618,7 @@ function clean_service_on_systemd() {
|
||||||
fi
|
fi
|
||||||
${csudo} systemctl disable taosd &> /dev/null || echo &> /dev/null
|
${csudo} systemctl disable taosd &> /dev/null || echo &> /dev/null
|
||||||
${csudo} rm -f ${taosd_service_config}
|
${csudo} rm -f ${taosd_service_config}
|
||||||
|
|
||||||
tarbitratord_service_config="${service_config_dir}/tarbitratord.service"
|
tarbitratord_service_config="${service_config_dir}/tarbitratord.service"
|
||||||
if systemctl is-active --quiet tarbitratord; then
|
if systemctl is-active --quiet tarbitratord; then
|
||||||
echo "tarbitrator is running, stopping it..."
|
echo "tarbitrator is running, stopping it..."
|
||||||
|
@ -580,7 +626,7 @@ function clean_service_on_systemd() {
|
||||||
fi
|
fi
|
||||||
${csudo} systemctl disable tarbitratord &> /dev/null || echo &> /dev/null
|
${csudo} systemctl disable tarbitratord &> /dev/null || echo &> /dev/null
|
||||||
${csudo} rm -f ${tarbitratord_service_config}
|
${csudo} rm -f ${tarbitratord_service_config}
|
||||||
|
|
||||||
if [ "$verMode" == "cluster" ]; then
|
if [ "$verMode" == "cluster" ]; then
|
||||||
nginx_service_config="${service_config_dir}/nginxd.service"
|
nginx_service_config="${service_config_dir}/nginxd.service"
|
||||||
if systemctl is-active --quiet nginxd; then
|
if systemctl is-active --quiet nginxd; then
|
||||||
|
@ -588,8 +634,8 @@ function clean_service_on_systemd() {
|
||||||
${csudo} systemctl stop nginxd &> /dev/null || echo &> /dev/null
|
${csudo} systemctl stop nginxd &> /dev/null || echo &> /dev/null
|
||||||
fi
|
fi
|
||||||
${csudo} systemctl disable nginxd &> /dev/null || echo &> /dev/null
|
${csudo} systemctl disable nginxd &> /dev/null || echo &> /dev/null
|
||||||
${csudo} rm -f ${nginx_service_config}
|
${csudo} rm -f ${nginx_service_config}
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# taos:2345:respawn:/etc/init.d/taosd start
|
# taos:2345:respawn:/etc/init.d/taosd start
|
||||||
|
@ -621,7 +667,7 @@ function install_service_on_systemd() {
|
||||||
${csudo} bash -c "echo '[Install]' >> ${taosd_service_config}"
|
${csudo} bash -c "echo '[Install]' >> ${taosd_service_config}"
|
||||||
${csudo} bash -c "echo 'WantedBy=multi-user.target' >> ${taosd_service_config}"
|
${csudo} bash -c "echo 'WantedBy=multi-user.target' >> ${taosd_service_config}"
|
||||||
${csudo} systemctl enable taosd
|
${csudo} systemctl enable taosd
|
||||||
|
|
||||||
tarbitratord_service_config="${service_config_dir}/tarbitratord.service"
|
tarbitratord_service_config="${service_config_dir}/tarbitratord.service"
|
||||||
${csudo} bash -c "echo '[Unit]' >> ${tarbitratord_service_config}"
|
${csudo} bash -c "echo '[Unit]' >> ${tarbitratord_service_config}"
|
||||||
${csudo} bash -c "echo 'Description=TDengine arbitrator service' >> ${tarbitratord_service_config}"
|
${csudo} bash -c "echo 'Description=TDengine arbitrator service' >> ${tarbitratord_service_config}"
|
||||||
|
@ -643,9 +689,9 @@ function install_service_on_systemd() {
|
||||||
${csudo} bash -c "echo >> ${tarbitratord_service_config}"
|
${csudo} bash -c "echo >> ${tarbitratord_service_config}"
|
||||||
${csudo} bash -c "echo '[Install]' >> ${tarbitratord_service_config}"
|
${csudo} bash -c "echo '[Install]' >> ${tarbitratord_service_config}"
|
||||||
${csudo} bash -c "echo 'WantedBy=multi-user.target' >> ${tarbitratord_service_config}"
|
${csudo} bash -c "echo 'WantedBy=multi-user.target' >> ${tarbitratord_service_config}"
|
||||||
#${csudo} systemctl enable tarbitratord
|
#${csudo} systemctl enable tarbitratord
|
||||||
|
|
||||||
if [ "$verMode" == "cluster" ]; then
|
if [ "$verMode" == "cluster" ]; then
|
||||||
nginx_service_config="${service_config_dir}/nginxd.service"
|
nginx_service_config="${service_config_dir}/nginxd.service"
|
||||||
${csudo} bash -c "echo '[Unit]' >> ${nginx_service_config}"
|
${csudo} bash -c "echo '[Unit]' >> ${nginx_service_config}"
|
||||||
${csudo} bash -c "echo 'Description=Nginx For TDengine Service' >> ${nginx_service_config}"
|
${csudo} bash -c "echo 'Description=Nginx For TDengine Service' >> ${nginx_service_config}"
|
||||||
|
@ -674,7 +720,7 @@ function install_service_on_systemd() {
|
||||||
${csudo} systemctl enable nginxd
|
${csudo} systemctl enable nginxd
|
||||||
fi
|
fi
|
||||||
${csudo} systemctl start nginxd
|
${csudo} systemctl start nginxd
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_service() {
|
function install_service() {
|
||||||
|
@ -757,7 +803,7 @@ function update_TDengine() {
|
||||||
fi
|
fi
|
||||||
sleep 1
|
sleep 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$verMode" == "cluster" ]; then
|
if [ "$verMode" == "cluster" ]; then
|
||||||
if pidof nginx &> /dev/null; then
|
if pidof nginx &> /dev/null; then
|
||||||
if ((${service_mod}==0)); then
|
if ((${service_mod}==0)); then
|
||||||
|
@ -770,12 +816,13 @@ function update_TDengine() {
|
||||||
sleep 1
|
sleep 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
install_main_path
|
install_main_path
|
||||||
|
|
||||||
install_log
|
install_log
|
||||||
install_header
|
install_header
|
||||||
install_lib
|
install_lib
|
||||||
|
install_jemalloc
|
||||||
if [ "$pagMode" != "lite" ]; then
|
if [ "$pagMode" != "lite" ]; then
|
||||||
install_connector
|
install_connector
|
||||||
fi
|
fi
|
||||||
|
@ -783,10 +830,10 @@ function update_TDengine() {
|
||||||
if [ -z $1 ]; then
|
if [ -z $1 ]; then
|
||||||
install_bin
|
install_bin
|
||||||
install_service
|
install_service
|
||||||
install_config
|
install_config
|
||||||
|
|
||||||
openresty_work=false
|
openresty_work=false
|
||||||
if [ "$verMode" == "cluster" ]; then
|
if [ "$verMode" == "cluster" ]; then
|
||||||
# Check if openresty is installed
|
# Check if openresty is installed
|
||||||
# Check if nginx is installed successfully
|
# Check if nginx is installed successfully
|
||||||
if type curl &> /dev/null; then
|
if type curl &> /dev/null; then
|
||||||
|
@ -797,7 +844,7 @@ function update_TDengine() {
|
||||||
echo -e "\033[44;31;5mNginx for TDengine does not work! Please try again!\033[0m"
|
echo -e "\033[44;31;5mNginx for TDengine does not work! Please try again!\033[0m"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#echo
|
#echo
|
||||||
#echo -e "\033[44;32;1mTDengine is updated successfully!${NC}"
|
#echo -e "\033[44;32;1mTDengine is updated successfully!${NC}"
|
||||||
|
@ -816,7 +863,7 @@ function update_TDengine() {
|
||||||
else
|
else
|
||||||
echo -e "${GREEN_DARK}To access TDengine ${NC}: use ${GREEN_UNDERLINE}taos -h $serverFqdn${NC} in shell${NC}"
|
echo -e "${GREEN_DARK}To access TDengine ${NC}: use ${GREEN_UNDERLINE}taos -h $serverFqdn${NC} in shell${NC}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo -e "\033[44;32;1mTDengine is updated successfully!${NC}"
|
echo -e "\033[44;32;1mTDengine is updated successfully!${NC}"
|
||||||
else
|
else
|
||||||
|
@ -839,14 +886,14 @@ function install_TDengine() {
|
||||||
tar -zxf taos.tar.gz
|
tar -zxf taos.tar.gz
|
||||||
|
|
||||||
echo -e "${GREEN}Start to install TDengine...${NC}"
|
echo -e "${GREEN}Start to install TDengine...${NC}"
|
||||||
|
|
||||||
install_main_path
|
install_main_path
|
||||||
|
|
||||||
if [ -z $1 ]; then
|
if [ -z $1 ]; then
|
||||||
install_data
|
install_data
|
||||||
fi
|
fi
|
||||||
|
|
||||||
install_log
|
install_log
|
||||||
install_header
|
install_header
|
||||||
install_lib
|
install_lib
|
||||||
if [ "$pagMode" != "lite" ]; then
|
if [ "$pagMode" != "lite" ]; then
|
||||||
|
@ -871,8 +918,8 @@ function install_TDengine() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
install_config
|
install_config
|
||||||
|
|
||||||
# Ask if to start the service
|
# Ask if to start the service
|
||||||
#echo
|
#echo
|
||||||
|
@ -885,36 +932,36 @@ function install_TDengine() {
|
||||||
echo -e "${GREEN_DARK}To start TDengine ${NC}: ${csudo} service taosd start${NC}"
|
echo -e "${GREEN_DARK}To start TDengine ${NC}: ${csudo} service taosd start${NC}"
|
||||||
else
|
else
|
||||||
echo -e "${GREEN_DARK}To start TDengine ${NC}: taosd${NC}"
|
echo -e "${GREEN_DARK}To start TDengine ${NC}: taosd${NC}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#if [ ${openresty_work} = 'true' ]; then
|
#if [ ${openresty_work} = 'true' ]; then
|
||||||
# echo -e "${GREEN_DARK}To access TDengine ${NC}: use ${GREEN_UNDERLINE}taos${NC} in shell OR from ${GREEN_UNDERLINE}http://127.0.0.1:${nginx_port}${NC}"
|
# echo -e "${GREEN_DARK}To access TDengine ${NC}: use ${GREEN_UNDERLINE}taos${NC} in shell OR from ${GREEN_UNDERLINE}http://127.0.0.1:${nginx_port}${NC}"
|
||||||
#else
|
#else
|
||||||
# echo -e "${GREEN_DARK}To access TDengine ${NC}: use ${GREEN_UNDERLINE}taos${NC} in shell${NC}"
|
# echo -e "${GREEN_DARK}To access TDengine ${NC}: use ${GREEN_UNDERLINE}taos${NC} in shell${NC}"
|
||||||
#fi
|
#fi
|
||||||
|
|
||||||
if [ ! -z "$firstEp" ]; then
|
if [ ! -z "$firstEp" ]; then
|
||||||
tmpFqdn=${firstEp%%:*}
|
tmpFqdn=${firstEp%%:*}
|
||||||
substr=":"
|
substr=":"
|
||||||
if [[ $firstEp =~ $substr ]];then
|
if [[ $firstEp =~ $substr ]];then
|
||||||
tmpPort=${firstEp#*:}
|
tmpPort=${firstEp#*:}
|
||||||
else
|
else
|
||||||
tmpPort=""
|
tmpPort=""
|
||||||
fi
|
fi
|
||||||
if [[ "$tmpPort" != "" ]];then
|
if [[ "$tmpPort" != "" ]];then
|
||||||
echo -e "${GREEN_DARK}To access TDengine ${NC}: taos -h $tmpFqdn -P $tmpPort${GREEN_DARK} to login into cluster, then${NC}"
|
echo -e "${GREEN_DARK}To access TDengine ${NC}: taos -h $tmpFqdn -P $tmpPort${GREEN_DARK} to login into cluster, then${NC}"
|
||||||
else
|
else
|
||||||
echo -e "${GREEN_DARK}To access TDengine ${NC}: taos -h $tmpFqdn${GREEN_DARK} to login into cluster, then${NC}"
|
echo -e "${GREEN_DARK}To access TDengine ${NC}: taos -h $tmpFqdn${GREEN_DARK} to login into cluster, then${NC}"
|
||||||
fi
|
fi
|
||||||
echo -e "${GREEN_DARK}execute ${NC}: create dnode 'newDnodeFQDN:port'; ${GREEN_DARK}to add this new node${NC}"
|
echo -e "${GREEN_DARK}execute ${NC}: create dnode 'newDnodeFQDN:port'; ${GREEN_DARK}to add this new node${NC}"
|
||||||
echo
|
echo
|
||||||
elif [ ! -z "$serverFqdn" ]; then
|
elif [ ! -z "$serverFqdn" ]; then
|
||||||
echo -e "${GREEN_DARK}To access TDengine ${NC}: taos -h $serverFqdn${GREEN_DARK} to login into TDengine server${NC}"
|
echo -e "${GREEN_DARK}To access TDengine ${NC}: taos -h $serverFqdn${GREEN_DARK} to login into TDengine server${NC}"
|
||||||
echo
|
echo
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -e "\033[44;32;1mTDengine is installed successfully!${NC}"
|
echo -e "\033[44;32;1mTDengine is installed successfully!${NC}"
|
||||||
echo
|
echo
|
||||||
else # Only install client
|
else # Only install client
|
||||||
install_bin
|
install_bin
|
||||||
install_config
|
install_config
|
||||||
|
@ -945,6 +992,6 @@ elif [ "$verType" == "client" ]; then
|
||||||
else
|
else
|
||||||
install_TDengine client
|
install_TDengine client
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "please input correct verType"
|
echo "please input correct verType"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -204,7 +204,7 @@ function install_jemalloc() {
|
||||||
if [ -f ${binary_dir}/build/lib/libjemalloc_pic.a ]; then
|
if [ -f ${binary_dir}/build/lib/libjemalloc_pic.a ]; then
|
||||||
/usr/bin/install -c -m 755 ${binary_dir}/build/lib/libjemalloc_pic.a /usr/local/lib
|
/usr/bin/install -c -m 755 ${binary_dir}/build/lib/libjemalloc_pic.a /usr/local/lib
|
||||||
fi
|
fi
|
||||||
if [ -f ${binary_dir}/build/lib/libjemalloc_pic.a ]; then
|
if [ -f ${binary_dir}/build/lib/pkgconfig/jemalloc.pc ]; then
|
||||||
/usr/bin/install -c -d /usr/local/lib/pkgconfig
|
/usr/bin/install -c -d /usr/local/lib/pkgconfig
|
||||||
/usr/bin/install -c -m 644 ${binary_dir}/build/lib/pkgconfig/jemalloc.pc /usr/local/lib/pkgconfig
|
/usr/bin/install -c -m 644 ${binary_dir}/build/lib/pkgconfig/jemalloc.pc /usr/local/lib/pkgconfig
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -30,12 +30,12 @@ else
|
||||||
install_dir="${release_dir}/TDengine-server-${version}"
|
install_dir="${release_dir}/TDengine-server-${version}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Directories and files.
|
# Directories and files
|
||||||
if [ "$pagMode" == "lite" ]; then
|
if [ "$pagMode" == "lite" ]; then
|
||||||
strip ${build_dir}/bin/taosd
|
strip ${build_dir}/bin/taosd
|
||||||
strip ${build_dir}/bin/taos
|
strip ${build_dir}/bin/taos
|
||||||
bin_files="${build_dir}/bin/taosd ${build_dir}/bin/taos ${script_dir}/remove.sh"
|
bin_files="${build_dir}/bin/taosd ${build_dir}/bin/taos ${script_dir}/remove.sh"
|
||||||
else
|
else
|
||||||
bin_files="${build_dir}/bin/taosd ${build_dir}/bin/taos ${build_dir}/bin/taosdump ${build_dir}/bin/taosdemo ${build_dir}/bin/tarbitrator\
|
bin_files="${build_dir}/bin/taosd ${build_dir}/bin/taos ${build_dir}/bin/taosdump ${build_dir}/bin/taosdemo ${build_dir}/bin/tarbitrator\
|
||||||
${script_dir}/remove.sh ${script_dir}/set_core.sh ${script_dir}/startPre.sh ${script_dir}/taosd-dump-cfg.gdb"
|
${script_dir}/remove.sh ${script_dir}/set_core.sh ${script_dir}/startPre.sh ${script_dir}/taosd-dump-cfg.gdb"
|
||||||
fi
|
fi
|
||||||
|
@ -73,10 +73,43 @@ mkdir -p ${install_dir}/init.d && cp ${init_file_rpm} ${install_dir}/init.d/taos
|
||||||
mkdir -p ${install_dir}/init.d && cp ${init_file_tarbitrator_deb} ${install_dir}/init.d/tarbitratord.deb || :
|
mkdir -p ${install_dir}/init.d && cp ${init_file_tarbitrator_deb} ${install_dir}/init.d/tarbitratord.deb || :
|
||||||
mkdir -p ${install_dir}/init.d && cp ${init_file_tarbitrator_rpm} ${install_dir}/init.d/tarbitratord.rpm || :
|
mkdir -p ${install_dir}/init.d && cp ${init_file_tarbitrator_rpm} ${install_dir}/init.d/tarbitratord.rpm || :
|
||||||
|
|
||||||
|
if [ -f ${build_dir}/bin/jemalloc-config ]; then
|
||||||
|
mkdir -p ${install_dir}/jemalloc/{bin,lib,lib/pkgconfig,include/jemalloc,share/doc/jemalloc,share/man/man3}
|
||||||
|
cp ${build_dir}/bin/jemalloc-config ${install_dir}/jemalloc/bin
|
||||||
|
if [ -f ${build_dir}/bin/jemalloc.sh ]; then
|
||||||
|
cp ${build_dir}/bin/jemalloc.sh ${install_dir}/jemalloc/bin
|
||||||
|
fi
|
||||||
|
if [ -f ${build_dir}/bin/jeprof ]; then
|
||||||
|
cp ${build_dir}/bin/jeprof ${install_dir}/jemalloc/bin
|
||||||
|
fi
|
||||||
|
if [ -f ${build_dir}/include/jemalloc/jemalloc.h ]; then
|
||||||
|
cp ${build_dir}/include/jemalloc/jemalloc.h ${install_dir}/jemalloc/include/jemalloc
|
||||||
|
fi
|
||||||
|
if [ -f ${build_dir}/lib/libjemalloc.so.2 ]; then
|
||||||
|
cp ${build_dir}/lib/libjemalloc.so.2 ${install_dir}/jemalloc/lib
|
||||||
|
ln -sf libjemalloc.so.2 ${install_dir}/jemalloc/lib/libjemalloc.so
|
||||||
|
fi
|
||||||
|
if [ -f ${build_dir}/lib/libjemalloc.a ]; then
|
||||||
|
cp ${build_dir}/lib/libjemalloc.a ${install_dir}/jemalloc/lib
|
||||||
|
fi
|
||||||
|
if [ -f ${build_dir}/lib/libjemalloc_pic.a ]; then
|
||||||
|
cp ${build_dir}/lib/libjemalloc_pic.a ${install_dir}/jemalloc/lib
|
||||||
|
fi
|
||||||
|
if [ -f ${build_dir}/lib/pkgconfig/jemalloc.pc ]; then
|
||||||
|
cp ${build_dir}/lib/pkgconfig/jemalloc.pc ${install_dir}/jemalloc/lib/pkgconfig
|
||||||
|
fi
|
||||||
|
if [ -f ${build_dir}/share/doc/jemalloc/jemalloc.html ]; then
|
||||||
|
cp ${build_dir}/share/doc/jemalloc/jemalloc.html ${install_dir}/jemalloc/share/doc/jemalloc
|
||||||
|
fi
|
||||||
|
if [ -f ${build_dir}/share/man/man3/jemalloc.3 ]; then
|
||||||
|
cp ${build_dir}/share/man/man3/jemalloc.3 ${install_dir}/jemalloc/share/man/man3
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$verMode" == "cluster" ]; then
|
if [ "$verMode" == "cluster" ]; then
|
||||||
sed 's/verMode=edge/verMode=cluster/g' ${install_dir}/bin/remove.sh >> remove_temp.sh
|
sed 's/verMode=edge/verMode=cluster/g' ${install_dir}/bin/remove.sh >> remove_temp.sh
|
||||||
mv remove_temp.sh ${install_dir}/bin/remove.sh
|
mv remove_temp.sh ${install_dir}/bin/remove.sh
|
||||||
|
|
||||||
mkdir -p ${install_dir}/nginxd && cp -r ${nginx_dir}/* ${install_dir}/nginxd
|
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
|
cp ${nginx_dir}/png/taos.png ${install_dir}/nginxd/admin/images/taos.png
|
||||||
rm -rf ${install_dir}/nginxd/png
|
rm -rf ${install_dir}/nginxd/png
|
||||||
|
@ -132,7 +165,7 @@ if [[ "$pagMode" != "lite" ]] && [[ "$cpuType" != "aarch32" ]]; then
|
||||||
if [ -d ${examples_dir}/JDBC/taosdemo/target ]; then
|
if [ -d ${examples_dir}/JDBC/taosdemo/target ]; then
|
||||||
rm -rf ${examples_dir}/JDBC/taosdemo/target
|
rm -rf ${examples_dir}/JDBC/taosdemo/target
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cp -r ${examples_dir}/JDBC ${install_dir}/examples
|
cp -r ${examples_dir}/JDBC ${install_dir}/examples
|
||||||
cp -r ${examples_dir}/matlab ${install_dir}/examples
|
cp -r ${examples_dir}/matlab ${install_dir}/examples
|
||||||
cp -r ${examples_dir}/python ${install_dir}/examples
|
cp -r ${examples_dir}/python ${install_dir}/examples
|
||||||
|
@ -142,7 +175,7 @@ if [[ "$pagMode" != "lite" ]] && [[ "$cpuType" != "aarch32" ]]; then
|
||||||
cp -r ${examples_dir}/C# ${install_dir}/examples
|
cp -r ${examples_dir}/C# ${install_dir}/examples
|
||||||
fi
|
fi
|
||||||
# Copy driver
|
# Copy driver
|
||||||
mkdir -p ${install_dir}/driver
|
mkdir -p ${install_dir}/driver
|
||||||
cp ${lib_files} ${install_dir}/driver
|
cp ${lib_files} ${install_dir}/driver
|
||||||
|
|
||||||
# Copy connector
|
# Copy connector
|
||||||
|
@ -168,7 +201,7 @@ fi
|
||||||
|
|
||||||
# exit 1
|
# exit 1
|
||||||
|
|
||||||
cd ${release_dir}
|
cd ${release_dir}
|
||||||
|
|
||||||
if [ "$verMode" == "cluster" ]; then
|
if [ "$verMode" == "cluster" ]; then
|
||||||
pkg_name=${install_dir}-${osType}-${cpuType}
|
pkg_name=${install_dir}-${osType}-${cpuType}
|
||||||
|
@ -185,8 +218,8 @@ fi
|
||||||
|
|
||||||
if [ "$verType" == "beta" ]; then
|
if [ "$verType" == "beta" ]; then
|
||||||
pkg_name=${pkg_name}-${verType}
|
pkg_name=${pkg_name}-${verType}
|
||||||
elif [ "$verType" == "stable" ]; then
|
elif [ "$verType" == "stable" ]; then
|
||||||
pkg_name=${pkg_name}
|
pkg_name=${pkg_name}
|
||||||
else
|
else
|
||||||
echo "unknow verType, nor stabel or beta"
|
echo "unknow verType, nor stabel or beta"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -48,6 +48,7 @@ typedef struct SMultiTbStmt {
|
||||||
bool nameSet;
|
bool nameSet;
|
||||||
bool tagSet;
|
bool tagSet;
|
||||||
uint64_t currentUid;
|
uint64_t currentUid;
|
||||||
|
char *sqlstr;
|
||||||
uint32_t tbNum;
|
uint32_t tbNum;
|
||||||
SStrToken tbname;
|
SStrToken tbname;
|
||||||
SStrToken stbname;
|
SStrToken stbname;
|
||||||
|
@ -1203,7 +1204,6 @@ static int insertBatchStmtExecute(STscStmt* pStmt) {
|
||||||
return pStmt->pSql->res.code;
|
return pStmt->pSql->res.code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int stmtParseInsertTbTags(SSqlObj* pSql, STscStmt* pStmt) {
|
int stmtParseInsertTbTags(SSqlObj* pSql, STscStmt* pStmt) {
|
||||||
SSqlCmd *pCmd = &pSql->cmd;
|
SSqlCmd *pCmd = &pSql->cmd;
|
||||||
int32_t ret = TSDB_CODE_SUCCESS;
|
int32_t ret = TSDB_CODE_SUCCESS;
|
||||||
|
@ -1233,28 +1233,28 @@ int stmtParseInsertTbTags(SSqlObj* pSql, STscStmt* pStmt) {
|
||||||
pStmt->mtb.tagSet = true;
|
pStmt->mtb.tagSet = true;
|
||||||
|
|
||||||
sToken = tStrGetToken(pCmd->insertParam.sql, &index, false);
|
sToken = tStrGetToken(pCmd->insertParam.sql, &index, false);
|
||||||
if (sToken.n > 0 && sToken.type == TK_VALUES) {
|
if (sToken.n > 0 && (sToken.type == TK_VALUES || sToken.type == TK_LP)) {
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sToken.n <= 0 || sToken.type != TK_USING) {
|
if (sToken.n <= 0 || sToken.type != TK_USING) {
|
||||||
return TSDB_CODE_TSC_INVALID_OPERATION;
|
return tscSQLSyntaxErrMsg(pCmd->payload, "keywords USING is expected", sToken.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
sToken = tStrGetToken(pCmd->insertParam.sql, &index, false);
|
sToken = tStrGetToken(pCmd->insertParam.sql, &index, false);
|
||||||
if (sToken.n <= 0 || ((sToken.type != TK_ID) && (sToken.type != TK_STRING))) {
|
if (sToken.n <= 0 || ((sToken.type != TK_ID) && (sToken.type != TK_STRING))) {
|
||||||
return TSDB_CODE_TSC_INVALID_OPERATION;
|
return tscSQLSyntaxErrMsg(pCmd->payload, "invalid token", sToken.z);
|
||||||
}
|
}
|
||||||
pStmt->mtb.stbname = sToken;
|
pStmt->mtb.stbname = sToken;
|
||||||
|
|
||||||
sToken = tStrGetToken(pCmd->insertParam.sql, &index, false);
|
sToken = tStrGetToken(pCmd->insertParam.sql, &index, false);
|
||||||
if (sToken.n <= 0 || sToken.type != TK_TAGS) {
|
if (sToken.n <= 0 || sToken.type != TK_TAGS) {
|
||||||
return TSDB_CODE_TSC_INVALID_OPERATION;
|
return tscSQLSyntaxErrMsg(pCmd->payload, "keyword TAGS expected", sToken.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
sToken = tStrGetToken(pCmd->insertParam.sql, &index, false);
|
sToken = tStrGetToken(pCmd->insertParam.sql, &index, false);
|
||||||
if (sToken.n <= 0 || sToken.type != TK_LP) {
|
if (sToken.n <= 0 || sToken.type != TK_LP) {
|
||||||
return TSDB_CODE_TSC_INVALID_OPERATION;
|
return tscSQLSyntaxErrMsg(pCmd->payload, ") expected", sToken.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
pStmt->mtb.tags = taosArrayInit(4, sizeof(SStrToken));
|
pStmt->mtb.tags = taosArrayInit(4, sizeof(SStrToken));
|
||||||
|
@ -1291,14 +1291,12 @@ int stmtParseInsertTbTags(SSqlObj* pSql, STscStmt* pStmt) {
|
||||||
}
|
}
|
||||||
|
|
||||||
pStmt->mtb.values = sToken;
|
pStmt->mtb.values = sToken;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int stmtGenInsertStatement(SSqlObj* pSql, STscStmt* pStmt, const char* name, TAOS_BIND* tags) {
|
int stmtGenInsertStatement(SSqlObj* pSql, STscStmt* pStmt, const char* name, TAOS_BIND* tags) {
|
||||||
size_t tagNum = taosArrayGetSize(pStmt->mtb.tags);
|
size_t tagNum = taosArrayGetSize(pStmt->mtb.tags);
|
||||||
size_t size = 1048576;
|
size_t size = 1048576;
|
||||||
|
@ -1373,14 +1371,17 @@ int stmtGenInsertStatement(SSqlObj* pSql, STscStmt* pStmt, const char* name, TAO
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
free(pSql->sqlstr);
|
if (pStmt->mtb.sqlstr == NULL) {
|
||||||
|
pStmt->mtb.sqlstr = pSql->sqlstr;
|
||||||
|
} else {
|
||||||
|
tfree(pSql->sqlstr);
|
||||||
|
}
|
||||||
|
|
||||||
pSql->sqlstr = str;
|
pSql->sqlstr = str;
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// interface functions
|
// interface functions
|
||||||
|
|
||||||
|
@ -1561,7 +1562,6 @@ int taos_stmt_set_tbname_tags(TAOS_STMT* stmt, const char* name, TAOS_BIND* tags
|
||||||
}
|
}
|
||||||
|
|
||||||
pStmt->mtb.nameSet = true;
|
pStmt->mtb.nameSet = true;
|
||||||
pStmt->mtb.tagSet = true;
|
|
||||||
|
|
||||||
tscDebug("0x%"PRIx64" SQL: %s", pSql->self, pSql->sqlstr);
|
tscDebug("0x%"PRIx64" SQL: %s", pSql->self, pSql->sqlstr);
|
||||||
|
|
||||||
|
@ -1634,6 +1634,7 @@ int taos_stmt_close(TAOS_STMT* stmt) {
|
||||||
taosHashCleanup(pStmt->pSql->cmd.insertParam.pTableBlockHashList);
|
taosHashCleanup(pStmt->pSql->cmd.insertParam.pTableBlockHashList);
|
||||||
pStmt->pSql->cmd.insertParam.pTableBlockHashList = NULL;
|
pStmt->pSql->cmd.insertParam.pTableBlockHashList = NULL;
|
||||||
taosArrayDestroy(pStmt->mtb.tags);
|
taosArrayDestroy(pStmt->mtb.tags);
|
||||||
|
tfree(pStmt->mtb.sqlstr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7482,6 +7482,7 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf
|
||||||
const char* msg1 = "point interpolation query needs timestamp";
|
const char* msg1 = "point interpolation query needs timestamp";
|
||||||
const char* msg2 = "too many tables in from clause";
|
const char* msg2 = "too many tables in from clause";
|
||||||
const char* msg3 = "start(end) time of query range required or time range too large";
|
const char* msg3 = "start(end) time of query range required or time range too large";
|
||||||
|
const char* msg4 = "interval query not supported, since the result of sub query not include valid timestamp column";
|
||||||
const char* msg9 = "only tag query not compatible with normal column filter";
|
const char* msg9 = "only tag query not compatible with normal column filter";
|
||||||
|
|
||||||
int32_t code = TSDB_CODE_SUCCESS;
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
|
@ -7540,11 +7541,25 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf
|
||||||
if (validateIntervalNode(pSql, pQueryInfo, pSqlNode) != TSDB_CODE_SUCCESS) {
|
if (validateIntervalNode(pSql, pQueryInfo, pSqlNode) != TSDB_CODE_SUCCESS) {
|
||||||
return TSDB_CODE_TSC_INVALID_OPERATION;
|
return TSDB_CODE_TSC_INVALID_OPERATION;
|
||||||
} else {
|
} else {
|
||||||
if (isTimeWindowQuery(pQueryInfo) &&
|
if (isTimeWindowQuery(pQueryInfo)) {
|
||||||
(validateFunctionsInIntervalOrGroupbyQuery(pCmd, pQueryInfo) != TSDB_CODE_SUCCESS)) {
|
// check if the first column of the nest query result is timestamp column
|
||||||
return TSDB_CODE_TSC_INVALID_OPERATION;
|
SColumn* pCol = taosArrayGetP(pQueryInfo->colList, 0);
|
||||||
|
if (pCol->info.type != TSDB_DATA_TYPE_TIMESTAMP) {
|
||||||
|
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg4);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (validateFunctionsInIntervalOrGroupbyQuery(pCmd, pQueryInfo) != TSDB_CODE_SUCCESS) {
|
||||||
|
return TSDB_CODE_TSC_INVALID_OPERATION;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set order by info
|
||||||
|
STableMeta* pTableMeta = tscGetMetaInfo(pQueryInfo, 0)->pTableMeta;
|
||||||
|
if (validateOrderbyNode(pCmd, pQueryInfo, pSqlNode, tscGetTableSchema(pTableMeta)) !=
|
||||||
|
TSDB_CODE_SUCCESS) {
|
||||||
|
return TSDB_CODE_TSC_INVALID_OPERATION;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
pQueryInfo->command = TSDB_SQL_SELECT;
|
pQueryInfo->command = TSDB_SQL_SELECT;
|
||||||
|
|
||||||
|
@ -7697,8 +7712,8 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf
|
||||||
|
|
||||||
SExprInfo** p = NULL;
|
SExprInfo** p = NULL;
|
||||||
int32_t numOfExpr = 0;
|
int32_t numOfExpr = 0;
|
||||||
|
pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
|
||||||
code = createProjectionExpr(pQueryInfo, pTableMetaInfo, &p, &numOfExpr);
|
code = createProjectionExpr(pQueryInfo, pTableMetaInfo, &p, &numOfExpr);
|
||||||
|
|
||||||
if (pQueryInfo->exprList1 == NULL) {
|
if (pQueryInfo->exprList1 == NULL) {
|
||||||
pQueryInfo->exprList1 = taosArrayInit(4, POINTER_BYTES);
|
pQueryInfo->exprList1 = taosArrayInit(4, POINTER_BYTES);
|
||||||
}
|
}
|
||||||
|
|
|
@ -477,7 +477,6 @@ int doBuildAndSendMsg(SSqlObj *pSql) {
|
||||||
pCmd->command == TSDB_SQL_INSERT ||
|
pCmd->command == TSDB_SQL_INSERT ||
|
||||||
pCmd->command == TSDB_SQL_CONNECT ||
|
pCmd->command == TSDB_SQL_CONNECT ||
|
||||||
pCmd->command == TSDB_SQL_HB ||
|
pCmd->command == TSDB_SQL_HB ||
|
||||||
// pCmd->command == TSDB_SQL_META ||
|
|
||||||
pCmd->command == TSDB_SQL_STABLEVGROUP) {
|
pCmd->command == TSDB_SQL_STABLEVGROUP) {
|
||||||
pRes->code = tscBuildMsg[pCmd->command](pSql, NULL);
|
pRes->code = tscBuildMsg[pCmd->command](pSql, NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -627,7 +627,7 @@ static bool hasAdditionalErrorInfo(int32_t code, SSqlCmd *pCmd) {
|
||||||
|
|
||||||
char *z = NULL;
|
char *z = NULL;
|
||||||
if (len > 0) {
|
if (len > 0) {
|
||||||
z = strstr(pCmd->payload, "invalid SQL");
|
z = strstr(pCmd->payload, "invalid operation");
|
||||||
if (z == NULL) {
|
if (z == NULL) {
|
||||||
z = strstr(pCmd->payload, "syntax error");
|
z = strstr(pCmd->payload, "syntax error");
|
||||||
}
|
}
|
||||||
|
|
|
@ -780,7 +780,9 @@ SSDataBlock* doGetDataBlock(void* param, bool* newgroup) {
|
||||||
SSqlRes* pRes = &pSql->res;
|
SSqlRes* pRes = &pSql->res;
|
||||||
|
|
||||||
SSDataBlock* pBlock = pInput->block;
|
SSDataBlock* pBlock = pInput->block;
|
||||||
pOperator->pRuntimeEnv->current = pInput->pTableQueryInfo;
|
if (pOperator->pRuntimeEnv != NULL) {
|
||||||
|
pOperator->pRuntimeEnv->current = pInput->pTableQueryInfo;
|
||||||
|
}
|
||||||
|
|
||||||
pBlock->info.rows = pRes->numOfRows;
|
pBlock->info.rows = pRes->numOfRows;
|
||||||
if (pRes->numOfRows != 0) {
|
if (pRes->numOfRows != 0) {
|
||||||
|
@ -804,6 +806,24 @@ SSDataBlock* doGetDataBlock(void* param, bool* newgroup) {
|
||||||
return pBlock;
|
return pBlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void fetchNextBlockIfCompleted(SOperatorInfo* pOperator, bool* newgroup) {
|
||||||
|
SJoinOperatorInfo* pJoinInfo = pOperator->info;
|
||||||
|
|
||||||
|
for (int32_t i = 0; i < pOperator->numOfUpstream; ++i) {
|
||||||
|
SJoinStatus* pStatus = &pJoinInfo->status[i];
|
||||||
|
if (pStatus->pBlock == NULL || pStatus->index >= pStatus->pBlock->info.rows) {
|
||||||
|
pStatus->pBlock = pOperator->upstream[i]->exec(pOperator->upstream[i], newgroup);
|
||||||
|
pStatus->index = 0;
|
||||||
|
|
||||||
|
if (pStatus->pBlock == NULL) {
|
||||||
|
pOperator->status = OP_EXEC_DONE;
|
||||||
|
pJoinInfo->resultInfo.total += pJoinInfo->pRes->info.rows;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SSDataBlock* doDataBlockJoin(void* param, bool* newgroup) {
|
SSDataBlock* doDataBlockJoin(void* param, bool* newgroup) {
|
||||||
SOperatorInfo *pOperator = (SOperatorInfo*) param;
|
SOperatorInfo *pOperator = (SOperatorInfo*) param;
|
||||||
if (pOperator->status == OP_EXEC_DONE) {
|
if (pOperator->status == OP_EXEC_DONE) {
|
||||||
|
@ -816,19 +836,9 @@ SSDataBlock* doDataBlockJoin(void* param, bool* newgroup) {
|
||||||
pJoinInfo->pRes->info.rows = 0;
|
pJoinInfo->pRes->info.rows = 0;
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
for (int32_t i = 0; i < pOperator->numOfUpstream; ++i) {
|
fetchNextBlockIfCompleted(pOperator, newgroup);
|
||||||
SJoinStatus* pStatus = &pJoinInfo->status[i];
|
if (pOperator->status == OP_EXEC_DONE) {
|
||||||
if (pStatus->pBlock == NULL || pStatus->index >= pStatus->pBlock->info.rows) {
|
return pJoinInfo->pRes;
|
||||||
pStatus->pBlock = pOperator->upstream[i]->exec(pOperator->upstream[i], newgroup);
|
|
||||||
pStatus->index = 0;
|
|
||||||
|
|
||||||
if (pStatus->pBlock == NULL) {
|
|
||||||
pOperator->status = OP_EXEC_DONE;
|
|
||||||
|
|
||||||
pJoinInfo->resultInfo.total += pJoinInfo->pRes->info.rows;
|
|
||||||
return pJoinInfo->pRes;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SJoinStatus* st0 = &pJoinInfo->status[0];
|
SJoinStatus* st0 = &pJoinInfo->status[0];
|
||||||
|
@ -847,8 +857,12 @@ SSDataBlock* doDataBlockJoin(void* param, bool* newgroup) {
|
||||||
|
|
||||||
if (ts[st->index] < ts0[st0->index]) { // less than the first
|
if (ts[st->index] < ts0[st0->index]) { // less than the first
|
||||||
prefixEqual = false;
|
prefixEqual = false;
|
||||||
|
|
||||||
if ((++(st->index)) >= st->pBlock->info.rows) {
|
if ((++(st->index)) >= st->pBlock->info.rows) {
|
||||||
break;
|
fetchNextBlockIfCompleted(pOperator, newgroup);
|
||||||
|
if (pOperator->status == OP_EXEC_DONE) {
|
||||||
|
return pJoinInfo->pRes;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (ts[st->index] > ts0[st0->index]) { // greater than the first;
|
} else if (ts[st->index] > ts0[st0->index]) { // greater than the first;
|
||||||
if (prefixEqual == true) {
|
if (prefixEqual == true) {
|
||||||
|
@ -856,12 +870,19 @@ SSDataBlock* doDataBlockJoin(void* param, bool* newgroup) {
|
||||||
for (int32_t j = 0; j < i; ++j) {
|
for (int32_t j = 0; j < i; ++j) {
|
||||||
SJoinStatus* stx = &pJoinInfo->status[j];
|
SJoinStatus* stx = &pJoinInfo->status[j];
|
||||||
if ((++(stx->index)) >= stx->pBlock->info.rows) {
|
if ((++(stx->index)) >= stx->pBlock->info.rows) {
|
||||||
break;
|
|
||||||
|
fetchNextBlockIfCompleted(pOperator, newgroup);
|
||||||
|
if (pOperator->status == OP_EXEC_DONE) {
|
||||||
|
return pJoinInfo->pRes;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ((++(st0->index)) >= st0->pBlock->info.rows) {
|
if ((++(st0->index)) >= st0->pBlock->info.rows) {
|
||||||
break;
|
fetchNextBlockIfCompleted(pOperator, newgroup);
|
||||||
|
if (pOperator->status == OP_EXEC_DONE) {
|
||||||
|
return pJoinInfo->pRes;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1132,6 +1153,19 @@ void handleDownstreamOperator(SSqlObj** pSqlObjList, int32_t numOfUpstream, SQue
|
||||||
memcpy(schema, pSchema, numOfCol1*sizeof(SSchema));
|
memcpy(schema, pSchema, numOfCol1*sizeof(SSchema));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// update the exprinfo
|
||||||
|
int32_t numOfOutput = (int32_t)tscNumOfExprs(px);
|
||||||
|
for(int32_t i = 0; i < numOfOutput; ++i) {
|
||||||
|
SExprInfo* pex = taosArrayGetP(px->exprList, i);
|
||||||
|
int32_t colId = pex->base.colInfo.colId;
|
||||||
|
for(int32_t j = 0; j < pSourceOperator->numOfOutput; ++j) {
|
||||||
|
if (colId == schema[j].colId) {
|
||||||
|
pex->base.colInfo.colIndex = j;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
px->pQInfo = createQInfoFromQueryNode(px, &tableGroupInfo, pSourceOperator, NULL, NULL, MASTER_SCAN);
|
px->pQInfo = createQInfoFromQueryNode(px, &tableGroupInfo, pSourceOperator, NULL, NULL, MASTER_SCAN);
|
||||||
tfree(pColumnInfo);
|
tfree(pColumnInfo);
|
||||||
tfree(schema);
|
tfree(schema);
|
||||||
|
|
|
@ -16,13 +16,13 @@
|
||||||
*/
|
*/
|
||||||
package com.taosdata.jdbc;
|
package com.taosdata.jdbc;
|
||||||
|
|
||||||
import com.taosdata.jdbc.utils.TaosInfo;
|
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.SQLWarning;
|
import java.sql.SQLWarning;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.taosdata.jdbc.utils.TaosInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JNI connector
|
* JNI connector
|
||||||
*/
|
*/
|
||||||
|
@ -276,23 +276,14 @@ public class TSDBJNIConnector {
|
||||||
private native int validateCreateTableSqlImp(long connection, byte[] sqlBytes);
|
private native int validateCreateTableSqlImp(long connection, byte[] sqlBytes);
|
||||||
|
|
||||||
public long prepareStmt(String sql) throws SQLException {
|
public long prepareStmt(String sql) throws SQLException {
|
||||||
Long stmt = 0L;
|
Long stmt = prepareStmtImp(sql.getBytes(), this.taos);
|
||||||
try {
|
if (stmt == TSDBConstants.JNI_TDENGINE_ERROR) {
|
||||||
stmt = prepareStmtImp(sql.getBytes(), this.taos);
|
throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_INVALID_SQL);
|
||||||
} catch (Exception e) {
|
} else if (stmt == TSDBConstants.JNI_CONNECTION_NULL) {
|
||||||
e.printStackTrace();
|
|
||||||
throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_UNSUPPORTED_ENCODING);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (stmt == TSDBConstants.JNI_CONNECTION_NULL) {
|
|
||||||
throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_JNI_CONNECTION_NULL);
|
throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_JNI_CONNECTION_NULL);
|
||||||
}
|
} else if (stmt == TSDBConstants.JNI_SQL_NULL) {
|
||||||
|
|
||||||
if (stmt == TSDBConstants.JNI_SQL_NULL) {
|
|
||||||
throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_JNI_SQL_NULL);
|
throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_JNI_SQL_NULL);
|
||||||
}
|
} else if (stmt == TSDBConstants.JNI_OUT_OF_MEMORY) {
|
||||||
|
|
||||||
if (stmt == TSDBConstants.JNI_OUT_OF_MEMORY) {
|
|
||||||
throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_JNI_OUT_OF_MEMORY);
|
throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_JNI_OUT_OF_MEMORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2490,7 +2490,6 @@ static void buildTopBotStruct(STopBotInfo *pTopBotInfo, SQLFunctionCtx *pCtx) {
|
||||||
tmp += POINTER_BYTES * pCtx->param[0].i64;
|
tmp += POINTER_BYTES * pCtx->param[0].i64;
|
||||||
|
|
||||||
size_t size = sizeof(tValuePair) + pCtx->tagInfo.tagsLen;
|
size_t size = sizeof(tValuePair) + pCtx->tagInfo.tagsLen;
|
||||||
// assert(pCtx->param[0].i64 > 0);
|
|
||||||
|
|
||||||
for (int32_t i = 0; i < pCtx->param[0].i64; ++i) {
|
for (int32_t i = 0; i < pCtx->param[0].i64; ++i) {
|
||||||
pTopBotInfo->res[i] = (tValuePair*) tmp;
|
pTopBotInfo->res[i] = (tValuePair*) tmp;
|
||||||
|
@ -2499,7 +2498,6 @@ static void buildTopBotStruct(STopBotInfo *pTopBotInfo, SQLFunctionCtx *pCtx) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool topbot_datablock_filter(SQLFunctionCtx *pCtx, const char *minval, const char *maxval) {
|
bool topbot_datablock_filter(SQLFunctionCtx *pCtx, const char *minval, const char *maxval) {
|
||||||
SResultRowCellInfo *pResInfo = GET_RES_INFO(pCtx);
|
SResultRowCellInfo *pResInfo = GET_RES_INFO(pCtx);
|
||||||
if (pResInfo == NULL) {
|
if (pResInfo == NULL) {
|
||||||
|
@ -2579,13 +2577,14 @@ static void top_function(SQLFunctionCtx *pCtx) {
|
||||||
|
|
||||||
for (int32_t i = 0; i < pCtx->size; ++i) {
|
for (int32_t i = 0; i < pCtx->size; ++i) {
|
||||||
char *data = GET_INPUT_DATA(pCtx, i);
|
char *data = GET_INPUT_DATA(pCtx, i);
|
||||||
TSKEY ts = GET_TS_DATA(pCtx, i);
|
|
||||||
|
|
||||||
if (pCtx->hasNull && isNull(data, pCtx->inputType)) {
|
if (pCtx->hasNull && isNull(data, pCtx->inputType)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
notNullElems++;
|
notNullElems++;
|
||||||
|
|
||||||
|
// NOTE: Set the default timestamp if it is missing [todo refactor]
|
||||||
|
TSKEY ts = (pCtx->ptsList != NULL)? GET_TS_DATA(pCtx, i):0;
|
||||||
do_top_function_add(pRes, (int32_t)pCtx->param[0].i64, data, ts, pCtx->inputType, &pCtx->tagInfo, NULL, 0);
|
do_top_function_add(pRes, (int32_t)pCtx->param[0].i64, data, ts, pCtx->inputType, &pCtx->tagInfo, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2658,13 +2657,13 @@ static void bottom_function(SQLFunctionCtx *pCtx) {
|
||||||
|
|
||||||
for (int32_t i = 0; i < pCtx->size; ++i) {
|
for (int32_t i = 0; i < pCtx->size; ++i) {
|
||||||
char *data = GET_INPUT_DATA(pCtx, i);
|
char *data = GET_INPUT_DATA(pCtx, i);
|
||||||
TSKEY ts = GET_TS_DATA(pCtx, i);
|
|
||||||
|
|
||||||
if (pCtx->hasNull && isNull(data, pCtx->inputType)) {
|
if (pCtx->hasNull && isNull(data, pCtx->inputType)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
notNullElems++;
|
notNullElems++;
|
||||||
|
// NOTE: Set the default timestamp if it is missing [todo refactor]
|
||||||
|
TSKEY ts = (pCtx->ptsList != NULL)? GET_TS_DATA(pCtx, i):0;
|
||||||
do_bottom_function_add(pRes, (int32_t)pCtx->param[0].i64, data, ts, pCtx->inputType, &pCtx->tagInfo, NULL, 0);
|
do_bottom_function_add(pRes, (int32_t)pCtx->param[0].i64, data, ts, pCtx->inputType, &pCtx->tagInfo, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2742,7 +2741,7 @@ static void top_bottom_func_finalizer(SQLFunctionCtx *pCtx) {
|
||||||
if (pCtx->param[1].i64 == PRIMARYKEY_TIMESTAMP_COL_INDEX) {
|
if (pCtx->param[1].i64 == PRIMARYKEY_TIMESTAMP_COL_INDEX) {
|
||||||
__compar_fn_t comparator = (pCtx->param[2].i64 == TSDB_ORDER_ASC) ? resAscComparFn : resDescComparFn;
|
__compar_fn_t comparator = (pCtx->param[2].i64 == TSDB_ORDER_ASC) ? resAscComparFn : resDescComparFn;
|
||||||
qsort(tvp, (size_t)pResInfo->numOfRes, POINTER_BYTES, comparator);
|
qsort(tvp, (size_t)pResInfo->numOfRes, POINTER_BYTES, comparator);
|
||||||
} else if (pCtx->param[1].i64 > PRIMARYKEY_TIMESTAMP_COL_INDEX) {
|
} else /*if (pCtx->param[1].i64 > PRIMARYKEY_TIMESTAMP_COL_INDEX)*/ {
|
||||||
__compar_fn_t comparator = (pCtx->param[2].i64 == TSDB_ORDER_ASC) ? resDataAscComparFn : resDataDescComparFn;
|
__compar_fn_t comparator = (pCtx->param[2].i64 == TSDB_ORDER_ASC) ? resDataAscComparFn : resDataDescComparFn;
|
||||||
qsort(tvp, (size_t)pResInfo->numOfRes, POINTER_BYTES, comparator);
|
qsort(tvp, (size_t)pResInfo->numOfRes, POINTER_BYTES, comparator);
|
||||||
}
|
}
|
||||||
|
|
|
@ -950,7 +950,13 @@ static void doSetInputDataBlock(SOperatorInfo* pOperator, SQLFunctionCtx* pCtx,
|
||||||
uint32_t status = aAggs[pCtx[i].functionId].status;
|
uint32_t status = aAggs[pCtx[i].functionId].status;
|
||||||
if ((status & (TSDB_FUNCSTATE_SELECTIVITY | TSDB_FUNCSTATE_NEED_TS)) != 0) {
|
if ((status & (TSDB_FUNCSTATE_SELECTIVITY | TSDB_FUNCSTATE_NEED_TS)) != 0) {
|
||||||
SColumnInfoData* tsInfo = taosArrayGet(pBlock->pDataBlock, 0);
|
SColumnInfoData* tsInfo = taosArrayGet(pBlock->pDataBlock, 0);
|
||||||
pCtx[i].ptsList = (int64_t*) tsInfo->pData;
|
// In case of the top/bottom query again the nest query result, which has no timestamp column
|
||||||
|
// don't set the ptsList attribute.
|
||||||
|
if (tsInfo->info.type == TSDB_DATA_TYPE_TIMESTAMP) {
|
||||||
|
pCtx[i].ptsList = (int64_t*) tsInfo->pData;
|
||||||
|
} else {
|
||||||
|
pCtx[i].ptsList = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (TSDB_COL_IS_UD_COL(pCol->flag) && (pOperator->pRuntimeEnv->scanFlag == MERGE_STAGE)) {
|
} else if (TSDB_COL_IS_UD_COL(pCol->flag) && (pOperator->pRuntimeEnv->scanFlag == MERGE_STAGE)) {
|
||||||
SColIndex* pColIndex = &pOperator->pExpr[i].base.colInfo;
|
SColIndex* pColIndex = &pOperator->pExpr[i].base.colInfo;
|
||||||
|
@ -4228,6 +4234,10 @@ static void updateTableIdInfo(STableQueryInfo* pTableQueryInfo, SSDataBlock* pBl
|
||||||
int32_t step = GET_FORWARD_DIRECTION_FACTOR(order);
|
int32_t step = GET_FORWARD_DIRECTION_FACTOR(order);
|
||||||
pTableQueryInfo->lastKey = ((order == TSDB_ORDER_ASC)? pBlock->info.window.ekey:pBlock->info.window.skey) + step;
|
pTableQueryInfo->lastKey = ((order == TSDB_ORDER_ASC)? pBlock->info.window.ekey:pBlock->info.window.skey) + step;
|
||||||
|
|
||||||
|
if (pTableQueryInfo->pTable == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
STableIdInfo tidInfo = createTableIdInfo(pTableQueryInfo);
|
STableIdInfo tidInfo = createTableIdInfo(pTableQueryInfo);
|
||||||
STableIdInfo *idinfo = taosHashGet(pTableIdInfo, &tidInfo.tid, sizeof(tidInfo.tid));
|
STableIdInfo *idinfo = taosHashGet(pTableIdInfo, &tidInfo.tid, sizeof(tidInfo.tid));
|
||||||
if (idinfo != NULL) {
|
if (idinfo != NULL) {
|
||||||
|
@ -4905,8 +4915,7 @@ static SSDataBlock* doArithmeticOperation(void* param, bool* newgroup) {
|
||||||
updateOutputBuf(&pArithInfo->binfo, &pArithInfo->bufCapacity, pBlock->info.rows);
|
updateOutputBuf(&pArithInfo->binfo, &pArithInfo->bufCapacity, pBlock->info.rows);
|
||||||
|
|
||||||
arithmeticApplyFunctions(pRuntimeEnv, pInfo->pCtx, pOperator->numOfOutput);
|
arithmeticApplyFunctions(pRuntimeEnv, pInfo->pCtx, pOperator->numOfOutput);
|
||||||
|
if (pTableQueryInfo != NULL) {
|
||||||
if (pTableQueryInfo != NULL) { // TODO refactor
|
|
||||||
updateTableIdInfo(pTableQueryInfo, pBlock, pRuntimeEnv->pTableRetrieveTsMap, order);
|
updateTableIdInfo(pTableQueryInfo, pBlock, pRuntimeEnv->pTableRetrieveTsMap, order);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4949,8 +4958,7 @@ static SSDataBlock* doArithmeticOperation(void* param, bool* newgroup) {
|
||||||
updateOutputBuf(&pArithInfo->binfo, &pArithInfo->bufCapacity, pBlock->info.rows);
|
updateOutputBuf(&pArithInfo->binfo, &pArithInfo->bufCapacity, pBlock->info.rows);
|
||||||
|
|
||||||
arithmeticApplyFunctions(pRuntimeEnv, pInfo->pCtx, pOperator->numOfOutput);
|
arithmeticApplyFunctions(pRuntimeEnv, pInfo->pCtx, pOperator->numOfOutput);
|
||||||
|
if (pTableQueryInfo != NULL) {
|
||||||
if (pTableQueryInfo != NULL) { // TODO refactor
|
|
||||||
updateTableIdInfo(pTableQueryInfo, pBlock, pRuntimeEnv->pTableRetrieveTsMap, order);
|
updateTableIdInfo(pTableQueryInfo, pBlock, pRuntimeEnv->pTableRetrieveTsMap, order);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,8 @@
|
||||||
gcc -std=c99 lua_connector.c -fPIC -shared -o luaconnector.so -Wall -ltaos
|
lua_header_installed=`apt-cache policy liblua5.3-dev|grep Installed|grep none > /dev/null; echo $?`
|
||||||
|
if [ "$lua_header_installed" = "0" ]; then
|
||||||
|
echo "If need, please input root password to install liblua5.3-dev for build the connector.."
|
||||||
|
sudo apt install -y liblua5.3-dev
|
||||||
|
fi
|
||||||
|
|
||||||
|
gcc -std=c99 lua_connector.c -fPIC -shared -o luaconnector.so -Wall -ltaos -I/usr/include/lua5.3
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -24,6 +24,9 @@ sql drop database if exists $db
|
||||||
sql create database $db keep 36500
|
sql create database $db keep 36500
|
||||||
sql use $db
|
sql use $db
|
||||||
|
|
||||||
|
print =====================================> td-4481
|
||||||
|
sql create database $db
|
||||||
|
|
||||||
print =====================================> test case for twa in single block
|
print =====================================> test case for twa in single block
|
||||||
|
|
||||||
sql create table t1 (ts timestamp, k float);
|
sql create table t1 (ts timestamp, k float);
|
||||||
|
|
|
@ -9,7 +9,7 @@ sql connect
|
||||||
|
|
||||||
print ======================== dnode1 start
|
print ======================== dnode1 start
|
||||||
|
|
||||||
$dbPrefix = nest_query
|
$dbPrefix = nest_db
|
||||||
$tbPrefix = nest_tb
|
$tbPrefix = nest_tb
|
||||||
$mtPrefix = nest_mt
|
$mtPrefix = nest_mt
|
||||||
$tbNum = 10
|
$tbNum = 10
|
||||||
|
@ -17,7 +17,6 @@ $rowNum = 10000
|
||||||
$totalNum = $tbNum * $rowNum
|
$totalNum = $tbNum * $rowNum
|
||||||
|
|
||||||
print =============== nestquery.sim
|
print =============== nestquery.sim
|
||||||
|
|
||||||
$i = 0
|
$i = 0
|
||||||
$db = $dbPrefix . $i
|
$db = $dbPrefix . $i
|
||||||
$mt = $mtPrefix . $i
|
$mt = $mtPrefix . $i
|
||||||
|
|
|
@ -60,4 +60,5 @@ run general/parser/slimit_alter_tags.sim
|
||||||
run general/parser/binary_escapeCharacter.sim
|
run general/parser/binary_escapeCharacter.sim
|
||||||
run general/parser/between_and.sim
|
run general/parser/between_and.sim
|
||||||
run general/parser/last_cache.sim
|
run general/parser/last_cache.sim
|
||||||
|
run general/parser/nestquery.sim
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue