diff --git a/Jenkinsfile b/Jenkinsfile
index 3283cedcd7ad741c0e2547a6f0dea8f439bb3246..e3aa1c7a29214fbbf60871ffa07164c5b2678476 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -181,7 +181,76 @@ def pre_test_noinstall(){
'''
return 1
}
-
+def pre_test_ningsi(){
+ sh'hostname'
+ sh'''
+ cd ${WKC}
+ git reset --hard HEAD~10 >/dev/null
+ '''
+ script {
+ if (env.CHANGE_TARGET == 'master') {
+ sh '''
+ cd ${WKC}
+ git checkout master
+ '''
+ }
+ else if(env.CHANGE_TARGET == '2.0'){
+ sh '''
+ cd ${WKC}
+ git checkout 2.0
+ '''
+ }
+ else{
+ sh '''
+ cd ${WKC}
+ git checkout develop
+ '''
+ }
+ }
+ sh'''
+ cd ${WKC}
+ git pull >/dev/null
+ git fetch origin +refs/pull/${CHANGE_ID}/merge
+ git checkout -qf FETCH_HEAD
+ git clean -dfx
+ git submodule update --init --recursive
+ cd ${WK}
+ git reset --hard HEAD~10
+ '''
+ script {
+ if (env.CHANGE_TARGET == 'master') {
+ sh '''
+ cd ${WK}
+ git checkout master
+ '''
+ }
+ else if(env.CHANGE_TARGET == '2.0'){
+ sh '''
+ cd ${WK}
+ git checkout 2.0
+ '''
+ }
+ else{
+ sh '''
+ cd ${WK}
+ git checkout develop
+ '''
+ }
+ }
+ sh '''
+ cd ${WK}
+ git pull >/dev/null
+
+ export TZ=Asia/Harbin
+ date
+ git clean -dfx
+ mkdir debug
+ cd debug
+ cmake .. -DOSTYPE=Ningsi60 > /dev/null
+ make
+ '''
+ return 1
+}
def pre_test_win(){
bat '''
taskkill /f /t /im python.exe
@@ -578,6 +647,13 @@ pipeline {
pre_test_noinstall()
}
}
+
+ stage('ningsi') {
+ agent{label "ningsi"}
+ steps {
+ pre_test_ningsi()
+ }
+ }
stage('build'){
agent{label " wintest "}
diff --git a/cmake/define.inc b/cmake/define.inc
index c666d243e022f9a21f0f7f483ed9f97ab87b826b..f29f9c4cd8e2314a0b6f1dd5e18d9ecdaed9f59e 100755
--- a/cmake/define.inc
+++ b/cmake/define.inc
@@ -49,6 +49,14 @@ IF (TD_PRO)
ADD_DEFINITIONS(-D_TD_PRO_)
ENDIF ()
+IF (TD_KH)
+ ADD_DEFINITIONS(-D_TD_KH_)
+ENDIF ()
+
+IF (TD_JH)
+ ADD_DEFINITIONS(-D_TD_JH_)
+ENDIF ()
+
IF (TD_MEM_CHECK)
ADD_DEFINITIONS(-DTAOS_MEM_CHECK)
ENDIF ()
diff --git a/cmake/input.inc b/cmake/input.inc
index d746cf52f6eb016795d6fa6d01f408925159c710..bff76a567973633fd4d7c3df5dae4b1a8c334d39 100755
--- a/cmake/input.inc
+++ b/cmake/input.inc
@@ -52,6 +52,12 @@ ELSEIF (${DBNAME} MATCHES "tq")
ELSEIF (${DBNAME} MATCHES "pro")
SET(TD_PRO TRUE)
MESSAGE(STATUS "pro is true")
+ELSEIF (${DBNAME} MATCHES "kh")
+ SET(TD_KH TRUE)
+ MESSAGE(STATUS "kh is true")
+ELSEIF (${DBNAME} MATCHES "jh")
+ SET(TD_JH TRUE)
+ MESSAGE(STATUS "jh is true")
ENDIF ()
IF (${DLLTYPE} MATCHES "go")
diff --git a/cmake/install.inc b/cmake/install.inc
index 792638be96bfe56362e80f939386ec3cd0e6d327..136b6a3ae95d186948c500c06990bde4fb5d37e3 100755
--- a/cmake/install.inc
+++ b/cmake/install.inc
@@ -5,8 +5,14 @@ IF (TD_LINUX)
ELSEIF (TD_WINDOWS)
IF (TD_POWER)
SET(CMAKE_INSTALL_PREFIX C:/PowerDB)
+ ELSEIF (TD_TQ)
+ SET(CMAKE_INSTALL_PREFIX C:/TQueue)
ELSEIF (TD_PRO)
SET(CMAKE_INSTALL_PREFIX C:/ProDB)
+ ELSEIF (TD_KH)
+ SET(CMAKE_INSTALL_PREFIX C:/KingHistorian)
+ ELSEIF (TD_JH)
+ SET(CMAKE_INSTALL_PREFIX C:/jh_iot)
ELSE ()
SET(CMAKE_INSTALL_PREFIX C:/TDengine)
ENDIF ()
@@ -25,8 +31,14 @@ ELSEIF (TD_WINDOWS)
IF (TD_POWER)
INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/power.exe DESTINATION .)
+ ELSEIF (TD_TQ)
+ INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/tq.exe DESTINATION .)
ELSEIF (TD_PRO)
INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/prodbc.exe DESTINATION .)
+ ELSEIF (TD_KH)
+ INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/khclient.exe DESTINATION .)
+ ELSEIF (TD_JH)
+ INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/jh_taos.exe DESTINATION .)
ELSE ()
INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/taos.exe DESTINATION .)
INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/taosdemo.exe DESTINATION .)
diff --git a/cmake/version.inc b/cmake/version.inc
index c697d79b56f2ca3b7725f9cdcc8807eac1dacbe9..86298c8f980129504f0ee8f2c78b41606b9cdf67 100755
--- a/cmake/version.inc
+++ b/cmake/version.inc
@@ -4,7 +4,7 @@ PROJECT(TDengine)
IF (DEFINED VERNUMBER)
SET(TD_VER_NUMBER ${VERNUMBER})
ELSE ()
- SET(TD_VER_NUMBER "2.2.1.3")
+ SET(TD_VER_NUMBER "2.2.2.0")
ENDIF ()
IF (DEFINED VERCOMPATIBLE)
diff --git a/deps/MsvcLibX/src/filetime.c b/deps/MsvcLibX/src/filetime.c
index 084b5eef671c0cc17135746bd7d7e7fb6ed68156..27d4c2ea46f6370e8f4fa7f651a0b4b6e6f2ea2c 100644
--- a/deps/MsvcLibX/src/filetime.c
+++ b/deps/MsvcLibX/src/filetime.c
@@ -29,7 +29,7 @@
A Unix time_t is the number of 1-second intervals since January 1, 1970.
time_ts are expressed in the GMT time zone. DOS times in the current local time.
*/
-time_t Filetime2Timet(uint16_t date, uint16_t time) {
+time_t Filetime2Timet(uint16_t date, uint16_t deps_time) {
unsigned int year, month, day, hour, minute, second;
struct tm stm;
@@ -37,9 +37,9 @@ time_t Filetime2Timet(uint16_t date, uint16_t time) {
year = 1980 + ((date & 0xFE00) >> 9);
month = (date & 0x1E0) >> 5;
day = date & 0x1F;
- hour = (time & 0xF800) >> 11;
- minute = (time & 0x7E0) >> 5;
- second = 2 * (time & 0x1F);
+ hour = (deps_time & 0xF800) >> 11;
+ minute = (deps_time & 0x7E0) >> 5;
+ second = 2 * (deps_time & 0x1F);
stm.tm_year = (int)year - 1900;
stm.tm_mon = (int)month - 1;
@@ -55,7 +55,7 @@ time_t Filetime2Timet(uint16_t date, uint16_t time) {
#if 0
/* Older version of the same, trying to generate the time_t manually.
Did not handle DST well */
-time_t Filetime2Timet(uint16_t date, uint16_t time) {
+time_t Filetime2Timet(uint16_t date, uint16_t deps_time) {
unsigned int year, month, day, hour, minute, second;
unsigned int olympiads; /* 4-year periods */
unsigned long t = 0;
@@ -64,9 +64,9 @@ time_t Filetime2Timet(uint16_t date, uint16_t time) {
year = 1980 + ((date & 0xFE00) >> 9);
month = (date & 0x1E0) >> 5;
day = date & 0x1F;
- hour = (time & 0xF800) >> 11;
- minute = (time & 0x7E0) >> 5;
- second = 2 * (time & 0x1F);
+ hour = (deps_time & 0xF800) >> 11;
+ minute = (deps_time & 0x7E0) >> 5;
+ second = 2 * (deps_time & 0x1F);
/* Count days */
year -= 1970; /* Start of Unix time_t epoch */
@@ -111,16 +111,16 @@ time_t Filetime2Timet(uint16_t date, uint16_t time) {
#endif
/* Generate a string with the local file time, in the ISO 8601 date/time format */
-char *Filetime2String(uint16_t date, uint16_t time, char *pBuf, size_t nBufSize) {
+char *Filetime2String(uint16_t date, uint16_t deps_time, char *pBuf, size_t nBufSize) {
unsigned int year, month, day, hour, minute, second;
/* Decode fields */
year = 1980 + ((date & 0xFE00) >> 9);
month = (date & 0x1E0) >> 5;
day = date & 0x1F;
- hour = (time & 0xF800) >> 11;
- minute = (time & 0x7E0) >> 5;
- second = 2 * (time & 0x1F);
+ hour = (deps_time & 0xF800) >> 11;
+ minute = (deps_time & 0x7E0) >> 5;
+ second = 2 * (deps_time & 0x1F);
if (nBufSize >= 20) {
sprintf(pBuf, "%04d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second);
diff --git a/deps/cJson/src/cJSON.c b/deps/cJson/src/cJSON.c
index f0ef9f6fe1715336ed8d24d4998df5a8ba51b3af..08d2c17adf2c4d9cc11198e2735b8ccbe8893ff6 100644
--- a/deps/cJson/src/cJSON.c
+++ b/deps/cJson/src/cJSON.c
@@ -49,8 +49,8 @@
typedef struct {
const unsigned char *json;
size_t position;
-} error;
-static error global_error = { NULL, 0 };
+} deps_error;
+static deps_error global_error = { NULL, 0 };
CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void)
{
@@ -210,8 +210,8 @@ typedef struct
#define can_read(buffer, size) ((buffer != NULL) && (((buffer)->offset + size) <= (buffer)->length))
#define cannot_read(buffer, size) (!can_read(buffer, size))
/* check if the buffer can be accessed at the given index (starting with 0) */
-#define can_access_at_index(buffer, index) ((buffer != NULL) && (((buffer)->offset + index) < (buffer)->length))
-#define cannot_access_at_index(buffer, index) (!can_access_at_index(buffer, index))
+#define can_access_at_index(buffer, deps_index) ((buffer != NULL) && (((buffer)->offset + deps_index) < (buffer)->length))
+#define cannot_access_at_index(buffer, deps_index) (!can_access_at_index(buffer, deps_index))
/* get a pointer to the buffer at the position */
#define buffer_at_offset(buffer) ((buffer)->content + (buffer)->offset)
@@ -992,7 +992,7 @@ fail:
if (value != NULL)
{
- error local_error;
+ deps_error local_error;
local_error.json = (const unsigned char*)value;
local_error.position = 0;
@@ -1683,7 +1683,7 @@ CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array)
return (int)size;
}
-static cJSON* get_array_item(const cJSON *array, size_t index)
+static cJSON* get_array_item(const cJSON *array, size_t deps_index)
{
cJSON *current_child = NULL;
@@ -1693,23 +1693,23 @@ static cJSON* get_array_item(const cJSON *array, size_t index)
}
current_child = array->child;
- while ((current_child != NULL) && (index > 0))
+ while ((current_child != NULL) && (deps_index > 0))
{
- index--;
+ deps_index--;
current_child = current_child->next;
}
return current_child;
}
-CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int index)
+CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int deps_index)
{
- if (index < 0)
+ if (deps_index < 0)
{
return NULL;
}
- return get_array_item(array, (size_t)index);
+ return get_array_item(array, (size_t)deps_index);
}
static cJSON *get_object_item(const cJSON * const object, const char * const name, const cJSON_bool case_sensitive)
diff --git a/deps/iconv/gentranslit.c b/deps/iconv/gentranslit.c
index 200d0819fda46b27ebbbfdb98e8835098de8a4a7..a845013d1584a76532a67b51ae452bbfcdaf0eb1 100644
--- a/deps/iconv/gentranslit.c
+++ b/deps/iconv/gentranslit.c
@@ -30,7 +30,7 @@ int main (int argc, char *argv[])
{
unsigned int data[0x100000];
int uni2index[0x110000];
- int index;
+ int deps_index;
if (argc != 1)
exit(1);
@@ -64,7 +64,7 @@ int main (int argc, char *argv[])
int j;
for (j = 0; j < 0x110000; j++)
uni2index[j] = -1;
- index = 0;
+ deps_index = 0;
for (;;) {
c = getc(stdin);
if (c == EOF)
@@ -86,8 +86,8 @@ int main (int argc, char *argv[])
if (c == '\t')
break;
if (uni2index[j] < 0) {
- uni2index[j] = index;
- data[index++] = 0;
+ uni2index[j] = deps_index;
+ data[deps_index++] = 0;
}
if (c >= 0x80) {
/* Finish reading an UTF-8 character. */
@@ -104,17 +104,17 @@ int main (int argc, char *argv[])
}
}
}
- data[index++] = (unsigned int) c;
+ data[deps_index++] = (unsigned int) c;
}
if (uni2index[j] >= 0)
- data[uni2index[j]] = index - uni2index[j] - 1;
+ data[uni2index[j]] = deps_index - uni2index[j] - 1;
do { c = getc(stdin); } while (!(c == EOF || c == '\n'));
}
}
- printf("static const unsigned int translit_data[%d] = {",index);
+ printf("static const unsigned int translit_data[%d] = {",deps_index);
{
int i;
- for (i = 0; i < index; i++) {
+ for (i = 0; i < deps_index; i++) {
if (data[i] < 32)
printf("\n %3d,",data[i]);
else if (data[i] == '\'')
diff --git a/deps/iconv/iconv.c b/deps/iconv/iconv.c
index 391e35d4e78efda0cb881b247cbccf22ab66c67b..af5b32e112e3f3bf3e360c9e475736ffbbb4c004 100644
--- a/deps/iconv/iconv.c
+++ b/deps/iconv/iconv.c
@@ -491,7 +491,7 @@ const char * iconv_canonicalize (const char * name)
char* bp;
const struct alias * ap;
unsigned int count;
- unsigned int index;
+ unsigned int deps_index;
const char* pool;
/* Before calling aliases_lookup, convert the input string to upper case,
@@ -555,23 +555,23 @@ const char * iconv_canonicalize (const char * name)
This is also the case on native Woe32 systems. */
#if __STDC_ISO_10646__ || ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__)
if (sizeof(wchar_t) == 4) {
- index = ei_ucs4internal;
+ deps_index = ei_ucs4internal;
break;
}
if (sizeof(wchar_t) == 2) {
- index = ei_ucs2internal;
+ deps_index = ei_ucs2internal;
break;
}
if (sizeof(wchar_t) == 1) {
- index = ei_iso8859_1;
+ deps_index = ei_iso8859_1;
break;
}
#endif
}
- index = ap->encoding_index;
+ deps_index = ap->encoding_index;
break;
}
- return all_canonical[index] + pool;
+ return all_canonical[deps_index] + pool;
invalid:
return name;
}
diff --git a/deps/jni/windows/win32/bridge/AccessBridgeCalls.c b/deps/jni/windows/win32/bridge/AccessBridgeCalls.c
index 6ed699f34faca966aebaa5841f313b5a3262d2d7..4942508734569e1d6bf93b4eb8757a7804b0a8e0 100644
--- a/deps/jni/windows/win32/bridge/AccessBridgeCalls.c
+++ b/deps/jni/windows/win32/bridge/AccessBridgeCalls.c
@@ -569,9 +569,9 @@ extern "C" {
return FALSE;
}
- AccessibleContext GetAccessibleChildFromContext(long vmID, AccessibleContext ac, jint index) {
+ AccessibleContext GetAccessibleChildFromContext(long vmID, AccessibleContext ac, jint deps_index) {
if (theAccessBridgeInitializedFlag == TRUE) {
- return theAccessBridge.GetAccessibleChildFromContext(vmID, ac, index);
+ return theAccessBridge.GetAccessibleChildFromContext(vmID, ac, deps_index);
}
return (AccessibleContext) 0;
}
@@ -711,9 +711,9 @@ extern "C" {
* return the row number for a cell at a given index
*/
jint
- getAccessibleTableRow(long vmID, AccessibleTable table, jint index) {
+ getAccessibleTableRow(long vmID, AccessibleTable table, jint deps_index) {
if (theAccessBridgeInitializedFlag == TRUE) {
- return theAccessBridge.getAccessibleTableRow(vmID, table, index);
+ return theAccessBridge.getAccessibleTableRow(vmID, table, deps_index);
}
return -1;
}
@@ -722,9 +722,9 @@ extern "C" {
* return the column number for a cell at a given index
*/
jint
- getAccessibleTableColumn(long vmID, AccessibleTable table, jint index) {
+ getAccessibleTableColumn(long vmID, AccessibleTable table, jint deps_index) {
if (theAccessBridgeInitializedFlag == TRUE) {
- return theAccessBridge.getAccessibleTableColumn(vmID, table, index);
+ return theAccessBridge.getAccessibleTableColumn(vmID, table, deps_index);
}
return -1;
}
@@ -753,9 +753,9 @@ extern "C" {
return FALSE;
}
- BOOL GetAccessibleTextItems(long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index) {
+ BOOL GetAccessibleTextItems(long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint deps_index) {
if (theAccessBridgeInitializedFlag == TRUE) {
- return theAccessBridge.GetAccessibleTextItems(vmID, at, textItems, index);
+ return theAccessBridge.GetAccessibleTextItems(vmID, at, textItems, deps_index);
}
return FALSE;
}
@@ -767,23 +767,23 @@ extern "C" {
return FALSE;
}
- BOOL GetAccessibleTextAttributes(long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes) {
+ BOOL GetAccessibleTextAttributes(long vmID, AccessibleText at, jint deps_index, AccessibleTextAttributesInfo *attributes) {
if (theAccessBridgeInitializedFlag == TRUE) {
- return theAccessBridge.GetAccessibleTextAttributes(vmID, at, index, attributes);
+ return theAccessBridge.GetAccessibleTextAttributes(vmID, at, deps_index, attributes);
}
return FALSE;
}
- BOOL GetAccessibleTextRect(long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index) {
+ BOOL GetAccessibleTextRect(long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint deps_index) {
if (theAccessBridgeInitializedFlag == TRUE) {
- return theAccessBridge.GetAccessibleTextRect(vmID, at, rectInfo, index);
+ return theAccessBridge.GetAccessibleTextRect(vmID, at, rectInfo, deps_index);
}
return FALSE;
}
- BOOL GetAccessibleTextLineBounds(long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex) {
+ BOOL GetAccessibleTextLineBounds(long vmID, AccessibleText at, jint deps_index, jint *startIndex, jint *endIndex) {
if (theAccessBridgeInitializedFlag == TRUE) {
- return theAccessBridge.GetAccessibleTextLineBounds(vmID, at, index, startIndex, endIndex);
+ return theAccessBridge.GetAccessibleTextLineBounds(vmID, at, deps_index, startIndex, endIndex);
}
return FALSE;
}
@@ -844,7 +844,7 @@ extern "C" {
/*
* This method is used to iterate through the hyperlinks in a component. It
- * returns hypertext information for a component starting at hyperlink index
+ * returns hypertext information for a component starting at hyperlink deps_index
* nStartIndex. No more than MAX_HYPERLINKS AccessibleHypertextInfo objects will
* be returned for each call to this method.
* returns FALSE on error.
@@ -1109,9 +1109,9 @@ extern "C" {
/**
* Gets the text caret location
*/
- BOOL getCaretLocation(long vmID, AccessibleContext ac, AccessibleTextRectInfo *rectInfo, jint index) {
+ BOOL getCaretLocation(long vmID, AccessibleContext ac, AccessibleTextRectInfo *rectInfo, jint deps_index) {
if (theAccessBridgeInitializedFlag == TRUE) {
- return theAccessBridge.getCaretLocation(vmID, ac, rectInfo, index);
+ return theAccessBridge.getCaretLocation(vmID, ac, rectInfo, deps_index);
}
return FALSE;
}
diff --git a/deps/lua/src/loadlib.c b/deps/lua/src/loadlib.c
index 19edaca0fd25a2f418152d58358b2eccb850910a..e754e54b830224b9894a130e72bce59389f87429 100644
--- a/deps/lua/src/loadlib.c
+++ b/deps/lua/src/loadlib.c
@@ -114,13 +114,13 @@ static void setprogdir (lua_State *L) {
static void pusherror (lua_State *L) {
- int error = GetLastError();
+ int lua_error = GetLastError();
char buffer[128];
if (FormatMessage(FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM,
- NULL, error, 0, buffer, sizeof(buffer), NULL))
+ NULL, lua_error, 0, buffer, sizeof(buffer), NULL))
lua_pushstring(L, buffer);
else
- lua_pushfstring(L, "system error %d\n", error);
+ lua_pushfstring(L, "system error %d\n", lua_error);
}
static void ll_unloadlib (void *lib) {
diff --git a/deps/regex/regcomp.c b/deps/regex/regcomp.c
index 114b299c61275b5a3709ebec9aff17cbc5665361..5d5794928989a0edc1124e62facf2a72a7704c12 100644
--- a/deps/regex/regcomp.c
+++ b/deps/regex/regcomp.c
@@ -120,7 +120,7 @@ static reg_errcode_t build_charclass (re_bitset_ptr_t sbcset,
static bin_tree_t *build_word_op (re_dfa_t *dfa, int not, reg_errcode_t *err);
static void free_bin_tree (bin_tree_t *tree);
static bin_tree_t *create_tree (bin_tree_t *left, bin_tree_t *right,
- re_token_type_t type, int index);
+ re_token_type_t type, int deps_index);
static bin_tree_t *duplicate_tree (const bin_tree_t *src, re_dfa_t *dfa);
/* This table gives an error message for each of the error codes listed
@@ -3447,11 +3447,11 @@ free_charset (re_charset_t *cset)
Note: This function automatically free left and right if malloc fails. */
static bin_tree_t *
-create_tree (left, right, type, index)
+create_tree (left, right, type, deps_index)
bin_tree_t *left;
bin_tree_t *right;
re_token_type_t type;
- int index;
+ int deps_index;
{
bin_tree_t *tree;
tree = re_malloc (bin_tree_t, 1);
@@ -3465,7 +3465,7 @@ create_tree (left, right, type, index)
tree->left = left;
tree->right = right;
tree->type = type;
- tree->node_idx = index;
+ tree->node_idx = deps_index;
tree->first = -1;
tree->next = -1;
re_node_set_init_empty (&tree->eclosure);
diff --git a/packaging/release.sh b/packaging/release.sh
index 185fb6a7dca06508c79ff707851fad2f6b7562e2..79687e91f9d6c69d9b6e2d1021625b1338db8c36 100755
--- a/packaging/release.sh
+++ b/packaging/release.sh
@@ -11,7 +11,7 @@ set -e
# -V [stable | beta]
# -l [full | lite]
# -s [static | dynamic]
-# -d [taos | power | tq ]
+# -d [taos | power | tq | pro | kh | jh]
# -n [2.0.0.3]
# -m [2.0.0.0]
@@ -22,7 +22,7 @@ cpuType=x64 # [aarch32 | aarch64 | x64 | x86 | mips64 ...]
osType=Linux # [Linux | Kylin | Alpine | Raspberrypi | Darwin | Windows | Ningsi60 | Ningsi80 |...]
pagMode=full # [full | lite]
soMode=dynamic # [static | dynamic]
-dbName=taos # [taos | power | tq | pro]
+dbName=taos # [taos | power | tq | pro | kh | jh]
allocator=glibc # [glibc | jemalloc]
verNumber=""
verNumberComp="1.0.0.0"
@@ -78,7 +78,7 @@ do
echo " -l [full | lite] "
echo " -a [glibc | jemalloc] "
echo " -s [static | dynamic] "
- echo " -d [taos | power | tq | pro] "
+ echo " -d [taos | power | tq | pro | kh | jh] "
echo " -n [version number] "
echo " -m [compatible version number] "
exit 0
@@ -192,17 +192,287 @@ else
allocator_macro=""
fi
+# for powerdb
+if [[ "$dbName" == "power" ]]; then
+ # cmake/install.inc
+ sed -i "s/C:\/TDengine/C:\/PowerDB/g" ${top_dir}/cmake/install.inc
+ sed -i "s/taos\.exe/power\.exe/g" ${top_dir}/cmake/install.inc
+ sed -i "s/taosdemo\.exe/powerdemo\.exe/g" ${top_dir}/cmake/install.inc
+ # src/kit/shell/inc/shell.h
+ sed -i "s/taos_history/power_history/g" ${top_dir}/src/kit/shell/inc/shell.h
+ # src/inc/taosdef.h
+ sed -i "s/\"taosdata\"/\"powerdb\"/g" ${top_dir}/src/inc/taosdef.h
+ # src/util/src/tconfig.c
+ sed -i "s/taos config/power config/g" ${top_dir}/src/util/src/tconfig.c
+ sed -i "s/taos\.cfg/power\.cfg/g" ${top_dir}/src/util/src/tconfig.c
+ sed -i "s/etc\/taos/etc\/power/g" ${top_dir}/src/util/src/tconfig.c
+ # src/kit/taosdemo/taosdemo.c
+ sed -i "s/\"taosdata\"/\"powerdb\"/g" ${top_dir}/src/kit/taosdemo/taosdemo.c
+ # src/util/src/tlog.c
+ sed -i "s/log\/taos/log\/power/g" ${top_dir}/src/util/src/tlog.c
+ # src/dnode/src/dnodeSystem.c
+ sed -i "s/TDengine/Power/g" ${top_dir}/src/dnode/src/dnodeSystem.c
+ sed -i "s/TDengine/Power/g" ${top_dir}/src/dnode/src/dnodeMain.c
+ sed -i "s/taosdlog/powerdlog/g" ${top_dir}/src/dnode/src/dnodeMain.c
+ # src/client/src/tscSystem.c
+ sed -i "s/taoslog/powerlog/g" ${top_dir}/src/client/src/tscSystem.c
+ # src/util/src/tnote.c
+ sed -i "s/taosinfo/powerinfo/g" ${top_dir}/src/util/src/tnote.c
+ # src/dnode/CMakeLists.txt
+ sed -i "s/taos\.cfg/power\.cfg/g" ${top_dir}/src/dnode/CMakeLists.txt
+ # src/kit/taosdump/taosdump.c
+ sed -i "s/TDengine/Power/g" ${top_dir}/src/kit/taosdump/taosdump.c
+ sed -i "s/Default is taosdata/Default is power/g" ${top_dir}/src/kit/taosdump/taosdump.c
+ sed -i "s/\"taosdata\"/\"powerdb\"/g" ${top_dir}/src/kit/taosdump/taosdump.c
+ sed -i "s/taos\/taos\.cfg/power\/power\.cfg/g" ${top_dir}/src/kit/taosdump/taosdump.c
+ # src/os/src/linux/linuxEnv.c
+ sed -i "s/etc\/taos/etc\/power/g" ${top_dir}/src/os/src/linux/linuxEnv.c
+ sed -i "s/lib\/taos/lib\/power/g" ${top_dir}/src/os/src/linux/linuxEnv.c
+ sed -i "s/log\/taos/log\/power/g" ${top_dir}/src/os/src/linux/linuxEnv.c
+ # src/os/src/windows/wEnv.c
+ sed -i "s/TDengine/PowerDB/g" ${top_dir}/src/os/src/windows/wEnv.c
+ # src/kit/shell/src/shellEngine.c
+ sed -i "s/TDengine shell/PowerDB shell/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+ sed -i "s/2020 by TAOS Data, Inc/2020 by PowerDB, Inc/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+ sed -i "s/\"taos> \"/\"power> \"/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+ sed -i "s/\" -> \"/\" -> \"/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+ sed -i "s/prompt_size = 6/prompt_size = 7/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+fi
+
+# for tq
+if [[ "$dbName" == "tq" ]]; then
+ # cmake/install.inc
+ sed -i "s/C:\/TDengine/C:\/TQueue/g" ${top_dir}/cmake/install.inc
+ sed -i "s/taos\.exe/tq\.exe/g" ${top_dir}/cmake/install.inc
+ sed -i "s/taosdemo\.exe/tqdemo\.exe/g" ${top_dir}/cmake/install.inc
+ # src/kit/shell/inc/shell.h
+ sed -i "s/taos_history/tq_history/g" ${top_dir}/src/kit/shell/inc/shell.h
+ # src/inc/taosdef.h
+ sed -i "s/\"taosdata\"/\"tqueue\"/g" ${top_dir}/src/inc/taosdef.h
+ # src/util/src/tconfig.c
+ sed -i "s/taos config/tq config/g" ${top_dir}/src/util/src/tconfig.c
+ sed -i "s/taos\.cfg/tq\.cfg/g" ${top_dir}/src/util/src/tconfig.c
+ sed -i "s/etc\/taos/etc\/tq/g" ${top_dir}/src/util/src/tconfig.c
+ # src/kit/taosdemo/taosdemo.c
+ sed -i "s/\"taosdata\"/\"tqueue\"/g" ${top_dir}/src/kit/taosdemo/taosdemo.c
+ # src/util/src/tlog.c
+ sed -i "s/log\/taos/log\/tq/g" ${top_dir}/src/util/src/tlog.c
+ # src/dnode/src/dnodeSystem.c
+ sed -i "s/TDengine/TQueue/g" ${top_dir}/src/dnode/src/dnodeSystem.c
+ sed -i "s/TDengine/TQueue/g" ${top_dir}/src/dnode/src/dnodeMain.c
+ sed -i "s/taosdlog/tqdlog/g" ${top_dir}/src/dnode/src/dnodeMain.c
+ # src/client/src/tscSystem.c
+ sed -i "s/taoslog/tqlog/g" ${top_dir}/src/client/src/tscSystem.c
+ # src/util/src/tnote.c
+ sed -i "s/taosinfo/tqinfo/g" ${top_dir}/src/util/src/tnote.c
+ # src/dnode/CMakeLists.txt
+ sed -i "s/taos\.cfg/tq\.cfg/g" ${top_dir}/src/dnode/CMakeLists.txt
+ # src/kit/taosdump/taosdump.c
+ sed -i "s/TDengine/TQueue/g" ${top_dir}/src/kit/taosdump/taosdump.c
+ sed -i "s/Default is taosdata/Default is tqueue/g" ${top_dir}/src/kit/taosdump/taosdump.c
+ sed -i "s/\"taosdata\"/\"tqueue\"/g" ${top_dir}/src/kit/taosdump/taosdump.c
+ sed -i "s/taos\/taos\.cfg/tq\/tq\.cfg/g" ${top_dir}/src/kit/taosdump/taosdump.c
+ # src/os/src/linux/linuxEnv.c
+ sed -i "s/etc\/taos/etc\/tq/g" ${top_dir}/src/os/src/linux/linuxEnv.c
+ sed -i "s/lib\/taos/lib\/tq/g" ${top_dir}/src/os/src/linux/linuxEnv.c
+ sed -i "s/log\/taos/log\/tq/g" ${top_dir}/src/os/src/linux/linuxEnv.c
+ # src/os/src/windows/wEnv.c
+ sed -i "s/TDengine/TQ/g" ${top_dir}/src/os/src/windows/wEnv.c
+ # src/kit/shell/src/shellEngine.c
+ sed -i "s/TDengine shell/TQ shell/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+ sed -i "s/2020 by TAOS Data, Inc/2020 by TQ, Inc/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+ sed -i "s/\"taos> \"/\"tq> \"/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+ sed -i "s/\" -> \"/\" -> \"/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+ sed -i "s/prompt_size = 6/prompt_size = 4/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+fi
+
+# for prodb
if [[ "$dbName" == "pro" ]]; then
- sed -i "s/taos config/prodb config/g" ${top_dir}/src/util/src/tconfig.c
- sed -i "s/TDengine/ProDB/g" ${top_dir}/src/dnode/src/dnodeSystem.c
+ # cmake/install.inc
+ sed -i "s/C:\/TDengine/C:\/ProDB/g" ${top_dir}/cmake/install.inc
+ sed -i "s/taos\.exe/prodbc\.exe/g" ${top_dir}/cmake/install.inc
+ sed -i "s/taosdemo\.exe/prodemo\.exe/g" ${top_dir}/cmake/install.inc
+ # src/kit/shell/inc/shell.h
+ sed -i "s/taos_history/prodb_history/g" ${top_dir}/src/kit/shell/inc/shell.h
+ # src/inc/taosdef.h
+ sed -i "s/\"taosdata\"/\"prodb\"/g" ${top_dir}/src/inc/taosdef.h
+ # src/util/src/tconfig.c
+ sed -i "s/taos config/prodb config/g" ${top_dir}/src/util/src/tconfig.c
+ sed -i "s/taos\.cfg/prodb\.cfg/g" ${top_dir}/src/util/src/tconfig.c
+ sed -i "s/etc\/taos/etc\/ProDB/g" ${top_dir}/src/util/src/tconfig.c
+ # src/kit/taosdemo/taosdemo.c
+ sed -i "s/\"taosdata\"/\"prodb\"/g" ${top_dir}/src/kit/taosdemo/taosdemo.c
+ sed -i "s/support@taosdata.com/support@hanatech.com.cn/g" ${top_dir}/src/kit/taosdemo/taosdemo.c
+ # src/util/src/tlog.c
+ sed -i "s/log\/taos/log\/ProDB/g" ${top_dir}/src/util/src/tlog.c
+ # src/dnode/src/dnodeSystem.c
+ sed -i "s/TDengine/ProDB/g" ${top_dir}/src/dnode/src/dnodeSystem.c
+ sed -i "s/TDengine/ProDB/g" ${top_dir}/src/dnode/src/dnodeMain.c
+ sed -i "s/taosdlog/prodlog/g" ${top_dir}/src/dnode/src/dnodeMain.c
+ # src/client/src/tscSystem.c
+ sed -i "s/taoslog/prolog/g" ${top_dir}/src/client/src/tscSystem.c
+ # src/util/src/tnote.c
+ sed -i "s/taosinfo/proinfo/g" ${top_dir}/src/util/src/tnote.c
+ # src/dnode/CMakeLists.txt
+ sed -i "s/taos\.cfg/prodb\.cfg/g" ${top_dir}/src/dnode/CMakeLists.txt
+ # src/kit/taosdump/taosdump.c
+ sed -i "s/Default is taosdata/Default is prodb/g" ${top_dir}/src/kit/taosdump/taosdump.c
+ sed -i "s/taos\/taos\.cfg/ProDB\/prodb\.cfg/g" ${top_dir}/src/kit/taosdump/taosdump.c
+ sed -i "s/\"taosdata\"/\"prodb\"/g" ${top_dir}/src/kit/taosdump/taosdump.c
+ sed -i "s/TDengine/ProDB/g" ${top_dir}/src/kit/taosdump/taosdump.c
+ # src/os/src/linux/linuxEnv.c
+ sed -i "s/etc\/taos/etc\/ProDB/g" ${top_dir}/src/os/src/linux/linuxEnv.c
+ sed -i "s/lib\/taos/lib\/ProDB/g" ${top_dir}/src/os/src/linux/linuxEnv.c
+ sed -i "s/log\/taos/log\/ProDB/g" ${top_dir}/src/os/src/linux/linuxEnv.c
+ # src/os/src/windows/wEnv.c
+ sed -i "s/TDengine/ProDB/g" ${top_dir}/src/os/src/windows/wEnv.c
+ # src/kit/shell/src/shellEngine.c
+ sed -i "s/TDengine shell/ProDB shell/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+ sed -i "s/2020 by TAOS Data, Inc/2020 by Hanatech, Inc/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+ sed -i "s/\"taos> \"/\"ProDB> \"/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+ sed -i "s/\" -> \"/\" -> \"/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+ sed -i "s/prompt_size = 6/prompt_size = 7/g" ${top_dir}/src/kit/shell/src/shellEngine.c
fi
+# for KingHistorian
+if [[ "$dbName" == "kh" ]]; then
+ # cmake/install.inc
+ sed -i "s/C:\/TDengine/C:\/KingHistorian/g" ${top_dir}/cmake/install.inc
+ sed -i "s/taos\.exe/khclient\.exe/g" ${top_dir}/cmake/install.inc
+ sed -i "s/taosdemo\.exe/khdemo\.exe/g" ${top_dir}/cmake/install.inc
+ # src/kit/shell/inc/shell.h
+ sed -i "s/taos_history/kh_history/g" ${top_dir}/src/kit/shell/inc/shell.h
+ # src/inc/taosdef.h
+ sed -i "s/\"taosdata\"/\"khroot\"/g" ${top_dir}/src/inc/taosdef.h
+ # src/util/src/tconfig.c
+ sed -i "s/taos config/kh config/g" ${top_dir}/src/util/src/tconfig.c
+ sed -i "s/taos\.cfg/kinghistorian\.cfg/g" ${top_dir}/src/util/src/tconfig.c
+ sed -i "s/etc\/taos/etc\/kinghistorian/g" ${top_dir}/src/util/src/tconfig.c
+ # src/kit/taosdemo/taosdemo.c
+ sed -i "s/\"taosdata\"/\"khroot\"/g" ${top_dir}/src/kit/taosdemo/taosdemo.c
+ sed -i "s/support@taosdata.com/support@wellintech.com/g" ${top_dir}/src/kit/taosdemo/taosdemo.c
+ # src/util/src/tlog.c
+ sed -i "s/log\/taos/log\/kinghistorian/g" ${top_dir}/src/util/src/tlog.c
+ # src/dnode/src/dnodeSystem.c
+ sed -i "s/TDengine/KingHistorian/g" ${top_dir}/src/dnode/src/dnodeSystem.c
+ sed -i "s/TDengine/KingHistorian/g" ${top_dir}/src/dnode/src/dnodeMain.c
+ sed -i "s/taosdlog/khserverlog/g" ${top_dir}/src/dnode/src/dnodeMain.c
+ # src/client/src/tscSystem.c
+ sed -i "s/taoslog/khclientlog/g" ${top_dir}/src/client/src/tscSystem.c
+ # src/util/src/tnote.c
+ sed -i "s/taosinfo/khinfo/g" ${top_dir}/src/util/src/tnote.c
+ # src/dnode/CMakeLists.txt
+ sed -i "s/taos\.cfg/kinghistorian\.cfg/g" ${top_dir}/src/dnode/CMakeLists.txt
+ # src/dnode/CMakeLists.txt
+ sed -i "s/Default is taosdata/Default is khroot/g" ${top_dir}/src/kit/taosdump/taosdump.c
+ sed -i "s/\"taosdata\"/\"khroot\"/g" ${top_dir}/src/kit/taosdump/taosdump.c
+ sed -i "s/TDengine/KingHistorian/g" ${top_dir}/src/kit/taosdump/taosdump.c
+ sed -i "s/taos\/taos\.cfg/kinghistorian\/kinghistorian\.cfg/g" ${top_dir}/src/kit/taosdump/taosdump.c
+ # src/os/src/linux/linuxEnv.c
+ sed -i "s/etc\/taos/etc\/kinghistorian/g" ${top_dir}/src/os/src/linux/linuxEnv.c
+ sed -i "s/lib\/taos/lib\/kinghistorian/g" ${top_dir}/src/os/src/linux/linuxEnv.c
+ sed -i "s/log\/taos/log\/kinghistorian/g" ${top_dir}/src/os/src/linux/linuxEnv.c
+ # src/os/src/windows/wEnv.c
+ sed -i "s/TDengine/KingHistorian/g" ${top_dir}/src/os/src/windows/wEnv.c
+ # src/kit/shell/src/shellEngine.c
+ sed -i "s/TDengine shell/KingHistorian shell/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+ sed -i "s/2020 by TAOS Data, Inc/2021 by Wellintech, Inc/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+ sed -i "s/taos connect failed/kh connect failed/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+ sed -i "s/\"taos> \"/\"khclient> \"/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+ sed -i "s/\" -> \"/\" -> \"/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+ sed -i "s/prompt_size = 6/prompt_size = 4/g" ${top_dir}/src/kit/shell/src/shellEngine.c
+ # src/rpc/src/rpcMain.c
+ sed -i "s/taos connections/kh connections/g" ${top_dir}/src/rpc/src/rpcMain.c
+ # src/plugins/monitor/src/monMain.c
+ sed -i "s/taosd is quiting/khserver is quiting/g" ${top_dir}/src/plugins/monitor/src/monMain.c
+fi
+
+# for jinheng
+if [[ "$dbName" == "jh" ]]; then
+ # Following files to change:
+ # * src/client/src/tscSystem.c
+ # * src/inc/taosdef.h
+ # * src/kit/shell/CMakeLists.txt
+ # * src/kit/shell/inc/shell.h
+ # * src/kit/shell/src/shellEngine.c
+ # * src/kit/shell/src/shellWindows.c
+ # * src/kit/taosdemo/taosdemo.c
+ # * src/kit/taosdump/taosdump.c
+ # * src/os/src/linux/linuxEnv.c
+ # * src/os/src/windows/wEnv.c
+ # * src/util/src/tconfig.c
+ # * src/util/src/tlog.c
+
+ # src/dnode/src/dnodeSystem.c
+ sed -i "s/TDengine/jh_iot/g" ${top_dir}/src/dnode/src/dnodeSystem.c
+ # src/dnode/src/dnodeMain.c
+ sed -i "s/TDengine/jh_iot/g" ${top_dir}/src/dnode/src/dnodeMain.c
+ # TODO: src/dnode/CMakeLists.txt
+fi
# check support cpu type
if [[ "$cpuType" == "x64" ]] || [[ "$cpuType" == "aarch64" ]] || [[ "$cpuType" == "aarch32" ]] || [[ "$cpuType" == "mips64" ]] ; then
if [ "$verMode" != "cluster" ]; then
+ # community-version compile
cmake ../ -DCPUTYPE=${cpuType} -DOSTYPE=${osType} -DSOMODE=${soMode} -DDBNAME=${dbName} -DVERTYPE=${verType} -DVERDATE="${build_time}" -DGITINFO=${gitinfo} -DGITINFOI=${gitinfoOfInternal} -DVERNUMBER=${verNumber} -DVERCOMPATIBLE=${verNumberComp} -DPAGMODE=${pagMode} ${allocator_macro}
else
+ # enterprise-version compile
+ if [[ "$dbName" == "power" ]]; then
+ # enterprise/src/kit/perfMonitor/perfMonitor.c
+ sed -i "s/\"taosdata\"/\"powerdb\"/g" ${top_dir}/../enterprise/src/kit/perfMonitor/perfMonitor.c
+ sed -i "s/TDengine/PowerDB/g" ${top_dir}/../enterprise/src/kit/perfMonitor/perfMonitor.c
+ # enterprise/src/plugins/admin/src/httpAdminHandle.c
+ sed -i "s/taos\.cfg/power\.cfg/g" ${top_dir}/../enterprise/src/plugins/admin/src/httpAdminHandle.c
+ # enterprise/src/plugins/grant/src/grantMain.c
+ sed -i "s/taos\.cfg/power\.cfg/g" ${top_dir}/../enterprise/src/plugins/grant/src/grantMain.c
+ # enterprise/src/plugins/module/src/moduleMain.c
+ sed -i "s/taos\.cfg/power\.cfg/g" ${top_dir}/../enterprise/src/plugins/module/src/moduleMain.c
+ fi
+ if [[ "$dbName" == "tq" ]]; then
+ # enterprise/src/kit/perfMonitor/perfMonitor.c
+ sed -i "s/\"taosdata\"/\"tqueue\"/g" ${top_dir}/../enterprise/src/kit/perfMonitor/perfMonitor.c
+ sed -i "s/TDengine/TQueue/g" ${top_dir}/../enterprise/src/kit/perfMonitor/perfMonitor.c
+ # enterprise/src/plugins/admin/src/httpAdminHandle.c
+ sed -i "s/taos\.cfg/tq\.cfg/g" ${top_dir}/../enterprise/src/plugins/admin/src/httpAdminHandle.c
+ # enterprise/src/plugins/grant/src/grantMain.c
+ sed -i "s/taos\.cfg/tq\.cfg/g" ${top_dir}/../enterprise/src/plugins/grant/src/grantMain.c
+ # enterprise/src/plugins/module/src/moduleMain.c
+ sed -i "s/taos\.cfg/tq\.cfg/g" ${top_dir}/../enterprise/src/plugins/module/src/moduleMain.c
+ fi
+ if [[ "$dbName" == "pro" ]]; then
+ # enterprise/src/kit/perfMonitor/perfMonitor.c
+ sed -i "s/\"taosdata\"/\"prodb\"/g" ${top_dir}/../enterprise/src/kit/perfMonitor/perfMonitor.c
+ sed -i "s/TDengine/ProDB/g" ${top_dir}/../enterprise/src/kit/perfMonitor/perfMonitor.c
+ # enterprise/src/plugins/admin/src/httpAdminHandle.c
+ sed -i "s/taos\.cfg/prodb\.cfg/g" ${top_dir}/../enterprise/src/plugins/admin/src/httpAdminHandle.c
+ # enterprise/src/plugins/grant/src/grantMain.c
+ sed -i "s/taos\.cfg/prodb\.cfg/g" ${top_dir}/../enterprise/src/plugins/grant/src/grantMain.c
+ # enterprise/src/plugins/module/src/moduleMain.c
+ sed -i "s/taos\.cfg/prodb\.cfg/g" ${top_dir}/../enterprise/src/plugins/module/src/moduleMain.c
+ fi
+ if [[ "$dbName" == "kh" ]]; then
+ # enterprise/src/kit/perfMonitor/perfMonitor.c
+ sed -i "s/\"taosdata\"/\"khroot\"/g" ${top_dir}/../enterprise/src/kit/perfMonitor/perfMonitor.c
+ sed -i "s/TDengine/KingHistorian/g" ${top_dir}/../enterprise/src/kit/perfMonitor/perfMonitor.c
+ # enterprise/src/plugins/admin/src/httpAdminHandle.c
+ sed -i "s/taos\.cfg/kinghistorian\.cfg/g" ${top_dir}/../enterprise/src/plugins/admin/src/httpAdminHandle.c
+ # enterprise/src/plugins/grant/src/grantMain.c
+ sed -i "s/taos\.cfg/kinghistorian\.cfg/g" ${top_dir}/../enterprise/src/plugins/grant/src/grantMain.c
+ # enterprise/src/plugins/module/src/moduleMain.c
+ sed -i "s/taos\.cfg/kinghistorian\.cfg/g" ${top_dir}/../enterprise/src/plugins/module/src/moduleMain.c
+ fi
+ if [[ "$dbName" == "jh" ]]; then
+ # enterprise/src/kit/perfMonitor/perfMonitor.c
+ sed -i "s/\"taosdata\"/\"jhdata\"/g" ${top_dir}/../enterprise/src/kit/perfMonitor/perfMonitor.c
+ sed -i "s/TDengine/jh_iot/g" ${top_dir}/../enterprise/src/kit/perfMonitor/perfMonitor.c
+ # enterprise/src/plugins/admin/src/httpAdminHandle.c
+ #sed -i "s/taos\.cfg/taos\.cfg/g" ${top_dir}/../enterprise/src/plugins/admin/src/httpAdminHandle.c
+ # enterprise/src/plugins/grant/src/grantMain.c
+ #sed -i "s/taos\.cfg/taos\.cfg/g" ${top_dir}/../enterprise/src/plugins/grant/src/grantMain.c
+ # enterprise/src/plugins/module/src/moduleMain.c
+ #sed -i "s/taos\.cfg/taos\.cfg/g" ${top_dir}/../enterprise/src/plugins/module/src/moduleMain.c
+ fi
+
cmake ../../ -DCPUTYPE=${cpuType} -DOSTYPE=${osType} -DSOMODE=${soMode} -DDBNAME=${dbName} -DVERTYPE=${verType} -DVERDATE="${build_time}" -DGITINFO=${gitinfo} -DGITINFOI=${gitinfoOfInternal} -DVERNUMBER=${verNumber} -DVERCOMPATIBLE=${verNumberComp} ${allocator_macro}
fi
else
@@ -231,7 +501,6 @@ if [ "$osType" != "Darwin" ]; then
else
echo "==========dpkg command not exist, so not release deb package!!!"
fi
-
ret='0'
command -v rpmbuild >/dev/null 2>&1 || { ret='1'; }
if [ "$ret" -eq 0 ]; then
@@ -263,12 +532,21 @@ if [ "$osType" != "Darwin" ]; then
${csudo} ./makepkg_pro.sh ${compile_dir} ${verNumber} "${build_time}" ${cpuType} ${osType} ${verMode} ${verType} ${pagMode} ${dbName} ${verNumberComp}
${csudo} ./makeclient_pro.sh ${compile_dir} ${verNumber} "${build_time}" ${cpuType} ${osType} ${verMode} ${verType} ${pagMode} ${dbName}
${csudo} ./makearbi_pro.sh ${compile_dir} ${verNumber} "${build_time}" ${cpuType} ${osType} ${verMode} ${verType} ${pagMode}
+ elif [[ "$dbName" == "kh" ]]; then
+ ${csudo} ./makepkg_kh.sh ${compile_dir} ${verNumber} "${build_time}" ${cpuType} ${osType} ${verMode} ${verType} ${pagMode} ${dbName} ${verNumberComp}
+ ${csudo} ./makeclient_kh.sh ${compile_dir} ${verNumber} "${build_time}" ${cpuType} ${osType} ${verMode} ${verType} ${pagMode} ${dbName}
+ ${csudo} ./makearbi_kh.sh ${compile_dir} ${verNumber} "${build_time}" ${cpuType} ${osType} ${verMode} ${verType} ${pagMode}
+ elif [[ "$dbName" == "jh" ]]; then
+ ${csudo} ./makepkg_jh.sh ${compile_dir} ${verNumber} "${build_time}" ${cpuType} ${osType} ${verMode} ${verType} ${pagMode} ${dbName} ${verNumberComp}
+ ${csudo} ./makeclient_jh.sh ${compile_dir} ${verNumber} "${build_time}" ${cpuType} ${osType} ${verMode} ${verType} ${pagMode} ${dbName}
+ ${csudo} ./makearbi_jh.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} ${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
else
+ # only make client for Darwin
cd ${script_dir}/tools
./makeclient.sh ${compile_dir} ${verNumber} "${build_time}" ${cpuType} ${osType} ${verMode} ${verType} ${dbName}
fi
diff --git a/packaging/tools/install_arbi_jh.sh b/packaging/tools/install_arbi_jh.sh
new file mode 100755
index 0000000000000000000000000000000000000000..2403f8fbd79abf4324577fe3dca3a8e0eac8ed01
--- /dev/null
+++ b/packaging/tools/install_arbi_jh.sh
@@ -0,0 +1,286 @@
+#!/bin/bash
+#
+# This file is used to install database on linux systems. The operating system
+# is required to use systemd to manage services at boot
+
+set -e
+#set -x
+
+# -----------------------Variables definition---------------------
+script_dir=$(dirname $(readlink -f "$0"))
+
+bin_link_dir="/usr/bin"
+#inc_link_dir="/usr/include"
+
+#install main path
+install_main_dir="/usr/local/tarbitrator"
+
+# old bin dir
+bin_dir="/usr/local/tarbitrator/bin"
+
+service_config_dir="/etc/systemd/system"
+
+# Color setting
+RED='\033[0;31m'
+GREEN='\033[1;32m'
+GREEN_DARK='\033[0;32m'
+GREEN_UNDERLINE='\033[4;32m'
+NC='\033[0m'
+
+csudo=""
+if command -v sudo > /dev/null; then
+ csudo="sudo"
+fi
+
+update_flag=0
+
+initd_mod=0
+service_mod=2
+if pidof systemd &> /dev/null; then
+ service_mod=0
+elif $(which service &> /dev/null); then
+ service_mod=1
+ service_config_dir="/etc/init.d"
+ if $(which chkconfig &> /dev/null); then
+ initd_mod=1
+ elif $(which insserv &> /dev/null); then
+ initd_mod=2
+ elif $(which update-rc.d &> /dev/null); then
+ initd_mod=3
+ else
+ service_mod=2
+ fi
+else
+ service_mod=2
+fi
+
+
+# get the operating system type for using the corresponding init file
+# ubuntu/debian(deb), centos/fedora(rpm), others: opensuse, redhat, ..., no verification
+#osinfo=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
+if [[ -e /etc/os-release ]]; then
+ osinfo=$(cat /etc/os-release | grep "NAME" | cut -d '"' -f2) ||:
+else
+ osinfo=""
+fi
+#echo "osinfo: ${osinfo}"
+os_type=0
+if echo $osinfo | grep -qwi "ubuntu" ; then
+# echo "This is ubuntu system"
+ os_type=1
+elif echo $osinfo | grep -qwi "debian" ; then
+# echo "This is debian system"
+ os_type=1
+elif echo $osinfo | grep -qwi "Kylin" ; then
+# echo "This is Kylin system"
+ os_type=1
+elif echo $osinfo | grep -qwi "centos" ; then
+# echo "This is centos system"
+ os_type=2
+elif echo $osinfo | grep -qwi "fedora" ; then
+# echo "This is fedora system"
+ os_type=2
+else
+ echo " osinfo: ${osinfo}"
+ echo " This is an officially unverified linux system,"
+ echo " if there are any problems with the installation and operation, "
+ echo " please feel free to contact jhict.com for support."
+ os_type=1
+fi
+
+function kill_tarbitrator() {
+ pid=$(ps -ef | grep "tarbitrator" | grep -v "grep" | awk '{print $2}')
+ if [ -n "$pid" ]; then
+ ${csudo} kill -9 $pid || :
+ fi
+}
+
+function install_main_path() {
+ #create install main dir and all sub dir
+ ${csudo} rm -rf ${install_main_dir} || :
+ ${csudo} mkdir -p ${install_main_dir}
+ ${csudo} mkdir -p ${install_main_dir}/bin
+ #${csudo} mkdir -p ${install_main_dir}/include
+ ${csudo} mkdir -p ${install_main_dir}/init.d
+}
+
+function install_bin() {
+ # Remove links
+ ${csudo} rm -f ${bin_link_dir}/rmtarbitrator || :
+ ${csudo} rm -f ${bin_link_dir}/tarbitrator || :
+ ${csudo} cp -r ${script_dir}/bin/* ${install_main_dir}/bin && ${csudo} chmod 0555 ${install_main_dir}/bin/*
+
+ #Make link
+ [ -x ${install_main_dir}/bin/remove_arbi_jh.sh ] && ${csudo} ln -s ${install_main_dir}/bin/remove_arbi_jh.sh ${bin_link_dir}/rmtarbitrator || :
+ [ -x ${install_main_dir}/bin/tarbitrator ] && ${csudo} ln -s ${install_main_dir}/bin/tarbitrator ${bin_link_dir}/tarbitrator || :
+}
+
+function install_header() {
+ ${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} 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
+}
+
+function clean_service_on_sysvinit() {
+ if pidof tarbitrator &> /dev/null; then
+ ${csudo} service tarbitratord stop || :
+ fi
+
+ if ((${initd_mod}==1)); then
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} chkconfig --del tarbitratord || :
+ fi
+ elif ((${initd_mod}==2)); then
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} insserv -r tarbitratord || :
+ fi
+ elif ((${initd_mod}==3)); then
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} update-rc.d -f tarbitratord remove || :
+ fi
+ fi
+
+ ${csudo} rm -f ${service_config_dir}/tarbitratord || :
+
+ if $(which init &> /dev/null); then
+ ${csudo} init q || :
+ fi
+}
+
+function install_service_on_sysvinit() {
+ clean_service_on_sysvinit
+ sleep 1
+
+ # Install server service
+ if ((${os_type}==1)); then
+ ${csudo} cp -f ${script_dir}/init.d/tarbitratord.deb ${install_main_dir}/init.d/tarbitratord
+ ${csudo} cp ${script_dir}/init.d/tarbitratord.deb ${service_config_dir}/tarbitratord && ${csudo} chmod a+x ${service_config_dir}/tarbitratord
+ elif ((${os_type}==2)); then
+ ${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
+ fi
+
+ if ((${initd_mod}==1)); then
+ ${csudo} chkconfig --add tarbitratord || :
+ ${csudo} chkconfig --level 2345 tarbitratord on || :
+ elif ((${initd_mod}==2)); then
+ ${csudo} insserv tarbitratord || :
+ ${csudo} insserv -d tarbitratord || :
+ elif ((${initd_mod}==3)); then
+ ${csudo} update-rc.d tarbitratord defaults || :
+ fi
+}
+
+function clean_service_on_systemd() {
+ tarbitratord_service_config="${service_config_dir}/tarbitratord.service"
+ if systemctl is-active --quiet tarbitratord; then
+ echo "tarbitrator is running, stopping it..."
+ ${csudo} systemctl stop tarbitratord &> /dev/null || echo &> /dev/null
+ fi
+ ${csudo} systemctl disable tarbitratord &> /dev/null || echo &> /dev/null
+
+ ${csudo} rm -f ${tarbitratord_service_config}
+}
+
+function install_service_on_systemd() {
+ clean_service_on_systemd
+
+ tarbitratord_service_config="${service_config_dir}/tarbitratord.service"
+
+ ${csudo} bash -c "echo '[Unit]' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'Description=jh_iot arbitrator service' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'After=network-online.target' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'Wants=network-online.target' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo '[Service]' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'Type=simple' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'ExecStart=/usr/bin/tarbitrator' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'TimeoutStopSec=1000000s' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'LimitNOFILE=infinity' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'LimitNPROC=infinity' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'LimitCORE=infinity' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'TimeoutStartSec=0' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'StandardOutput=null' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'Restart=always' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'StartLimitBurst=3' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'StartLimitInterval=60s' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo '[Install]' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'WantedBy=multi-user.target' >> ${tarbitratord_service_config}"
+ ${csudo} systemctl enable tarbitratord
+}
+
+function install_service() {
+ if ((${service_mod}==0)); then
+ install_service_on_systemd
+ elif ((${service_mod}==1)); then
+ install_service_on_sysvinit
+ else
+ kill_tarbitrator
+ fi
+}
+
+function update() {
+ # Start to update
+ echo -e "${GREEN}Start to update jh_iot's arbitrator ...${NC}"
+ # Stop the service if running
+ if pidof tarbitrator &> /dev/null; then
+ if ((${service_mod}==0)); then
+ ${csudo} systemctl stop tarbitratord || :
+ elif ((${service_mod}==1)); then
+ ${csudo} service tarbitratord stop || :
+ else
+ kill_tarbitrator
+ fi
+ sleep 1
+ fi
+
+ install_main_path
+ #install_header
+ install_bin
+ install_service
+
+ echo
+ if ((${service_mod}==0)); then
+ echo -e "${GREEN_DARK}To start arbitrator ${NC}: ${csudo} systemctl start tarbitratord${NC}"
+ elif ((${service_mod}==1)); then
+ echo -e "${GREEN_DARK}To start arbitrator ${NC}: ${csudo} service tarbitratord start${NC}"
+ else
+ echo -e "${GREEN_DARK}To start arbitrator ${NC}: ./tarbitrator${NC}"
+ fi
+ echo
+ echo -e "\033[44;32;1mjh_iot's arbitrator is updated successfully!${NC}"
+}
+
+function install() {
+ # Start to install
+ echo -e "${GREEN}Start to install jh_iot's arbitrator ...${NC}"
+
+ install_main_path
+ #install_header
+ install_bin
+ install_service
+ echo
+ if ((${service_mod}==0)); then
+ echo -e "${GREEN_DARK}To start arbitrator ${NC}: ${csudo} systemctl start tarbitratord${NC}"
+ elif ((${service_mod}==1)); then
+ echo -e "${GREEN_DARK}To start arbitrator ${NC}: ${csudo} service tarbitratord start${NC}"
+ else
+ echo -e "${GREEN_DARK}To start arbitrator ${NC}: tarbitrator${NC}"
+ fi
+
+ echo -e "\033[44;32;1mjh_iot's arbitrator is installed successfully!${NC}"
+ echo
+}
+
+
+## ==============================Main program starts from here============================
+# Install server and client
+if [ -x ${bin_dir}/tarbitrator ]; then
+ update_flag=1
+ update
+else
+ install
+fi
+
diff --git a/packaging/tools/install_arbi_kh.sh b/packaging/tools/install_arbi_kh.sh
new file mode 100755
index 0000000000000000000000000000000000000000..9a2542936d935b70b762702f0f2f6ff92b51a4f3
--- /dev/null
+++ b/packaging/tools/install_arbi_kh.sh
@@ -0,0 +1,286 @@
+#!/bin/bash
+#
+# This file is used to install database on linux systems. The operating system
+# is required to use systemd to manage services at boot
+
+set -e
+#set -x
+
+# -----------------------Variables definition---------------------
+script_dir=$(dirname $(readlink -f "$0"))
+
+bin_link_dir="/usr/bin"
+#inc_link_dir="/usr/include"
+
+#install main path
+install_main_dir="/usr/local/tarbitrator"
+
+# old bin dir
+bin_dir="/usr/local/tarbitrator/bin"
+
+service_config_dir="/etc/systemd/system"
+
+# Color setting
+RED='\033[0;31m'
+GREEN='\033[1;32m'
+GREEN_DARK='\033[0;32m'
+GREEN_UNDERLINE='\033[4;32m'
+NC='\033[0m'
+
+csudo=""
+if command -v sudo > /dev/null; then
+ csudo="sudo"
+fi
+
+update_flag=0
+
+initd_mod=0
+service_mod=2
+if pidof systemd &> /dev/null; then
+ service_mod=0
+elif $(which service &> /dev/null); then
+ service_mod=1
+ service_config_dir="/etc/init.d"
+ if $(which chkconfig &> /dev/null); then
+ initd_mod=1
+ elif $(which insserv &> /dev/null); then
+ initd_mod=2
+ elif $(which update-rc.d &> /dev/null); then
+ initd_mod=3
+ else
+ service_mod=2
+ fi
+else
+ service_mod=2
+fi
+
+
+# get the operating system type for using the corresponding init file
+# ubuntu/debian(deb), centos/fedora(rpm), others: opensuse, redhat, ..., no verification
+#osinfo=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
+if [[ -e /etc/os-release ]]; then
+ osinfo=$(cat /etc/os-release | grep "NAME" | cut -d '"' -f2) ||:
+else
+ osinfo=""
+fi
+#echo "osinfo: ${osinfo}"
+os_type=0
+if echo $osinfo | grep -qwi "ubuntu" ; then
+# echo "This is ubuntu system"
+ os_type=1
+elif echo $osinfo | grep -qwi "debian" ; then
+# echo "This is debian system"
+ os_type=1
+elif echo $osinfo | grep -qwi "Kylin" ; then
+# echo "This is Kylin system"
+ os_type=1
+elif echo $osinfo | grep -qwi "centos" ; then
+# echo "This is centos system"
+ os_type=2
+elif echo $osinfo | grep -qwi "fedora" ; then
+# echo "This is fedora system"
+ os_type=2
+else
+ echo " osinfo: ${osinfo}"
+ echo " This is an officially unverified linux system,"
+ echo " if there are any problems with the installation and operation, "
+ echo " please feel free to contact wellintech.com for support."
+ os_type=1
+fi
+
+function kill_tarbitrator() {
+ pid=$(ps -ef | grep "tarbitrator" | grep -v "grep" | awk '{print $2}')
+ if [ -n "$pid" ]; then
+ ${csudo} kill -9 $pid || :
+ fi
+}
+
+function install_main_path() {
+ #create install main dir and all sub dir
+ ${csudo} rm -rf ${install_main_dir} || :
+ ${csudo} mkdir -p ${install_main_dir}
+ ${csudo} mkdir -p ${install_main_dir}/bin
+ #${csudo} mkdir -p ${install_main_dir}/include
+ ${csudo} mkdir -p ${install_main_dir}/init.d
+}
+
+function install_bin() {
+ # Remove links
+ ${csudo} rm -f ${bin_link_dir}/rmtarbitrator || :
+ ${csudo} rm -f ${bin_link_dir}/tarbitrator || :
+ ${csudo} cp -r ${script_dir}/bin/* ${install_main_dir}/bin && ${csudo} chmod 0555 ${install_main_dir}/bin/*
+
+ #Make link
+ [ -x ${install_main_dir}/bin/remove_arbi_kh.sh ] && ${csudo} ln -s ${install_main_dir}/bin/remove_arbi_kh.sh ${bin_link_dir}/rmtarbitrator || :
+ [ -x ${install_main_dir}/bin/tarbitrator ] && ${csudo} ln -s ${install_main_dir}/bin/tarbitrator ${bin_link_dir}/tarbitrator || :
+}
+
+function install_header() {
+ ${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} 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
+}
+
+function clean_service_on_sysvinit() {
+ if pidof tarbitrator &> /dev/null; then
+ ${csudo} service tarbitratord stop || :
+ fi
+
+ if ((${initd_mod}==1)); then
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} chkconfig --del tarbitratord || :
+ fi
+ elif ((${initd_mod}==2)); then
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} insserv -r tarbitratord || :
+ fi
+ elif ((${initd_mod}==3)); then
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} update-rc.d -f tarbitratord remove || :
+ fi
+ fi
+
+ ${csudo} rm -f ${service_config_dir}/tarbitratord || :
+
+ if $(which init &> /dev/null); then
+ ${csudo} init q || :
+ fi
+}
+
+function install_service_on_sysvinit() {
+ clean_service_on_sysvinit
+ sleep 1
+
+ # Install khserver service
+ if ((${os_type}==1)); then
+ ${csudo} cp -f ${script_dir}/init.d/tarbitratord.deb ${install_main_dir}/init.d/tarbitratord
+ ${csudo} cp ${script_dir}/init.d/tarbitratord.deb ${service_config_dir}/tarbitratord && ${csudo} chmod a+x ${service_config_dir}/tarbitratord
+ elif ((${os_type}==2)); then
+ ${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
+ fi
+
+ if ((${initd_mod}==1)); then
+ ${csudo} chkconfig --add tarbitratord || :
+ ${csudo} chkconfig --level 2345 tarbitratord on || :
+ elif ((${initd_mod}==2)); then
+ ${csudo} insserv tarbitratord || :
+ ${csudo} insserv -d tarbitratord || :
+ elif ((${initd_mod}==3)); then
+ ${csudo} update-rc.d tarbitratord defaults || :
+ fi
+}
+
+function clean_service_on_systemd() {
+ tarbitratord_service_config="${service_config_dir}/tarbitratord.service"
+ if systemctl is-active --quiet tarbitratord; then
+ echo "tarbitrator is running, stopping it..."
+ ${csudo} systemctl stop tarbitratord &> /dev/null || echo &> /dev/null
+ fi
+ ${csudo} systemctl disable tarbitratord &> /dev/null || echo &> /dev/null
+
+ ${csudo} rm -f ${tarbitratord_service_config}
+}
+
+function install_service_on_systemd() {
+ clean_service_on_systemd
+
+ tarbitratord_service_config="${service_config_dir}/tarbitratord.service"
+
+ ${csudo} bash -c "echo '[Unit]' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'Description=KingHistorian arbitrator service' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'After=network-online.target' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'Wants=network-online.target' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo '[Service]' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'Type=simple' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'ExecStart=/usr/bin/tarbitrator' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'TimeoutStopSec=1000000s' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'LimitNOFILE=infinity' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'LimitNPROC=infinity' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'LimitCORE=infinity' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'TimeoutStartSec=0' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'StandardOutput=null' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'Restart=always' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'StartLimitBurst=3' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'StartLimitInterval=60s' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo '[Install]' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'WantedBy=multi-user.target' >> ${tarbitratord_service_config}"
+ ${csudo} systemctl enable tarbitratord
+}
+
+function install_service() {
+ if ((${service_mod}==0)); then
+ install_service_on_systemd
+ elif ((${service_mod}==1)); then
+ install_service_on_sysvinit
+ else
+ kill_tarbitrator
+ fi
+}
+
+function update() {
+ # Start to update
+ echo -e "${GREEN}Start to update KingHistorian's arbitrator ...${NC}"
+ # Stop the service if running
+ if pidof tarbitrator &> /dev/null; then
+ if ((${service_mod}==0)); then
+ ${csudo} systemctl stop tarbitratord || :
+ elif ((${service_mod}==1)); then
+ ${csudo} service tarbitratord stop || :
+ else
+ kill_tarbitrator
+ fi
+ sleep 1
+ fi
+
+ install_main_path
+ #install_header
+ install_bin
+ install_service
+
+ echo
+ if ((${service_mod}==0)); then
+ echo -e "${GREEN_DARK}To start arbitrator ${NC}: ${csudo} systemctl start tarbitratord${NC}"
+ elif ((${service_mod}==1)); then
+ echo -e "${GREEN_DARK}To start arbitrator ${NC}: ${csudo} service tarbitratord start${NC}"
+ else
+ echo -e "${GREEN_DARK}To start arbitrator ${NC}: ./tarbitrator${NC}"
+ fi
+ echo
+ echo -e "\033[44;32;1mKingHistorian's arbitrator is updated successfully!${NC}"
+}
+
+function install() {
+ # Start to install
+ echo -e "${GREEN}Start to install KingHistorian's arbitrator ...${NC}"
+
+ install_main_path
+ #install_header
+ install_bin
+ install_service
+ echo
+ if ((${service_mod}==0)); then
+ echo -e "${GREEN_DARK}To start arbitrator ${NC}: ${csudo} systemctl start tarbitratord${NC}"
+ elif ((${service_mod}==1)); then
+ echo -e "${GREEN_DARK}To start arbitrator ${NC}: ${csudo} service tarbitratord start${NC}"
+ else
+ echo -e "${GREEN_DARK}To start arbitrator ${NC}: tarbitrator${NC}"
+ fi
+
+ echo -e "\033[44;32;1mKingHistorian's arbitrator is installed successfully!${NC}"
+ echo
+}
+
+
+## ==============================Main program starts from here============================
+# Install server and client
+if [ -x ${bin_dir}/tarbitrator ]; then
+ update_flag=1
+ update
+else
+ install
+fi
+
diff --git a/packaging/tools/install_arbi_power.sh b/packaging/tools/install_arbi_power.sh
index 883db2b7169d125309125887cb72279c92c4602a..da86566eec43438cc9f266a86f4e7afe226ca6ce 100755
--- a/packaging/tools/install_arbi_power.sh
+++ b/packaging/tools/install_arbi_power.sh
@@ -176,9 +176,6 @@ function install_header() {
}
function clean_service_on_sysvinit() {
- #restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start"
- #${csudo} sed -i "\|${restart_config_str}|d" /etc/inittab || :
-
if pidof tarbitrator &> /dev/null; then
${csudo} service tarbitratord stop || :
fi
@@ -279,7 +276,6 @@ function install_service() {
elif ((${service_mod}==1)); then
install_service_on_sysvinit
else
- # must manual stop taosd
kill_tarbitrator
fi
}
@@ -306,7 +302,6 @@ function update_PowerDB() {
install_jemalloc
echo
- #echo -e "${GREEN_DARK}To configure PowerDB ${NC}: edit /etc/taos/taos.cfg"
if ((${service_mod}==0)); then
echo -e "${GREEN_DARK}To start arbitrator ${NC}: ${csudo} systemctl start tarbitratord${NC}"
elif ((${service_mod}==1)); then
@@ -329,7 +324,6 @@ function install_PowerDB() {
install_jemalloc
echo
- #echo -e "${GREEN_DARK}To configure PowerDB ${NC}: edit /etc/taos/taos.cfg"
if ((${service_mod}==0)); then
echo -e "${GREEN_DARK}To start arbitrator ${NC}: ${csudo} systemctl start tarbitratord${NC}"
elif ((${service_mod}==1)); then
diff --git a/packaging/tools/install_arbi_pro.sh b/packaging/tools/install_arbi_pro.sh
index 11165dbdd8bdf6afb4659250499cf1d9184c2395..98e896aa6583485ae1700d3557b0fe93a34b0a47 100755
--- a/packaging/tools/install_arbi_pro.sh
+++ b/packaging/tools/install_arbi_pro.sh
@@ -123,9 +123,6 @@ function install_header() {
}
function clean_service_on_sysvinit() {
- #restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start"
- #${csudo} sed -i "\|${restart_config_str}|d" /etc/inittab || :
-
if pidof tarbitrator &> /dev/null; then
${csudo} service tarbitratord stop || :
fi
@@ -221,7 +218,6 @@ function install_service() {
elif ((${service_mod}==1)); then
install_service_on_sysvinit
else
- # must manual stop taosd
kill_tarbitrator
fi
}
@@ -247,7 +243,6 @@ function update_prodb() {
install_service
echo
- #echo -e "${GREEN_DARK}To configure ProDB ${NC}: edit /etc/taos/taos.cfg"
if ((${service_mod}==0)); then
echo -e "${GREEN_DARK}To start arbitrator ${NC}: ${csudo} systemctl start tarbitratord${NC}"
elif ((${service_mod}==1)); then
@@ -268,7 +263,6 @@ function install_prodb() {
install_bin
install_service
echo
- #echo -e "${GREEN_DARK}To configure ProDB ${NC}: edit /etc/taos/taos.cfg"
if ((${service_mod}==0)); then
echo -e "${GREEN_DARK}To start arbitrator ${NC}: ${csudo} systemctl start tarbitratord${NC}"
elif ((${service_mod}==1)); then
diff --git a/packaging/tools/install_arbi_tq.sh b/packaging/tools/install_arbi_tq.sh
index bd852dd0ad2c9114f2424193adccf56b0cb40412..37426b359d8957c664fd21552a95d45f50085485 100755
--- a/packaging/tools/install_arbi_tq.sh
+++ b/packaging/tools/install_arbi_tq.sh
@@ -123,9 +123,6 @@ function install_header() {
}
function clean_service_on_sysvinit() {
- #restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start"
- #${csudo} sed -i "\|${restart_config_str}|d" /etc/inittab || :
-
if pidof tarbitrator &> /dev/null; then
${csudo} service tarbitratord stop || :
fi
@@ -226,7 +223,6 @@ function install_service() {
elif ((${service_mod}==1)); then
install_service_on_sysvinit
else
- # must manual stop taosd
kill_tarbitrator
fi
}
@@ -252,7 +248,6 @@ function update_tq() {
install_service
echo
- #echo -e "${GREEN_DARK}To configure TQ ${NC}: edit /etc/taos/taos.cfg"
if ((${service_mod}==0)); then
echo -e "${GREEN_DARK}To start arbitrator ${NC}: ${csudo} systemctl start tarbitratord${NC}"
elif ((${service_mod}==1)); then
@@ -273,7 +268,6 @@ function install_tq() {
install_bin
install_service
echo
- #echo -e "${GREEN_DARK}To configure TQ ${NC}: edit /etc/taos/taos.cfg"
if ((${service_mod}==0)); then
echo -e "${GREEN_DARK}To start arbitrator ${NC}: ${csudo} systemctl start tarbitratord${NC}"
elif ((${service_mod}==1)); then
diff --git a/packaging/tools/install_client_jh.sh b/packaging/tools/install_client_jh.sh
new file mode 100755
index 0000000000000000000000000000000000000000..cccf0a97be053796099d5b5f4a2c3db018c24955
--- /dev/null
+++ b/packaging/tools/install_client_jh.sh
@@ -0,0 +1,245 @@
+#!/bin/bash
+#
+# This file is used to install jh_taos client on linux systems. The operating system
+# is required to use systemd to manage services at boot
+
+set -e
+#set -x
+
+# -----------------------Variables definition---------------------
+
+osType=Linux
+pagMode=full
+
+if [ "$osType" != "Darwin" ]; then
+ script_dir=$(dirname $(readlink -f "$0"))
+ # Dynamic directory
+ data_dir="/var/lib/jh_taos"
+ log_dir="/var/log/jh_taos"
+else
+ script_dir=`dirname $0`
+ cd ${script_dir}
+ script_dir="$(pwd)"
+ data_dir="/var/lib/jh_taos"
+ log_dir="~/jh_taos/log"
+fi
+
+log_link_dir="/usr/local/jh_taos/log"
+
+cfg_install_dir="/etc/jh_taos"
+
+if [ "$osType" != "Darwin" ]; then
+ bin_link_dir="/usr/bin"
+ lib_link_dir="/usr/lib"
+ lib64_link_dir="/usr/lib64"
+ inc_link_dir="/usr/include"
+else
+ bin_link_dir="/usr/local/bin"
+ lib_link_dir="/usr/local/lib"
+ inc_link_dir="/usr/local/include"
+fi
+
+#install main path
+install_main_dir="/usr/local/jh_taos"
+
+# old bin dir
+bin_dir="/usr/local/jh_taos/bin"
+
+# Color setting
+RED='\033[0;31m'
+GREEN='\033[1;32m'
+GREEN_DARK='\033[0;32m'
+GREEN_UNDERLINE='\033[4;32m'
+NC='\033[0m'
+
+csudo=""
+if command -v sudo > /dev/null; then
+ csudo="sudo"
+fi
+
+update_flag=0
+
+function kill_client() {
+ pid=$(ps -ef | grep "jh_taos" | grep -v "grep" | awk '{print $2}')
+ if [ -n "$pid" ]; then
+ ${csudo} kill -9 $pid || :
+ fi
+}
+
+function install_main_path() {
+ #create install main dir and all sub dir
+ ${csudo} rm -rf ${install_main_dir} || :
+ ${csudo} mkdir -p ${install_main_dir}
+ ${csudo} mkdir -p ${install_main_dir}/cfg
+ ${csudo} mkdir -p ${install_main_dir}/bin
+ ${csudo} mkdir -p ${install_main_dir}/connector
+ ${csudo} mkdir -p ${install_main_dir}/driver
+ ${csudo} mkdir -p ${install_main_dir}/examples
+ ${csudo} mkdir -p ${install_main_dir}/include
+}
+
+function install_bin() {
+ # Remove links
+ ${csudo} rm -f ${bin_link_dir}/jh_taos || :
+ if [ "$osType" != "Darwin" ]; then
+ ${csudo} rm -f ${bin_link_dir}/jhdemo || :
+ ${csudo} rm -f ${bin_link_dir}/jh_taosdump || :
+ fi
+ ${csudo} rm -f ${bin_link_dir}/rmjh || :
+ ${csudo} rm -f ${bin_link_dir}/set_core || :
+
+ ${csudo} cp -r ${script_dir}/bin/* ${install_main_dir}/bin && ${csudo} chmod 0555 ${install_main_dir}/bin/*
+
+ #Make link
+ [ -x ${install_main_dir}/bin/jh_taos ] && ${csudo} ln -s ${install_main_dir}/bin/jh_taos ${bin_link_dir}/jh_taos || :
+ if [ "$osType" != "Darwin" ]; then
+ [ -x ${install_main_dir}/bin/jhdemo ] && ${csudo} ln -s ${install_main_dir}/bin/jhdemo ${bin_link_dir}/jhdemo || :
+ [ -x ${install_main_dir}/bin/jh_taosdump ] && ${csudo} ln -s ${install_main_dir}/bin/jh_taosdump ${bin_link_dir}/jh_taosdump || :
+ fi
+ [ -x ${install_main_dir}/bin/remove_client_jh.sh ] && ${csudo} ln -s ${install_main_dir}/bin/remove_client_jh.sh ${bin_link_dir}/rmjh || :
+ [ -x ${install_main_dir}/bin/set_core.sh ] && ${csudo} ln -s ${install_main_dir}/bin/set_core.sh ${bin_link_dir}/set_core || :
+}
+
+function clean_lib() {
+ sudo rm -f /usr/lib/libtaos.* || :
+ sudo rm -rf ${lib_dir} || :
+}
+
+function install_lib() {
+ # Remove links
+ ${csudo} rm -f ${lib_link_dir}/libtaos.* || :
+ ${csudo} rm -f ${lib64_link_dir}/libtaos.* || :
+
+ ${csudo} cp -rf ${script_dir}/driver/* ${install_main_dir}/driver && ${csudo} chmod 777 ${install_main_dir}/driver/*
+
+ if [ "$osType" != "Darwin" ]; then
+ ${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
+
+ if [ -d "${lib64_link_dir}" ]; then
+ ${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 || :
+ fi
+ else
+ ${csudo} ln -s ${install_main_dir}/driver/libtaos.* ${lib_link_dir}/libtaos.1.dylib
+ ${csudo} ln -s ${lib_link_dir}/libtaos.1.dylib ${lib_link_dir}/libtaos.dylib
+ fi
+
+ ${csudo} ldconfig
+}
+
+function install_header() {
+ ${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} 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
+}
+
+function install_config() {
+ if [ ! -f ${cfg_install_dir}/taos.cfg ]; then
+ ${csudo} mkdir -p ${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}/*
+ fi
+
+ ${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
+}
+
+
+function install_log() {
+ ${csudo} rm -rf ${log_dir} || :
+
+ if [ "$osType" != "Darwin" ]; then
+ ${csudo} mkdir -p ${log_dir} && ${csudo} chmod 777 ${log_dir}
+ else
+ mkdir -p ${log_dir} && ${csudo} chmod 777 ${log_dir}
+ fi
+ ${csudo} ln -s ${log_dir} ${install_main_dir}/log
+}
+
+function install_connector() {
+ ${csudo} cp -rf ${script_dir}/connector/* ${install_main_dir}/connector
+}
+
+function install_examples() {
+ if [ -d ${script_dir}/examples ]; then
+ ${csudo} cp -rf ${script_dir}/examples/* ${install_main_dir}/examples
+ fi
+}
+
+function update() {
+ # Start to update
+ if [ ! -e jh_taos.tar.gz ]; then
+ echo "File jh_taos.tar.gz does not exist"
+ exit 1
+ fi
+ tar -zxf jh_taos.tar.gz
+
+ echo -e "${GREEN}Start to update jh_iot client...${NC}"
+ # Stop the client shell if running
+ if pidof jh_taos &> /dev/null; then
+ kill_client
+ sleep 1
+ fi
+
+ install_main_path
+
+ install_log
+ install_header
+ install_lib
+ if [ "$pagMode" != "lite" ]; then
+ install_connector
+ fi
+ install_examples
+ install_bin
+ install_config
+
+ echo
+ echo -e "\033[44;32;1mjh_iot client is updated successfully!${NC}"
+
+ rm -rf $(tar -tf jh_taos.tar.gz)
+}
+
+function install() {
+ # Start to install
+ if [ ! -e jh_taos.tar.gz ]; then
+ echo "File jh_taos.tar.gz does not exist"
+ exit 1
+ fi
+ tar -zxf jh_taos.tar.gz
+
+ echo -e "${GREEN}Start to install jh_taos client...${NC}"
+
+ install_main_path
+ install_log
+ install_header
+ install_lib
+ if [ "$pagMode" != "lite" ]; then
+ install_connector
+ fi
+ install_examples
+ install_bin
+ install_config
+
+ echo
+ echo -e "\033[44;32;1mjh_iot client is installed successfully!${NC}"
+
+ rm -rf $(tar -tf jh_taos.tar.gz)
+}
+
+
+## ==============================Main program starts from here============================
+# Install or updata client and client
+# if server is already install, don't install client
+ if [ -e ${bin_dir}/jh_taosd ]; then
+ echo -e "\033[44;32;1mThere are already installed jh_iot server, so don't need install client!${NC}"
+ exit 0
+ fi
+
+ if [ -x ${bin_dir}/jh_taos ]; then
+ update_flag=1
+ update
+ else
+ install
+ fi
diff --git a/packaging/tools/install_client_kh.sh b/packaging/tools/install_client_kh.sh
new file mode 100755
index 0000000000000000000000000000000000000000..210fd27fb6978527d76f0c915d0293370b93cf3e
--- /dev/null
+++ b/packaging/tools/install_client_kh.sh
@@ -0,0 +1,246 @@
+#!/bin/bash
+#
+# This file is used to install kinghistorian client on linux systems. The operating system
+# is required to use systemd to manage services at boot
+
+set -e
+#set -x
+
+# -----------------------Variables definition---------------------
+
+osType=Linux
+pagMode=full
+
+if [ "$osType" != "Darwin" ]; then
+ script_dir=$(dirname $(readlink -f "$0"))
+ # Dynamic directory
+ data_dir="/var/lib/kinghistorian"
+ log_dir="/var/log/kinghistorian"
+else
+ script_dir=`dirname $0`
+ cd ${script_dir}
+ script_dir="$(pwd)"
+ data_dir="/var/lib/kinghistorian"
+ log_dir="~/kinghistorian/log"
+fi
+
+log_link_dir="/usr/local/kinghistorian/log"
+
+cfg_install_dir="/etc/kinghistorian"
+
+if [ "$osType" != "Darwin" ]; then
+ bin_link_dir="/usr/bin"
+ lib_link_dir="/usr/lib"
+ lib64_link_dir="/usr/lib64"
+ inc_link_dir="/usr/include"
+else
+ bin_link_dir="/usr/local/bin"
+ lib_link_dir="/usr/local/lib"
+ inc_link_dir="/usr/local/include"
+fi
+
+#install main path
+install_main_dir="/usr/local/kinghistorian"
+
+# old bin dir
+bin_dir="/usr/local/kinghistorian/bin"
+
+# Color setting
+RED='\033[0;31m'
+GREEN='\033[1;32m'
+GREEN_DARK='\033[0;32m'
+GREEN_UNDERLINE='\033[4;32m'
+NC='\033[0m'
+
+csudo=""
+if command -v sudo > /dev/null; then
+ csudo="sudo"
+fi
+
+update_flag=0
+
+function kill_client() {
+ pid=$(ps -ef | grep "khclient" | grep -v "grep" | awk '{print $2}')
+ if [ -n "$pid" ]; then
+ ${csudo} kill -9 $pid || :
+ fi
+}
+
+function install_main_path() {
+ #create install main dir and all sub dir
+ ${csudo} rm -rf ${install_main_dir} || :
+ ${csudo} mkdir -p ${install_main_dir}
+ ${csudo} mkdir -p ${install_main_dir}/cfg
+ ${csudo} mkdir -p ${install_main_dir}/bin
+ ${csudo} mkdir -p ${install_main_dir}/connector
+ ${csudo} mkdir -p ${install_main_dir}/driver
+ ${csudo} mkdir -p ${install_main_dir}/examples
+ ${csudo} mkdir -p ${install_main_dir}/include
+}
+
+function install_bin() {
+ # Remove links
+ ${csudo} rm -f ${bin_link_dir}/khclient || :
+ if [ "$osType" != "Darwin" ]; then
+ ${csudo} rm -f ${bin_link_dir}/khdemo || :
+ ${csudo} rm -f ${bin_link_dir}/khdump || :
+ fi
+ ${csudo} rm -f ${bin_link_dir}/rmkh || :
+ ${csudo} rm -f ${bin_link_dir}/set_core || :
+
+ ${csudo} cp -r ${script_dir}/bin/* ${install_main_dir}/bin && ${csudo} chmod 0555 ${install_main_dir}/bin/*
+
+ #Make link
+ [ -x ${install_main_dir}/bin/khclient ] && ${csudo} ln -s ${install_main_dir}/bin/khclient ${bin_link_dir}/khclient || :
+ if [ "$osType" != "Darwin" ]; then
+ [ -x ${install_main_dir}/bin/khdemo ] && ${csudo} ln -s ${install_main_dir}/bin/khdemo ${bin_link_dir}/khdemo || :
+ [ -x ${install_main_dir}/bin/khdump ] && ${csudo} ln -s ${install_main_dir}/bin/khdump ${bin_link_dir}/khdump || :
+ fi
+ [ -x ${install_main_dir}/bin/remove_client_kh.sh ] && ${csudo} ln -s ${install_main_dir}/bin/remove_client_kh.sh ${bin_link_dir}/rmkh || :
+ [ -x ${install_main_dir}/bin/set_core.sh ] && ${csudo} ln -s ${install_main_dir}/bin/set_core.sh ${bin_link_dir}/set_core || :
+}
+
+function clean_lib() {
+ sudo rm -f /usr/lib/libtaos.* || :
+ sudo rm -rf ${lib_dir} || :
+}
+
+function install_lib() {
+ # Remove links
+ ${csudo} rm -f ${lib_link_dir}/libtaos.* || :
+ ${csudo} rm -f ${lib64_link_dir}/libtaos.* || :
+ #${csudo} rm -rf ${v15_java_app_dir} || :
+
+ ${csudo} cp -rf ${script_dir}/driver/* ${install_main_dir}/driver && ${csudo} chmod 777 ${install_main_dir}/driver/*
+
+ if [ "$osType" != "Darwin" ]; then
+ ${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
+
+ if [ -d "${lib64_link_dir}" ]; then
+ ${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 || :
+ fi
+ else
+ ${csudo} ln -s ${install_main_dir}/driver/libtaos.* ${lib_link_dir}/libtaos.1.dylib
+ ${csudo} ln -s ${lib_link_dir}/libtaos.1.dylib ${lib_link_dir}/libtaos.dylib
+ fi
+
+ ${csudo} ldconfig
+}
+
+function install_header() {
+ ${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} 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
+}
+
+function install_config() {
+ if [ ! -f ${cfg_install_dir}/kinghistorian.cfg ]; then
+ ${csudo} mkdir -p ${cfg_install_dir}
+ [ -f ${script_dir}/cfg/kinghistorian.cfg ] && ${csudo} cp ${script_dir}/cfg/kinghistorian.cfg ${cfg_install_dir}
+ ${csudo} chmod 644 ${cfg_install_dir}/*
+ fi
+
+ ${csudo} cp -f ${script_dir}/cfg/kinghistorian.cfg ${install_main_dir}/cfg/kinghistorian.cfg.org
+ ${csudo} ln -s ${cfg_install_dir}/kinghistorian.cfg ${install_main_dir}/cfg
+}
+
+
+function install_log() {
+ ${csudo} rm -rf ${log_dir} || :
+
+ if [ "$osType" != "Darwin" ]; then
+ ${csudo} mkdir -p ${log_dir} && ${csudo} chmod 777 ${log_dir}
+ else
+ mkdir -p ${log_dir} && ${csudo} chmod 777 ${log_dir}
+ fi
+ ${csudo} ln -s ${log_dir} ${install_main_dir}/log
+}
+
+function install_connector() {
+ ${csudo} cp -rf ${script_dir}/connector/* ${install_main_dir}/connector
+}
+
+function install_examples() {
+ if [ -d ${script_dir}/examples ]; then
+ ${csudo} cp -rf ${script_dir}/examples/* ${install_main_dir}/examples
+ fi
+}
+
+function update() {
+ # Start to update
+ if [ ! -e kinghistorian.tar.gz ]; then
+ echo "File kinghistorian.tar.gz does not exist"
+ exit 1
+ fi
+ tar -zxf kinghistorian.tar.gz
+
+ echo -e "${GREEN}Start to update KingHistorian client...${NC}"
+ # Stop the client shell if running
+ if pidof khclient &> /dev/null; then
+ kill_client
+ sleep 1
+ fi
+
+ install_main_path
+
+ install_log
+ install_header
+ install_lib
+ if [ "$pagMode" != "lite" ]; then
+ install_connector
+ fi
+ install_examples
+ install_bin
+ install_config
+
+ echo
+ echo -e "\033[44;32;1mKingHistorian client is updated successfully!${NC}"
+
+ rm -rf $(tar -tf kinghistorian.tar.gz)
+}
+
+function install() {
+ # Start to install
+ if [ ! -e kinghistorian.tar.gz ]; then
+ echo "File kinghistorian.tar.gz does not exist"
+ exit 1
+ fi
+ tar -zxf kinghistorian.tar.gz
+
+ echo -e "${GREEN}Start to install KingHistorian client...${NC}"
+
+ install_main_path
+ install_log
+ install_header
+ install_lib
+ if [ "$pagMode" != "lite" ]; then
+ install_connector
+ fi
+ install_examples
+ install_bin
+ install_config
+
+ echo
+ echo -e "\033[44;32;1mKingHistorian client is installed successfully!${NC}"
+
+ rm -rf $(tar -tf kinghistorian.tar.gz)
+}
+
+
+## ==============================Main program starts from here============================
+# Install or updata client and client
+# if server is already install, don't install client
+ if [ -e ${bin_dir}/khserver ]; then
+ echo -e "\033[44;32;1mThere are already installed KingHistorian server, so don't need install client!${NC}"
+ exit 0
+ fi
+
+ if [ -x ${bin_dir}/khclient ]; then
+ update_flag=1
+ update
+ else
+ install
+ fi
diff --git a/packaging/tools/install_client_power.sh b/packaging/tools/install_client_power.sh
index 31da0d61319045800fe3a454d071118aa3a4768e..ecd22f3de19ee639e1e081fb8330b010f6b7227c 100755
--- a/packaging/tools/install_client_power.sh
+++ b/packaging/tools/install_client_power.sh
@@ -193,16 +193,14 @@ function install_jemalloc() {
}
function install_config() {
- #${csudo} rm -f ${install_main_dir}/cfg/taos.cfg || :
-
- if [ ! -f ${cfg_install_dir}/taos.cfg ]; then
+ if [ ! -f ${cfg_install_dir}/power.cfg ]; then
${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/power.cfg ] && ${csudo} cp ${script_dir}/cfg/power.cfg ${cfg_install_dir}
${csudo} chmod 644 ${cfg_install_dir}/*
fi
- ${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} cp -f ${script_dir}/cfg/power.cfg ${install_main_dir}/cfg/power.cfg.org
+ ${csudo} ln -s ${cfg_install_dir}/power.cfg ${install_main_dir}/cfg
}
diff --git a/packaging/tools/install_client_pro.sh b/packaging/tools/install_client_pro.sh
index fff8ae31200669ee3ab918a873e33fc32ece37c8..425d39b6be4a5e5340bde225433ce9125ceeecd0 100755
--- a/packaging/tools/install_client_pro.sh
+++ b/packaging/tools/install_client_pro.sh
@@ -109,7 +109,6 @@ function install_lib() {
# Remove links
${csudo} rm -f ${lib_link_dir}/libtaos.* || :
${csudo} rm -f ${lib64_link_dir}/libtaos.* || :
- #${csudo} rm -rf ${v15_java_app_dir} || :
${csudo} cp -rf ${script_dir}/driver/* ${install_main_dir}/driver && ${csudo} chmod 777 ${install_main_dir}/driver/*
@@ -137,16 +136,14 @@ function install_header() {
}
function install_config() {
- #${csudo} rm -f ${install_main_dir}/cfg/taos.cfg || :
-
- if [ ! -f ${cfg_install_dir}/taos.cfg ]; then
+ if [ ! -f ${cfg_install_dir}/prodb.cfg ]; then
${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/prodb.cfg ] && ${csudo} cp ${script_dir}/cfg/prodb.cfg ${cfg_install_dir}
${csudo} chmod 644 ${cfg_install_dir}/*
fi
- ${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} cp -f ${script_dir}/cfg/prodb.cfg ${install_main_dir}/cfg/prodb.cfg.org
+ ${csudo} ln -s ${cfg_install_dir}/prodb.cfg ${install_main_dir}/cfg
}
@@ -235,14 +232,14 @@ function install_prodb() {
## ==============================Main program starts from here============================
# Install or updata client and client
# if server is already install, don't install client
- if [ -e ${bin_dir}/prodbs ]; then
- echo -e "\033[44;32;1mThere are already installed ProDB server, so don't need install client!${NC}"
- exit 0
- fi
+if [ -e ${bin_dir}/prodbs ]; then
+ echo -e "\033[44;32;1mThere are already installed ProDB server, so don't need install client!${NC}"
+ exit 0
+fi
- if [ -x ${bin_dir}/prodbc ]; then
- update_flag=1
- update_prodb
- else
- install_prodb
- fi
+if [ -x ${bin_dir}/prodbc ]; then
+ update_flag=1
+ update_prodb
+else
+ install_prodb
+fi
diff --git a/packaging/tools/install_client_tq.sh b/packaging/tools/install_client_tq.sh
index 2537442ee264e9aeb4eb6b3d25a17faf60f4df9a..059e79949bb7f3296977aee011e9670c14087f5c 100755
--- a/packaging/tools/install_client_tq.sh
+++ b/packaging/tools/install_client_tq.sh
@@ -140,16 +140,14 @@ function install_header() {
}
function install_config() {
- #${csudo} rm -f ${install_main_dir}/cfg/taos.cfg || :
-
- if [ ! -f ${cfg_install_dir}/taos.cfg ]; then
+ if [ ! -f ${cfg_install_dir}/tq.cfg ]; then
${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/tq.cfg ] && ${csudo} cp ${script_dir}/cfg/tq.cfg ${cfg_install_dir}
${csudo} chmod 644 ${cfg_install_dir}/*
fi
- ${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} cp -f ${script_dir}/cfg/tq.cfg ${install_main_dir}/cfg/tq.cfg.org
+ ${csudo} ln -s ${cfg_install_dir}/tq.cfg ${install_main_dir}/cfg
}
diff --git a/packaging/tools/install_jh.sh b/packaging/tools/install_jh.sh
new file mode 100755
index 0000000000000000000000000000000000000000..867c5c93b647b788f5ef48c8ea3e6172747cacab
--- /dev/null
+++ b/packaging/tools/install_jh.sh
@@ -0,0 +1,948 @@
+#!/bin/bash
+#
+# This file is used to install database on linux systems. The operating system
+# is required to use systemd to manage services at boot
+
+set -e
+#set -x
+
+verMode=edge
+pagMode=full
+
+iplist=""
+serverFqdn=""
+# -----------------------Variables definition---------------------
+script_dir=$(dirname $(readlink -f "$0"))
+# Dynamic directory
+data_dir="/var/lib/jh_taos"
+log_dir="/var/log/jh_taos"
+
+data_link_dir="/usr/local/jh_taos/data"
+log_link_dir="/usr/local/jh_taos/log"
+
+cfg_install_dir="/etc/jh_taos"
+
+bin_link_dir="/usr/bin"
+lib_link_dir="/usr/lib"
+lib64_link_dir="/usr/lib64"
+inc_link_dir="/usr/include"
+
+#install main path
+install_main_dir="/usr/local/jh_taos"
+
+# old bin dir
+bin_dir="/usr/local/jh_taos/bin"
+
+service_config_dir="/etc/systemd/system"
+nginx_port=6060
+nginx_dir="/usr/local/nginxd"
+
+# Color setting
+RED='\033[0;31m'
+GREEN='\033[1;32m'
+GREEN_DARK='\033[0;32m'
+GREEN_UNDERLINE='\033[4;32m'
+NC='\033[0m'
+
+csudo=""
+if command -v sudo > /dev/null; then
+ csudo="sudo"
+fi
+
+update_flag=0
+
+initd_mod=0
+service_mod=2
+if pidof systemd &> /dev/null; then
+ service_mod=0
+elif $(which service &> /dev/null); then
+ service_mod=1
+ service_config_dir="/etc/init.d"
+ if $(which chkconfig &> /dev/null); then
+ initd_mod=1
+ elif $(which insserv &> /dev/null); then
+ initd_mod=2
+ elif $(which update-rc.d &> /dev/null); then
+ initd_mod=3
+ else
+ service_mod=2
+ fi
+else
+ service_mod=2
+fi
+
+
+# get the operating system type for using the corresponding init file
+# ubuntu/debian(deb), centos/fedora(rpm), others: opensuse, redhat, ..., no verification
+#osinfo=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
+if [[ -e /etc/os-release ]]; then
+ osinfo=$(cat /etc/os-release | grep "NAME" | cut -d '"' -f2) ||:
+else
+ osinfo=""
+fi
+#echo "osinfo: ${osinfo}"
+os_type=0
+if echo $osinfo | grep -qwi "ubuntu" ; then
+# echo "This is ubuntu system"
+ os_type=1
+elif echo $osinfo | grep -qwi "debian" ; then
+# echo "This is debian system"
+ os_type=1
+elif echo $osinfo | grep -qwi "Kylin" ; then
+# echo "This is Kylin system"
+ os_type=1
+elif echo $osinfo | grep -qwi "centos" ; then
+# echo "This is centos system"
+ os_type=2
+elif echo $osinfo | grep -qwi "fedora" ; then
+# echo "This is fedora system"
+ os_type=2
+else
+ echo " osinfo: ${osinfo}"
+ echo " This is an officially unverified linux system,"
+ echo " if there are any problems with the installation and operation, "
+ echo " please feel free to contact jhict.com for support."
+ os_type=1
+fi
+
+
+# ============================= get input parameters =================================================
+
+# install.sh -v [server | client] -e [yes | no] -i [systemd | service | ...]
+
+# set parameters by default value
+interactiveFqdn=yes # [yes | no]
+verType=server # [server | client]
+initType=systemd # [systemd | service | ...]
+
+while getopts "hv:e:i:" arg
+do
+ case $arg in
+ e)
+ #echo "interactiveFqdn=$OPTARG"
+ interactiveFqdn=$( echo $OPTARG )
+ ;;
+ v)
+ #echo "verType=$OPTARG"
+ verType=$(echo $OPTARG)
+ ;;
+ i)
+ #echo "initType=$OPTARG"
+ initType=$(echo $OPTARG)
+ ;;
+ h)
+ echo "Usage: `basename $0` -v [server | client] -e [yes | no]"
+ exit 0
+ ;;
+ ?) #unknow option
+ echo "unkonw argument"
+ exit 1
+ ;;
+ esac
+done
+
+function kill_process() {
+ pid=$(ps -ef | grep "$1" | grep -v "grep" | awk '{print $2}')
+ if [ -n "$pid" ]; then
+ ${csudo} kill -9 $pid || :
+ fi
+}
+
+function install_main_path() {
+ #create install main dir and all sub dir
+ ${csudo} rm -rf ${install_main_dir} || :
+ ${csudo} mkdir -p ${install_main_dir}
+ ${csudo} mkdir -p ${install_main_dir}/cfg
+ ${csudo} mkdir -p ${install_main_dir}/bin
+# ${csudo} mkdir -p ${install_main_dir}/connector
+ ${csudo} mkdir -p ${install_main_dir}/driver
+# ${csudo} mkdir -p ${install_main_dir}/examples
+ ${csudo} mkdir -p ${install_main_dir}/include
+ ${csudo} mkdir -p ${install_main_dir}/init.d
+ if [ "$verMode" == "cluster" ]; then
+ ${csudo} mkdir -p ${nginx_dir}
+ fi
+}
+
+function install_bin() {
+ # Remove links
+ ${csudo} rm -f ${bin_link_dir}/jh_taos || :
+ ${csudo} rm -f ${bin_link_dir}/jh_taosd || :
+ ${csudo} rm -f ${bin_link_dir}/jhdemo || :
+ ${csudo} rm -f ${bin_link_dir}/rmjh || :
+ ${csudo} rm -f ${bin_link_dir}/tarbitrator || :
+ ${csudo} rm -f ${bin_link_dir}/set_core || :
+
+ ${csudo} cp -r ${script_dir}/bin/* ${install_main_dir}/bin && ${csudo} chmod 0555 ${install_main_dir}/bin/*
+
+ #Make link
+ [ -x ${install_main_dir}/bin/jh_taos ] && ${csudo} ln -s ${install_main_dir}/bin/jh_taos ${bin_link_dir}/jh_taos || :
+ [ -x ${install_main_dir}/bin/jh_taosd ] && ${csudo} ln -s ${install_main_dir}/bin/jh_taosd ${bin_link_dir}/jh_taosd || :
+ [ -x ${install_main_dir}/bin/jhdemo ] && ${csudo} ln -s ${install_main_dir}/bin/jhdemo ${bin_link_dir}/jhdemo || :
+ [ -x ${install_main_dir}/bin/remove_jh.sh ] && ${csudo} ln -s ${install_main_dir}/bin/remove_jh.sh ${bin_link_dir}/rmjh || :
+ [ -x ${install_main_dir}/bin/set_core.sh ] && ${csudo} ln -s ${install_main_dir}/bin/set_core.sh ${bin_link_dir}/set_core || :
+ [ -x ${install_main_dir}/bin/tarbitrator ] && ${csudo} ln -s ${install_main_dir}/bin/tarbitrator ${bin_link_dir}/tarbitrator || :
+
+ if [ "$verMode" == "cluster" ]; then
+ ${csudo} cp -r ${script_dir}/nginxd/* ${nginx_dir} && ${csudo} chmod 0555 ${nginx_dir}/*
+ ${csudo} mkdir -p ${nginx_dir}/logs
+ ${csudo} chmod 777 ${nginx_dir}/sbin/nginx
+ fi
+}
+
+function install_lib() {
+ # Remove links
+ ${csudo} rm -f ${lib_link_dir}/libtaos.* || :
+ ${csudo} rm -f ${lib64_link_dir}/libtaos.* || :
+ ${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 ${lib_link_dir}/libtaos.so.1 ${lib_link_dir}/libtaos.so
+
+ 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 ${lib64_link_dir}/libtaos.so.1 ${lib64_link_dir}/libtaos.so || :
+ fi
+
+ if [ "$osType" != "Darwin" ]; then
+ ${csudo} ldconfig
+ else
+ ${csudo} update_dyld_shared_cache
+ fi
+}
+
+function install_header() {
+ ${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} 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
+}
+
+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
+
+ if [ -d /etc/ld.so.conf.d ]; then
+ ${csudo} echo "/usr/local/lib" > /etc/ld.so.conf.d/jemalloc.conf
+ ${csudo} ldconfig
+ else
+ echo "/etc/ld.so.conf.d not found!"
+ fi
+ fi
+}
+
+function add_newHostname_to_hosts() {
+ localIp="127.0.0.1"
+ OLD_IFS="$IFS"
+ IFS=" "
+ iphost=$(cat /etc/hosts | grep $1 | awk '{print $1}')
+ arr=($iphost)
+ IFS="$OLD_IFS"
+ for s in ${arr[@]}
+ do
+ if [[ "$s" == "$localIp" ]]; then
+ return
+ fi
+ done
+ ${csudo} echo "127.0.0.1 $1" >> /etc/hosts ||:
+}
+
+function set_hostname() {
+ echo -e -n "${GREEN}Please enter one hostname(must not be 'localhost')${NC}:"
+ read newHostname
+ while true; do
+ if [[ ! -z "$newHostname" && "$newHostname" != "localhost" ]]; then
+ break
+ else
+ read -p "Please enter one hostname(must not be 'localhost'):" newHostname
+ fi
+ done
+
+ ${csudo} hostname $newHostname ||:
+ retval=`echo $?`
+ if [[ $retval != 0 ]]; then
+ echo
+ echo "set hostname fail!"
+ return
+ fi
+
+ #ubuntu/centos /etc/hostname
+ if [[ -e /etc/hostname ]]; then
+ ${csudo} echo $newHostname > /etc/hostname ||:
+ fi
+
+ #debian: #HOSTNAME=yourname
+ if [[ -e /etc/sysconfig/network ]]; then
+ ${csudo} sed -i -r "s/#*\s*(HOSTNAME=\s*).*/\1$newHostname/" /etc/sysconfig/network ||:
+ fi
+
+ ${csudo} sed -i -r "s/#*\s*(fqdn\s*).*/\1$newHostname/" ${cfg_install_dir}/taos.cfg
+ serverFqdn=$newHostname
+
+ if [[ -e /etc/hosts ]]; then
+ add_newHostname_to_hosts $newHostname
+ fi
+}
+
+function is_correct_ipaddr() {
+ newIp=$1
+ OLD_IFS="$IFS"
+ IFS=" "
+ arr=($iplist)
+ IFS="$OLD_IFS"
+ for s in ${arr[@]}
+ do
+ if [[ "$s" == "$newIp" ]]; then
+ return 0
+ fi
+ done
+
+ return 1
+}
+
+function set_ipAsFqdn() {
+ iplist=$(ip address |grep inet |grep -v inet6 |grep -v 127.0.0.1 |awk '{print $2}' |awk -F "/" '{print $1}') ||:
+ if [ -z "$iplist" ]; then
+ iplist=$(ifconfig |grep inet |grep -v inet6 |grep -v 127.0.0.1 |awk '{print $2}' |awk -F ":" '{print $2}') ||:
+ fi
+
+ if [ -z "$iplist" ]; then
+ echo
+ echo -e -n "${GREEN}Unable to get local ip, use 127.0.0.1${NC}"
+ localFqdn="127.0.0.1"
+ # Write the local FQDN to configuration file
+ ${csudo} sed -i -r "s/#*\s*(fqdn\s*).*/\1$localFqdn/" ${cfg_install_dir}/taos.cfg
+ serverFqdn=$localFqdn
+ echo
+ return
+ fi
+
+ echo -e -n "${GREEN}Please choose an IP from local IP list${NC}:"
+ echo
+ echo -e -n "${GREEN}$iplist${NC}"
+ echo
+ echo
+ 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
+ while true; do
+ if [ ! -z "$localFqdn" ]; then
+ # Check if correct ip address
+ is_correct_ipaddr $localFqdn
+ retval=`echo $?`
+ if [[ $retval != 0 ]]; then
+ read -p "Please choose an IP from local IP list:" localFqdn
+ else
+ # Write the local FQDN to configuration file
+ ${csudo} sed -i -r "s/#*\s*(fqdn\s*).*/\1$localFqdn/" ${cfg_install_dir}/taos.cfg
+ serverFqdn=$localFqdn
+ break
+ fi
+ else
+ read -p "Please choose an IP from local IP list:" localFqdn
+ fi
+ done
+}
+
+function local_fqdn_check() {
+ #serverFqdn=$(hostname)
+ echo
+ echo -e -n "System hostname is: ${GREEN}$serverFqdn${NC}"
+ echo
+ if [[ "$serverFqdn" == "" ]] || [[ "$serverFqdn" == "localhost" ]]; then
+ echo -e -n "${GREEN}It is strongly recommended to configure a hostname for this machine ${NC}"
+ echo
+
+ while true
+ do
+ read -r -p "Set hostname now? [Y/n] " input
+ if [ ! -n "$input" ]; then
+ set_hostname
+ break
+ else
+ case $input in
+ [yY][eE][sS]|[yY])
+ set_hostname
+ break
+ ;;
+
+ [nN][oO]|[nN])
+ set_ipAsFqdn
+ break
+ ;;
+
+ *)
+ echo "Invalid input..."
+ ;;
+ esac
+ fi
+ done
+ fi
+}
+
+function install_config() {
+ if [ ! -f ${cfg_install_dir}/taos.cfg ]; then
+ ${csudo} mkdir -p ${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}/*
+ fi
+
+ ${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
+
+ [ ! -z $1 ] && return 0 || : # only install client
+
+ if ((${update_flag}==1)); then
+ return 0
+ fi
+
+ if [ "$interactiveFqdn" == "no" ]; then
+ return 0
+ fi
+
+ local_fqdn_check
+
+ #FQDN_FORMAT="(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
+ #FQDN_FORMAT="(:[1-6][0-9][0-9][0-9][0-9]$)"
+ #PORT_FORMAT="(/[1-6][0-9][0-9][0-9][0-9]?/)"
+ #FQDN_PATTERN=":[0-9]{1,5}$"
+
+ # first full-qualified domain name (FQDN) for jh_iot cluster system
+ echo
+ echo -e -n "${GREEN}Enter FQDN:port (like h1.jhict.com:6030) of an existing jh_iot cluster node to join${NC}"
+ echo
+ echo -e -n "${GREEN}OR leave it blank to build one${NC}:"
+ read firstEp
+ while true; do
+ if [ ! -z "$firstEp" ]; then
+ # check the format of the firstEp
+ #if [[ $firstEp == $FQDN_PATTERN ]]; then
+ # Write the first FQDN to configuration file
+ ${csudo} sed -i -r "s/#*\s*(firstEp\s*).*/\1$firstEp/" ${cfg_install_dir}/taos.cfg
+ break
+ #else
+ # read -p "Please enter the correct FQDN:port: " firstEp
+ #fi
+ else
+ break
+ fi
+ done
+}
+
+
+function install_log() {
+ ${csudo} rm -rf ${log_dir} || :
+ ${csudo} mkdir -p ${log_dir} && ${csudo} chmod 777 ${log_dir}
+
+ ${csudo} ln -s ${log_dir} ${install_main_dir}/log
+}
+
+function install_data() {
+ ${csudo} mkdir -p ${data_dir}
+
+ ${csudo} ln -s ${data_dir} ${install_main_dir}/data
+}
+
+function install_connector() {
+ ${csudo} cp -rf ${script_dir}/connector/* ${install_main_dir}/connector
+}
+
+function install_examples() {
+ if [ -d ${script_dir}/examples ]; then
+ ${csudo} cp -rf ${script_dir}/examples/* ${install_main_dir}/examples
+ fi
+}
+
+function clean_service_on_sysvinit() {
+ if pidof jh_taosd &> /dev/null; then
+ ${csudo} service jh_taosd stop || :
+ fi
+
+ if pidof tarbitrator &> /dev/null; then
+ ${csudo} service tarbitratord stop || :
+ fi
+
+ if ((${initd_mod}==1)); then
+ if [ -e ${service_config_dir}/jh_taosd ]; then
+ ${csudo} chkconfig --del jh_taosd || :
+ fi
+
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} chkconfig --del tarbitratord || :
+ fi
+ elif ((${initd_mod}==2)); then
+ if [ -e ${service_config_dir}/jh_taosd ]; then
+ ${csudo} insserv -r jh_taosd || :
+ fi
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} insserv -r tarbitratord || :
+ fi
+ elif ((${initd_mod}==3)); then
+ if [ -e ${service_config_dir}/jh_taosd ]; then
+ ${csudo} update-rc.d -f jh_taosd remove || :
+ fi
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} update-rc.d -f tarbitratord remove || :
+ fi
+ fi
+
+ ${csudo} rm -f ${service_config_dir}/jh_taosd || :
+ ${csudo} rm -f ${service_config_dir}/tarbitratord || :
+
+ if $(which init &> /dev/null); then
+ ${csudo} init q || :
+ fi
+}
+
+function install_service_on_sysvinit() {
+ clean_service_on_sysvinit
+ sleep 1
+
+ # Install jh_taosd service
+
+ if ((${os_type}==1)); then
+ ${csudo} cp -f ${script_dir}/init.d/jh_taosd.deb ${install_main_dir}/init.d/jh_taosd
+ ${csudo} cp ${script_dir}/init.d/jh_taosd.deb ${service_config_dir}/jh_taosd && ${csudo} chmod a+x ${service_config_dir}/jh_taosd
+ ${csudo} cp -f ${script_dir}/init.d/tarbitratord.deb ${install_main_dir}/init.d/tarbitratord
+ ${csudo} cp ${script_dir}/init.d/tarbitratord.deb ${service_config_dir}/tarbitratord && ${csudo} chmod a+x ${service_config_dir}/tarbitratord
+ elif ((${os_type}==2)); then
+ ${csudo} cp -f ${script_dir}/init.d/jh_taosd.rpm ${install_main_dir}/init.d/jh_taosd
+ ${csudo} cp ${script_dir}/init.d/jh_taosd.rpm ${service_config_dir}/jh_taosd && ${csudo} chmod a+x ${service_config_dir}/jh_taosd
+ ${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
+ fi
+
+ if ((${initd_mod}==1)); then
+ ${csudo} chkconfig --add jh_taosd || :
+ ${csudo} chkconfig --level 2345 jh_taosd on || :
+ ${csudo} chkconfig --add tarbitratord || :
+ ${csudo} chkconfig --level 2345 tarbitratord on || :
+ elif ((${initd_mod}==2)); then
+ ${csudo} insserv jh_taosd || :
+ ${csudo} insserv -d jh_taosd || :
+ ${csudo} insserv tarbitratord || :
+ ${csudo} insserv -d tarbitratord || :
+ elif ((${initd_mod}==3)); then
+ ${csudo} update-rc.d jh_taosd defaults || :
+ ${csudo} update-rc.d tarbitratord defaults || :
+ fi
+}
+
+function clean_service_on_systemd() {
+ jh_taosd_service_config="${service_config_dir}/jh_taosd.service"
+ if systemctl is-active --quiet jh_taosd; then
+ echo "jh_iot is running, stopping it..."
+ ${csudo} systemctl stop jh_taosd &> /dev/null || echo &> /dev/null
+ fi
+ ${csudo} systemctl disable jh_taosd &> /dev/null || echo &> /dev/null
+ ${csudo} rm -f ${jh_taosd_service_config}
+
+ tarbitratord_service_config="${service_config_dir}/tarbitratord.service"
+ if systemctl is-active --quiet tarbitratord; then
+ echo "tarbitrator is running, stopping it..."
+ ${csudo} systemctl stop tarbitratord &> /dev/null || echo &> /dev/null
+ fi
+ ${csudo} systemctl disable tarbitratord &> /dev/null || echo &> /dev/null
+ ${csudo} rm -f ${tarbitratord_service_config}
+
+ if [ "$verMode" == "cluster" ]; then
+ nginx_service_config="${service_config_dir}/nginxd.service"
+ if systemctl is-active --quiet nginxd; then
+ echo "Nginx for jh_iot is running, stopping it..."
+ ${csudo} systemctl stop nginxd &> /dev/null || echo &> /dev/null
+ fi
+ ${csudo} systemctl disable nginxd &> /dev/null || echo &> /dev/null
+ ${csudo} rm -f ${nginx_service_config}
+ fi
+}
+
+function install_service_on_systemd() {
+ clean_service_on_systemd
+
+ service_config="${service_config_dir}/jh_taosd.service"
+ ${csudo} bash -c "echo '[Unit]' >> ${service_config}"
+ ${csudo} bash -c "echo 'Description=jh_iot server service' >> ${service_config}"
+ ${csudo} bash -c "echo 'After=network-online.target' >> ${service_config}"
+ ${csudo} bash -c "echo 'Wants=network-online.target' >> ${service_config}"
+ ${csudo} bash -c "echo >> ${service_config}"
+ ${csudo} bash -c "echo '[Service]' >> ${service_config}"
+ ${csudo} bash -c "echo 'Type=simple' >> ${service_config}"
+ ${csudo} bash -c "echo 'ExecStart=/usr/bin/jh_taosd' >> ${service_config}"
+ ${csudo} bash -c "echo 'ExecStartPre=/usr/local/jh_taos/bin/startPre.sh' >> ${service_config}"
+ ${csudo} bash -c "echo 'TimeoutStopSec=1000000s' >> ${service_config}"
+ ${csudo} bash -c "echo 'LimitNOFILE=infinity' >> ${service_config}"
+ ${csudo} bash -c "echo 'LimitNPROC=infinity' >> ${service_config}"
+ ${csudo} bash -c "echo 'LimitCORE=infinity' >> ${service_config}"
+ ${csudo} bash -c "echo 'TimeoutStartSec=0' >> ${service_config}"
+ ${csudo} bash -c "echo 'StandardOutput=null' >> ${service_config}"
+ ${csudo} bash -c "echo 'Restart=always' >> ${service_config}"
+ ${csudo} bash -c "echo 'StartLimitBurst=3' >> ${service_config}"
+ ${csudo} bash -c "echo 'StartLimitInterval=60s' >> ${service_config}"
+ ${csudo} bash -c "echo >> ${service_config}"
+ ${csudo} bash -c "echo '[Install]' >> ${service_config}"
+ ${csudo} bash -c "echo 'WantedBy=multi-user.target' >> ${service_config}"
+ ${csudo} systemctl enable jh_taosd
+
+ tarbitratord_service_config="${service_config_dir}/tarbitratord.service"
+ ${csudo} bash -c "echo '[Unit]' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'Description=jh_iot arbitrator service' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'After=network-online.target' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'Wants=network-online.target' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo '[Service]' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'Type=simple' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'ExecStart=/usr/bin/tarbitrator' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'TimeoutStopSec=1000000s' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'LimitNOFILE=infinity' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'LimitNPROC=infinity' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'LimitCORE=infinity' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'TimeoutStartSec=0' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'StandardOutput=null' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'Restart=always' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'StartLimitBurst=3' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'StartLimitInterval=60s' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo '[Install]' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'WantedBy=multi-user.target' >> ${tarbitratord_service_config}"
+ #${csudo} systemctl enable tarbitratord
+
+ if [ "$verMode" == "cluster" ]; then
+ nginx_service_config="${service_config_dir}/nginxd.service"
+ ${csudo} bash -c "echo '[Unit]' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'Description=Nginx For jh_iot Service' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'After=network-online.target' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'Wants=network-online.target' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo >> ${nginx_service_config}"
+ ${csudo} bash -c "echo '[Service]' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'Type=forking' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'PIDFile=/usr/local/nginxd/logs/nginx.pid' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'ExecStart=/usr/local/nginxd/sbin/nginx' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'ExecStop=/usr/local/nginxd/sbin/nginx -s stop' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'TimeoutStopSec=1000000s' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'LimitNOFILE=infinity' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'LimitNPROC=infinity' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'LimitCORE=infinity' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'TimeoutStartSec=0' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'StandardOutput=null' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'Restart=always' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'StartLimitBurst=3' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'StartLimitInterval=60s' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo >> ${nginx_service_config}"
+ ${csudo} bash -c "echo '[Install]' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'WantedBy=multi-user.target' >> ${nginx_service_config}"
+ if ! ${csudo} systemctl enable nginxd &> /dev/null; then
+ ${csudo} systemctl daemon-reexec
+ ${csudo} systemctl enable nginxd
+ fi
+ ${csudo} systemctl start nginxd
+ fi
+}
+
+function install_service() {
+ if ((${service_mod}==0)); then
+ install_service_on_systemd
+ elif ((${service_mod}==1)); then
+ install_service_on_sysvinit
+ else
+ # must manual stop jh_taosd
+ kill_process jh_taosd
+ fi
+}
+
+vercomp () {
+ if [[ $1 == $2 ]]; then
+ return 0
+ fi
+ local IFS=.
+ local i ver1=($1) ver2=($2)
+ # fill empty fields in ver1 with zeros
+ for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)); do
+ ver1[i]=0
+ done
+
+ for ((i=0; i<${#ver1[@]}; i++)); do
+ if [[ -z ${ver2[i]} ]]
+ then
+ # fill empty fields in ver2 with zeros
+ ver2[i]=0
+ fi
+ if ((10#${ver1[i]} > 10#${ver2[i]}))
+ then
+ return 1
+ fi
+ if ((10#${ver1[i]} < 10#${ver2[i]}))
+ then
+ return 2
+ fi
+ done
+ return 0
+}
+
+function is_version_compatible() {
+ curr_version=`ls ${script_dir}/driver/libtaos.so* |cut -d '.' -f 3-6`
+
+ if [ -f ${script_dir}/driver/vercomp.txt ]; then
+ min_compatible_version=`cat ${script_dir}/driver/vercomp.txt`
+ else
+ min_compatible_version=$(${script_dir}/bin/jh_taosd -V | head -1 | cut -d ' ' -f 5)
+ fi
+
+ vercomp $curr_version $min_compatible_version
+ case $? in
+ 0) return 0;;
+ 1) return 0;;
+ 2) return 1;;
+ esac
+}
+
+function update() {
+ # Start to update
+ if [ ! -e jh_taos.tar.gz ]; then
+ echo "File jh_taos.tar.gz does not exist"
+ exit 1
+ fi
+ tar -zxf jh_taos.tar.gz
+ install_jemalloc
+
+ # Check if version compatible
+ if ! is_version_compatible; then
+ echo -e "${RED}Version incompatible${NC}"
+ return 1
+ fi
+
+ echo -e "${GREEN}Start to update jh_iot...${NC}"
+ # Stop the service if running
+ if pidof jh_taosd &> /dev/null; then
+ if ((${service_mod}==0)); then
+ ${csudo} systemctl stop jh_taosd || :
+ elif ((${service_mod}==1)); then
+ ${csudo} service jh_taosd stop || :
+ else
+ kill_process jh_taosd
+ fi
+ sleep 1
+ fi
+ if [ "$verMode" == "cluster" ]; then
+ if pidof nginx &> /dev/null; then
+ if ((${service_mod}==0)); then
+ ${csudo} systemctl stop nginxd || :
+ elif ((${service_mod}==1)); then
+ ${csudo} service nginxd stop || :
+ else
+ kill_process nginx
+ fi
+ sleep 1
+ fi
+ fi
+
+ install_main_path
+
+ install_log
+ install_header
+ install_lib
+# if [ "$pagMode" != "lite" ]; then
+# install_connector
+# fi
+# install_examples
+ if [ -z $1 ]; then
+ install_bin
+ install_service
+ install_config
+
+ openresty_work=false
+ if [ "$verMode" == "cluster" ]; then
+ # Check if openresty is installed
+ # Check if nginx is installed successfully
+ if type curl &> /dev/null; then
+ if curl -sSf http://127.0.0.1:${nginx_port} &> /dev/null; then
+ echo -e "\033[44;32;1mNginx for jh_iot is updated successfully!${NC}"
+ openresty_work=true
+ else
+ echo -e "\033[44;31;5mNginx for jh_iot does not work! Please try again!\033[0m"
+ fi
+ fi
+ fi
+
+ #echo
+ #echo -e "\033[44;32;1mjh_iot is updated successfully!${NC}"
+ echo
+ echo -e "${GREEN_DARK}To configure jh_iot ${NC}: edit /etc/jh_taos/taos.cfg"
+ if ((${service_mod}==0)); then
+ echo -e "${GREEN_DARK}To start jh_iot ${NC}: ${csudo} systemctl start jh_taosd${NC}"
+ elif ((${service_mod}==1)); then
+ echo -e "${GREEN_DARK}To start jh_iot ${NC}: ${csudo} service jh_taosd start${NC}"
+ else
+ echo -e "${GREEN_DARK}To start jh_iot ${NC}: ./jh_taosd${NC}"
+ fi
+
+ if [ ${openresty_work} = 'true' ]; then
+ echo -e "${GREEN_DARK}To access jh_iot ${NC}: use ${GREEN_UNDERLINE}jh_taos -h $serverFqdn${NC} in shell OR from ${GREEN_UNDERLINE}http://127.0.0.1:${nginx_port}${NC}"
+ else
+ echo -e "${GREEN_DARK}To access jh_iot ${NC}: use ${GREEN_UNDERLINE}jh_taos -h $serverFqdn${NC} in shell${NC}"
+ fi
+
+ echo
+ echo -e "\033[44;32;1mjh_iot is updated successfully!${NC}"
+ else
+ install_bin
+ install_config
+
+ echo
+ echo -e "\033[44;32;1mjh_iot client is updated successfully!${NC}"
+ fi
+
+ rm -rf $(tar -tf jh_taos.tar.gz)
+}
+
+function install() {
+ # Start to install
+ if [ ! -e jh_taos.tar.gz ]; then
+ echo "File jh_taos.tar.gz does not exist"
+ exit 1
+ fi
+ tar -zxf jh_taos.tar.gz
+
+ echo -e "${GREEN}Start to install jh_iot...${NC}"
+
+ install_main_path
+
+ if [ -z $1 ]; then
+ install_data
+ fi
+
+ install_log
+ install_header
+ install_lib
+ install_jemalloc
+# if [ "$pagMode" != "lite" ]; then
+# install_connector
+# fi
+# install_examples
+
+ if [ -z $1 ]; then # install service and client
+ # For installing new
+ install_bin
+ install_service
+
+ openresty_work=false
+ if [ "$verMode" == "cluster" ]; then
+ # Check if nginx is installed successfully
+ if type curl &> /dev/null; then
+ if curl -sSf http://127.0.0.1:${nginx_port} &> /dev/null; then
+ echo -e "\033[44;32;1mNginx for jh_iot is installed successfully!${NC}"
+ openresty_work=true
+ else
+ echo -e "\033[44;31;5mNginx for jh_iot does not work! Please try again!\033[0m"
+ fi
+ fi
+ fi
+
+ install_config
+
+ # Ask if to start the service
+ #echo
+ #echo -e "\033[44;32;1mjh_iot is installed successfully!${NC}"
+ echo
+ echo -e "${GREEN_DARK}To configure jh_iot ${NC}: edit /etc/jh_taos/taos.cfg"
+ if ((${service_mod}==0)); then
+ echo -e "${GREEN_DARK}To start jh_iot ${NC}: ${csudo} systemctl start jh_taosd${NC}"
+ elif ((${service_mod}==1)); then
+ echo -e "${GREEN_DARK}To start jh_iot ${NC}: ${csudo} service jh_taosd start${NC}"
+ else
+ echo -e "${GREEN_DARK}To start jh_iot ${NC}: jh_taosd${NC}"
+ fi
+
+ if [ ! -z "$firstEp" ]; then
+ tmpFqdn=${firstEp%%:*}
+ substr=":"
+ if [[ $firstEp =~ $substr ]];then
+ tmpPort=${firstEp#*:}
+ else
+ tmpPort=""
+ fi
+ if [[ "$tmpPort" != "" ]];then
+ echo -e "${GREEN_DARK}To access jh_iot ${NC}: jh_taos -h $tmpFqdn -P $tmpPort${GREEN_DARK} to login into cluster, then${NC}"
+ else
+ echo -e "${GREEN_DARK}To access jh_iot ${NC}: jh_taos -h $tmpFqdn${GREEN_DARK} to login into cluster, then${NC}"
+ fi
+ echo -e "${GREEN_DARK}execute ${NC}: create dnode 'newDnodeFQDN:port'; ${GREEN_DARK}to add this new node${NC}"
+ echo
+ elif [ ! -z "$serverFqdn" ]; then
+ echo -e "${GREEN_DARK}To access jh_iot ${NC}: jh_taos -h $serverFqdn${GREEN_DARK} to login into jh_iot server${NC}"
+ echo
+ fi
+ echo -e "\033[44;32;1mjh_iot is installed successfully!${NC}"
+ echo
+ else # Only install client
+ install_bin
+ install_config
+
+ echo
+ echo -e "\033[44;32;1mjh_iot client is installed successfully!${NC}"
+ fi
+
+ rm -rf $(tar -tf jh_taos.tar.gz)
+}
+
+
+## ==============================Main program starts from here============================
+serverFqdn=$(hostname)
+if [ "$verType" == "server" ]; then
+ # Install server and client
+ if [ -x ${bin_dir}/jh_taosd ]; then
+ update_flag=1
+ update
+ else
+ install
+ fi
+elif [ "$verType" == "client" ]; then
+ interactiveFqdn=no
+ # Only install client
+ if [ -x ${bin_dir}/jh_taos ]; then
+ update_flag=1
+ update client
+ else
+ install client
+ fi
+else
+ echo "please input correct verType"
+fi
diff --git a/packaging/tools/install_kh.sh b/packaging/tools/install_kh.sh
new file mode 100755
index 0000000000000000000000000000000000000000..44376b065ecd06d5f65a19f1f22da5625bba55de
--- /dev/null
+++ b/packaging/tools/install_kh.sh
@@ -0,0 +1,948 @@
+#!/bin/bash
+#
+# This file is used to install database on linux systems. The operating system
+# is required to use systemd to manage services at boot
+
+set -e
+#set -x
+
+verMode=edge
+pagMode=full
+
+iplist=""
+serverFqdn=""
+# -----------------------Variables definition---------------------
+script_dir=$(dirname $(readlink -f "$0"))
+# Dynamic directory
+data_dir="/var/lib/kinghistorian"
+log_dir="/var/log/kinghistorian"
+
+data_link_dir="/usr/local/kinghistorian/data"
+log_link_dir="/usr/local/kinghistorian/log"
+
+cfg_install_dir="/etc/kinghistorian"
+
+bin_link_dir="/usr/bin"
+lib_link_dir="/usr/lib"
+lib64_link_dir="/usr/lib64"
+inc_link_dir="/usr/include"
+
+#install main path
+install_main_dir="/usr/local/kinghistorian"
+
+# old bin dir
+bin_dir="/usr/local/kinghistorian/bin"
+
+service_config_dir="/etc/systemd/system"
+nginx_port=6060
+nginx_dir="/usr/local/nginxd"
+
+# Color setting
+RED='\033[0;31m'
+GREEN='\033[1;32m'
+GREEN_DARK='\033[0;32m'
+GREEN_UNDERLINE='\033[4;32m'
+NC='\033[0m'
+
+csudo=""
+if command -v sudo > /dev/null; then
+ csudo="sudo"
+fi
+
+update_flag=0
+
+initd_mod=0
+service_mod=2
+if pidof systemd &> /dev/null; then
+ service_mod=0
+elif $(which service &> /dev/null); then
+ service_mod=1
+ service_config_dir="/etc/init.d"
+ if $(which chkconfig &> /dev/null); then
+ initd_mod=1
+ elif $(which insserv &> /dev/null); then
+ initd_mod=2
+ elif $(which update-rc.d &> /dev/null); then
+ initd_mod=3
+ else
+ service_mod=2
+ fi
+else
+ service_mod=2
+fi
+
+
+# get the operating system type for using the corresponding init file
+# ubuntu/debian(deb), centos/fedora(rpm), others: opensuse, redhat, ..., no verification
+#osinfo=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
+if [[ -e /etc/os-release ]]; then
+ osinfo=$(cat /etc/os-release | grep "NAME" | cut -d '"' -f2) ||:
+else
+ osinfo=""
+fi
+#echo "osinfo: ${osinfo}"
+os_type=0
+if echo $osinfo | grep -qwi "ubuntu" ; then
+# echo "This is ubuntu system"
+ os_type=1
+elif echo $osinfo | grep -qwi "debian" ; then
+# echo "This is debian system"
+ os_type=1
+elif echo $osinfo | grep -qwi "Kylin" ; then
+# echo "This is Kylin system"
+ os_type=1
+elif echo $osinfo | grep -qwi "centos" ; then
+# echo "This is centos system"
+ os_type=2
+elif echo $osinfo | grep -qwi "fedora" ; then
+# echo "This is fedora system"
+ os_type=2
+else
+ echo " osinfo: ${osinfo}"
+ echo " This is an officially unverified linux system,"
+ echo " if there are any problems with the installation and operation, "
+ echo " please feel free to contact wellintech.com for support."
+ os_type=1
+fi
+
+
+# ============================= get input parameters =================================================
+
+# install.sh -v [server | client] -e [yes | no] -i [systemd | service | ...]
+
+# set parameters by default value
+interactiveFqdn=yes # [yes | no]
+verType=server # [server | client]
+initType=systemd # [systemd | service | ...]
+
+while getopts "hv:e:i:" arg
+do
+ case $arg in
+ e)
+ #echo "interactiveFqdn=$OPTARG"
+ interactiveFqdn=$( echo $OPTARG )
+ ;;
+ v)
+ #echo "verType=$OPTARG"
+ verType=$(echo $OPTARG)
+ ;;
+ i)
+ #echo "initType=$OPTARG"
+ initType=$(echo $OPTARG)
+ ;;
+ h)
+ echo "Usage: `basename $0` -v [server | client] -e [yes | no]"
+ exit 0
+ ;;
+ ?) #unknow option
+ echo "unkonw argument"
+ exit 1
+ ;;
+ esac
+done
+
+function kill_process() {
+ pid=$(ps -ef | grep "$1" | grep -v "grep" | awk '{print $2}')
+ if [ -n "$pid" ]; then
+ ${csudo} kill -9 $pid || :
+ fi
+}
+
+function install_main_path() {
+ #create install main dir and all sub dir
+ ${csudo} rm -rf ${install_main_dir} || :
+ ${csudo} mkdir -p ${install_main_dir}
+ ${csudo} mkdir -p ${install_main_dir}/cfg
+ ${csudo} mkdir -p ${install_main_dir}/bin
+# ${csudo} mkdir -p ${install_main_dir}/connector
+ ${csudo} mkdir -p ${install_main_dir}/driver
+# ${csudo} mkdir -p ${install_main_dir}/examples
+ ${csudo} mkdir -p ${install_main_dir}/include
+ ${csudo} mkdir -p ${install_main_dir}/init.d
+ if [ "$verMode" == "cluster" ]; then
+ ${csudo} mkdir -p ${nginx_dir}
+ fi
+}
+
+function install_bin() {
+ # Remove links
+ ${csudo} rm -f ${bin_link_dir}/khclient || :
+ ${csudo} rm -f ${bin_link_dir}/khserver || :
+ ${csudo} rm -f ${bin_link_dir}/khdemo || :
+ ${csudo} rm -f ${bin_link_dir}/rmkh || :
+ ${csudo} rm -f ${bin_link_dir}/tarbitrator || :
+ ${csudo} rm -f ${bin_link_dir}/set_core || :
+
+ ${csudo} cp -r ${script_dir}/bin/* ${install_main_dir}/bin && ${csudo} chmod 0555 ${install_main_dir}/bin/*
+
+ #Make link
+ [ -x ${install_main_dir}/bin/khclient ] && ${csudo} ln -s ${install_main_dir}/bin/khclient ${bin_link_dir}/khclient || :
+ [ -x ${install_main_dir}/bin/khserver ] && ${csudo} ln -s ${install_main_dir}/bin/khserver ${bin_link_dir}/khserver || :
+ [ -x ${install_main_dir}/bin/khdemo ] && ${csudo} ln -s ${install_main_dir}/bin/khdemo ${bin_link_dir}/khdemo || :
+ [ -x ${install_main_dir}/bin/remove_kh.sh ] && ${csudo} ln -s ${install_main_dir}/bin/remove_kh.sh ${bin_link_dir}/rmkh || :
+ [ -x ${install_main_dir}/bin/set_core.sh ] && ${csudo} ln -s ${install_main_dir}/bin/set_core.sh ${bin_link_dir}/set_core || :
+ [ -x ${install_main_dir}/bin/tarbitrator ] && ${csudo} ln -s ${install_main_dir}/bin/tarbitrator ${bin_link_dir}/tarbitrator || :
+
+ if [ "$verMode" == "cluster" ]; then
+ ${csudo} cp -r ${script_dir}/nginxd/* ${nginx_dir} && ${csudo} chmod 0555 ${nginx_dir}/*
+ ${csudo} mkdir -p ${nginx_dir}/logs
+ ${csudo} chmod 777 ${nginx_dir}/sbin/nginx
+ fi
+}
+
+function install_lib() {
+ # Remove links
+ ${csudo} rm -f ${lib_link_dir}/libtaos.* || :
+ ${csudo} rm -f ${lib64_link_dir}/libtaos.* || :
+ ${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 ${lib_link_dir}/libtaos.so.1 ${lib_link_dir}/libtaos.so
+
+ 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 ${lib64_link_dir}/libtaos.so.1 ${lib64_link_dir}/libtaos.so || :
+ fi
+
+ if [ "$osType" != "Darwin" ]; then
+ ${csudo} ldconfig
+ else
+ ${csudo} update_dyld_shared_cache
+ fi
+}
+
+function install_header() {
+ ${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} 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
+}
+
+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
+
+ if [ -d /etc/ld.so.conf.d ]; then
+ ${csudo} echo "/usr/local/lib" > /etc/ld.so.conf.d/jemalloc.conf
+ ${csudo} ldconfig
+ else
+ echo "/etc/ld.so.conf.d not found!"
+ fi
+ fi
+}
+
+function add_newHostname_to_hosts() {
+ localIp="127.0.0.1"
+ OLD_IFS="$IFS"
+ IFS=" "
+ iphost=$(cat /etc/hosts | grep $1 | awk '{print $1}')
+ arr=($iphost)
+ IFS="$OLD_IFS"
+ for s in ${arr[@]}
+ do
+ if [[ "$s" == "$localIp" ]]; then
+ return
+ fi
+ done
+ ${csudo} echo "127.0.0.1 $1" >> /etc/hosts ||:
+}
+
+function set_hostname() {
+ echo -e -n "${GREEN}Please enter one hostname(must not be 'localhost')${NC}:"
+ read newHostname
+ while true; do
+ if [[ ! -z "$newHostname" && "$newHostname" != "localhost" ]]; then
+ break
+ else
+ read -p "Please enter one hostname(must not be 'localhost'):" newHostname
+ fi
+ done
+
+ ${csudo} hostname $newHostname ||:
+ retval=`echo $?`
+ if [[ $retval != 0 ]]; then
+ echo
+ echo "set hostname fail!"
+ return
+ fi
+
+ #ubuntu/centos /etc/hostname
+ if [[ -e /etc/hostname ]]; then
+ ${csudo} echo $newHostname > /etc/hostname ||:
+ fi
+
+ #debian: #HOSTNAME=yourname
+ if [[ -e /etc/sysconfig/network ]]; then
+ ${csudo} sed -i -r "s/#*\s*(HOSTNAME=\s*).*/\1$newHostname/" /etc/sysconfig/network ||:
+ fi
+
+ ${csudo} sed -i -r "s/#*\s*(fqdn\s*).*/\1$newHostname/" ${cfg_install_dir}/kinghistorian.cfg
+ serverFqdn=$newHostname
+
+ if [[ -e /etc/hosts ]]; then
+ add_newHostname_to_hosts $newHostname
+ fi
+}
+
+function is_correct_ipaddr() {
+ newIp=$1
+ OLD_IFS="$IFS"
+ IFS=" "
+ arr=($iplist)
+ IFS="$OLD_IFS"
+ for s in ${arr[@]}
+ do
+ if [[ "$s" == "$newIp" ]]; then
+ return 0
+ fi
+ done
+
+ return 1
+}
+
+function set_ipAsFqdn() {
+ iplist=$(ip address |grep inet |grep -v inet6 |grep -v 127.0.0.1 |awk '{print $2}' |awk -F "/" '{print $1}') ||:
+ if [ -z "$iplist" ]; then
+ iplist=$(ifconfig |grep inet |grep -v inet6 |grep -v 127.0.0.1 |awk '{print $2}' |awk -F ":" '{print $2}') ||:
+ fi
+
+ if [ -z "$iplist" ]; then
+ echo
+ echo -e -n "${GREEN}Unable to get local ip, use 127.0.0.1${NC}"
+ localFqdn="127.0.0.1"
+ # Write the local FQDN to configuration file
+ ${csudo} sed -i -r "s/#*\s*(fqdn\s*).*/\1$localFqdn/" ${cfg_install_dir}/kinghistorian.cfg
+ serverFqdn=$localFqdn
+ echo
+ return
+ fi
+
+ echo -e -n "${GREEN}Please choose an IP from local IP list${NC}:"
+ echo
+ echo -e -n "${GREEN}$iplist${NC}"
+ echo
+ echo
+ 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
+ while true; do
+ if [ ! -z "$localFqdn" ]; then
+ # Check if correct ip address
+ is_correct_ipaddr $localFqdn
+ retval=`echo $?`
+ if [[ $retval != 0 ]]; then
+ read -p "Please choose an IP from local IP list:" localFqdn
+ else
+ # Write the local FQDN to configuration file
+ ${csudo} sed -i -r "s/#*\s*(fqdn\s*).*/\1$localFqdn/" ${cfg_install_dir}/kinghistorian.cfg
+ serverFqdn=$localFqdn
+ break
+ fi
+ else
+ read -p "Please choose an IP from local IP list:" localFqdn
+ fi
+ done
+}
+
+function local_fqdn_check() {
+ #serverFqdn=$(hostname)
+ echo
+ echo -e -n "System hostname is: ${GREEN}$serverFqdn${NC}"
+ echo
+ if [[ "$serverFqdn" == "" ]] || [[ "$serverFqdn" == "localhost" ]]; then
+ echo -e -n "${GREEN}It is strongly recommended to configure a hostname for this machine ${NC}"
+ echo
+
+ while true
+ do
+ read -r -p "Set hostname now? [Y/n] " input
+ if [ ! -n "$input" ]; then
+ set_hostname
+ break
+ else
+ case $input in
+ [yY][eE][sS]|[yY])
+ set_hostname
+ break
+ ;;
+
+ [nN][oO]|[nN])
+ set_ipAsFqdn
+ break
+ ;;
+
+ *)
+ echo "Invalid input..."
+ ;;
+ esac
+ fi
+ done
+ fi
+}
+
+function install_config() {
+ if [ ! -f ${cfg_install_dir}/kinghistorian.cfg ]; then
+ ${csudo} mkdir -p ${cfg_install_dir}
+ [ -f ${script_dir}/cfg/kinghistorian.cfg ] && ${csudo} cp ${script_dir}/cfg/kinghistorian.cfg ${cfg_install_dir}
+ ${csudo} chmod 644 ${cfg_install_dir}/*
+ fi
+
+ ${csudo} cp -f ${script_dir}/cfg/kinghistorian.cfg ${install_main_dir}/cfg/kinghistorian.cfg.org
+ ${csudo} ln -s ${cfg_install_dir}/kinghistorian.cfg ${install_main_dir}/cfg
+
+ [ ! -z $1 ] && return 0 || : # only install client
+
+ if ((${update_flag}==1)); then
+ return 0
+ fi
+
+ if [ "$interactiveFqdn" == "no" ]; then
+ return 0
+ fi
+
+ local_fqdn_check
+
+ #FQDN_FORMAT="(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
+ #FQDN_FORMAT="(:[1-6][0-9][0-9][0-9][0-9]$)"
+ #PORT_FORMAT="(/[1-6][0-9][0-9][0-9][0-9]?/)"
+ #FQDN_PATTERN=":[0-9]{1,5}$"
+
+ # first full-qualified domain name (FQDN) for KingHistorian cluster system
+ echo
+ echo -e -n "${GREEN}Enter FQDN:port (like h1.wellintech.com:6030) of an existing KingHistorian cluster node to join${NC}"
+ echo
+ echo -e -n "${GREEN}OR leave it blank to build one${NC}:"
+ read firstEp
+ while true; do
+ if [ ! -z "$firstEp" ]; then
+ # check the format of the firstEp
+ #if [[ $firstEp == $FQDN_PATTERN ]]; then
+ # Write the first FQDN to configuration file
+ ${csudo} sed -i -r "s/#*\s*(firstEp\s*).*/\1$firstEp/" ${cfg_install_dir}/kinghistorian.cfg
+ break
+ #else
+ # read -p "Please enter the correct FQDN:port: " firstEp
+ #fi
+ else
+ break
+ fi
+ done
+}
+
+
+function install_log() {
+ ${csudo} rm -rf ${log_dir} || :
+ ${csudo} mkdir -p ${log_dir} && ${csudo} chmod 777 ${log_dir}
+
+ ${csudo} ln -s ${log_dir} ${install_main_dir}/log
+}
+
+function install_data() {
+ ${csudo} mkdir -p ${data_dir}
+
+ ${csudo} ln -s ${data_dir} ${install_main_dir}/data
+}
+
+function install_connector() {
+ ${csudo} cp -rf ${script_dir}/connector/* ${install_main_dir}/connector
+}
+
+function install_examples() {
+ if [ -d ${script_dir}/examples ]; then
+ ${csudo} cp -rf ${script_dir}/examples/* ${install_main_dir}/examples
+ fi
+}
+
+function clean_service_on_sysvinit() {
+ if pidof khserver &> /dev/null; then
+ ${csudo} service khserver stop || :
+ fi
+
+ if pidof tarbitrator &> /dev/null; then
+ ${csudo} service tarbitratord stop || :
+ fi
+
+ if ((${initd_mod}==1)); then
+ if [ -e ${service_config_dir}/khserver ]; then
+ ${csudo} chkconfig --del khserver || :
+ fi
+
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} chkconfig --del tarbitratord || :
+ fi
+ elif ((${initd_mod}==2)); then
+ if [ -e ${service_config_dir}/khserver ]; then
+ ${csudo} insserv -r khserver || :
+ fi
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} insserv -r tarbitratord || :
+ fi
+ elif ((${initd_mod}==3)); then
+ if [ -e ${service_config_dir}/khserver ]; then
+ ${csudo} update-rc.d -f khserver remove || :
+ fi
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} update-rc.d -f tarbitratord remove || :
+ fi
+ fi
+
+ ${csudo} rm -f ${service_config_dir}/khserver || :
+ ${csudo} rm -f ${service_config_dir}/tarbitratord || :
+
+ if $(which init &> /dev/null); then
+ ${csudo} init q || :
+ fi
+}
+
+function install_service_on_sysvinit() {
+ clean_service_on_sysvinit
+ sleep 1
+
+ # Install khserver service
+
+ if ((${os_type}==1)); then
+ ${csudo} cp -f ${script_dir}/init.d/khserver.deb ${install_main_dir}/init.d/khserver
+ ${csudo} cp ${script_dir}/init.d/khserver.deb ${service_config_dir}/khserver && ${csudo} chmod a+x ${service_config_dir}/khserver
+ ${csudo} cp -f ${script_dir}/init.d/tarbitratord.deb ${install_main_dir}/init.d/tarbitratord
+ ${csudo} cp ${script_dir}/init.d/tarbitratord.deb ${service_config_dir}/tarbitratord && ${csudo} chmod a+x ${service_config_dir}/tarbitratord
+ elif ((${os_type}==2)); then
+ ${csudo} cp -f ${script_dir}/init.d/khserver.rpm ${install_main_dir}/init.d/khserver
+ ${csudo} cp ${script_dir}/init.d/khserver.rpm ${service_config_dir}/khserver && ${csudo} chmod a+x ${service_config_dir}/khserver
+ ${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
+ fi
+
+ if ((${initd_mod}==1)); then
+ ${csudo} chkconfig --add khserver || :
+ ${csudo} chkconfig --level 2345 khserver on || :
+ ${csudo} chkconfig --add tarbitratord || :
+ ${csudo} chkconfig --level 2345 tarbitratord on || :
+ elif ((${initd_mod}==2)); then
+ ${csudo} insserv khserver || :
+ ${csudo} insserv -d khserver || :
+ ${csudo} insserv tarbitratord || :
+ ${csudo} insserv -d tarbitratord || :
+ elif ((${initd_mod}==3)); then
+ ${csudo} update-rc.d khserver defaults || :
+ ${csudo} update-rc.d tarbitratord defaults || :
+ fi
+}
+
+function clean_service_on_systemd() {
+ khserver_service_config="${service_config_dir}/khserver.service"
+ if systemctl is-active --quiet khserver; then
+ echo "KingHistorian is running, stopping it..."
+ ${csudo} systemctl stop khserver &> /dev/null || echo &> /dev/null
+ fi
+ ${csudo} systemctl disable khserver &> /dev/null || echo &> /dev/null
+ ${csudo} rm -f ${khserver_service_config}
+
+ tarbitratord_service_config="${service_config_dir}/tarbitratord.service"
+ if systemctl is-active --quiet tarbitratord; then
+ echo "tarbitrator is running, stopping it..."
+ ${csudo} systemctl stop tarbitratord &> /dev/null || echo &> /dev/null
+ fi
+ ${csudo} systemctl disable tarbitratord &> /dev/null || echo &> /dev/null
+ ${csudo} rm -f ${tarbitratord_service_config}
+
+ if [ "$verMode" == "cluster" ]; then
+ nginx_service_config="${service_config_dir}/nginxd.service"
+ if systemctl is-active --quiet nginxd; then
+ echo "Nginx for KingHistorian is running, stopping it..."
+ ${csudo} systemctl stop nginxd &> /dev/null || echo &> /dev/null
+ fi
+ ${csudo} systemctl disable nginxd &> /dev/null || echo &> /dev/null
+ ${csudo} rm -f ${nginx_service_config}
+ fi
+}
+
+function install_service_on_systemd() {
+ clean_service_on_systemd
+
+ service_config="${service_config_dir}/khserver.service"
+ ${csudo} bash -c "echo '[Unit]' >> ${service_config}"
+ ${csudo} bash -c "echo 'Description=KingHistorian server service' >> ${service_config}"
+ ${csudo} bash -c "echo 'After=network-online.target' >> ${service_config}"
+ ${csudo} bash -c "echo 'Wants=network-online.target' >> ${service_config}"
+ ${csudo} bash -c "echo >> ${service_config}"
+ ${csudo} bash -c "echo '[Service]' >> ${service_config}"
+ ${csudo} bash -c "echo 'Type=simple' >> ${service_config}"
+ ${csudo} bash -c "echo 'ExecStart=/usr/bin/khserver' >> ${service_config}"
+ ${csudo} bash -c "echo 'ExecStartPre=/usr/local/kinghistorian/bin/startPre.sh' >> ${service_config}"
+ ${csudo} bash -c "echo 'TimeoutStopSec=1000000s' >> ${service_config}"
+ ${csudo} bash -c "echo 'LimitNOFILE=infinity' >> ${service_config}"
+ ${csudo} bash -c "echo 'LimitNPROC=infinity' >> ${service_config}"
+ ${csudo} bash -c "echo 'LimitCORE=infinity' >> ${service_config}"
+ ${csudo} bash -c "echo 'TimeoutStartSec=0' >> ${service_config}"
+ ${csudo} bash -c "echo 'StandardOutput=null' >> ${service_config}"
+ ${csudo} bash -c "echo 'Restart=always' >> ${service_config}"
+ ${csudo} bash -c "echo 'StartLimitBurst=3' >> ${service_config}"
+ ${csudo} bash -c "echo 'StartLimitInterval=60s' >> ${service_config}"
+ ${csudo} bash -c "echo >> ${service_config}"
+ ${csudo} bash -c "echo '[Install]' >> ${service_config}"
+ ${csudo} bash -c "echo 'WantedBy=multi-user.target' >> ${service_config}"
+ ${csudo} systemctl enable khserver
+
+ tarbitratord_service_config="${service_config_dir}/tarbitratord.service"
+ ${csudo} bash -c "echo '[Unit]' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'Description=KingHistorian arbitrator service' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'After=network-online.target' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'Wants=network-online.target' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo '[Service]' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'Type=simple' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'ExecStart=/usr/bin/tarbitrator' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'TimeoutStopSec=1000000s' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'LimitNOFILE=infinity' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'LimitNPROC=infinity' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'LimitCORE=infinity' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'TimeoutStartSec=0' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'StandardOutput=null' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'Restart=always' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'StartLimitBurst=3' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'StartLimitInterval=60s' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo '[Install]' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'WantedBy=multi-user.target' >> ${tarbitratord_service_config}"
+ #${csudo} systemctl enable tarbitratord
+
+ if [ "$verMode" == "cluster" ]; then
+ nginx_service_config="${service_config_dir}/nginxd.service"
+ ${csudo} bash -c "echo '[Unit]' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'Description=Nginx For KingHistorian Service' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'After=network-online.target' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'Wants=network-online.target' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo >> ${nginx_service_config}"
+ ${csudo} bash -c "echo '[Service]' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'Type=forking' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'PIDFile=/usr/local/nginxd/logs/nginx.pid' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'ExecStart=/usr/local/nginxd/sbin/nginx' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'ExecStop=/usr/local/nginxd/sbin/nginx -s stop' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'TimeoutStopSec=1000000s' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'LimitNOFILE=infinity' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'LimitNPROC=infinity' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'LimitCORE=infinity' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'TimeoutStartSec=0' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'StandardOutput=null' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'Restart=always' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'StartLimitBurst=3' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'StartLimitInterval=60s' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo >> ${nginx_service_config}"
+ ${csudo} bash -c "echo '[Install]' >> ${nginx_service_config}"
+ ${csudo} bash -c "echo 'WantedBy=multi-user.target' >> ${nginx_service_config}"
+ if ! ${csudo} systemctl enable nginxd &> /dev/null; then
+ ${csudo} systemctl daemon-reexec
+ ${csudo} systemctl enable nginxd
+ fi
+ ${csudo} systemctl start nginxd
+ fi
+}
+
+function install_service() {
+ if ((${service_mod}==0)); then
+ install_service_on_systemd
+ elif ((${service_mod}==1)); then
+ install_service_on_sysvinit
+ else
+ # must manual stop khserver
+ kill_process khserver
+ fi
+}
+
+vercomp () {
+ if [[ $1 == $2 ]]; then
+ return 0
+ fi
+ local IFS=.
+ local i ver1=($1) ver2=($2)
+ # fill empty fields in ver1 with zeros
+ for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)); do
+ ver1[i]=0
+ done
+
+ for ((i=0; i<${#ver1[@]}; i++)); do
+ if [[ -z ${ver2[i]} ]]
+ then
+ # fill empty fields in ver2 with zeros
+ ver2[i]=0
+ fi
+ if ((10#${ver1[i]} > 10#${ver2[i]}))
+ then
+ return 1
+ fi
+ if ((10#${ver1[i]} < 10#${ver2[i]}))
+ then
+ return 2
+ fi
+ done
+ return 0
+}
+
+function is_version_compatible() {
+ curr_version=`ls ${script_dir}/driver/libtaos.so* |cut -d '.' -f 3-6`
+
+ if [ -f ${script_dir}/driver/vercomp.txt ]; then
+ min_compatible_version=`cat ${script_dir}/driver/vercomp.txt`
+ else
+ min_compatible_version=$(${script_dir}/bin/khserver -V | head -1 | cut -d ' ' -f 5)
+ fi
+
+ vercomp $curr_version $min_compatible_version
+ case $? in
+ 0) return 0;;
+ 1) return 0;;
+ 2) return 1;;
+ esac
+}
+
+function update() {
+ # Start to update
+ if [ ! -e kinghistorian.tar.gz ]; then
+ echo "File kinghistorian.tar.gz does not exist"
+ exit 1
+ fi
+ tar -zxf kinghistorian.tar.gz
+ install_jemalloc
+
+ # Check if version compatible
+ if ! is_version_compatible; then
+ echo -e "${RED}Version incompatible${NC}"
+ return 1
+ fi
+
+ echo -e "${GREEN}Start to update KingHistorian...${NC}"
+ # Stop the service if running
+ if pidof khserver &> /dev/null; then
+ if ((${service_mod}==0)); then
+ ${csudo} systemctl stop khserver || :
+ elif ((${service_mod}==1)); then
+ ${csudo} service khserver stop || :
+ else
+ kill_process khserver
+ fi
+ sleep 1
+ fi
+ if [ "$verMode" == "cluster" ]; then
+ if pidof nginx &> /dev/null; then
+ if ((${service_mod}==0)); then
+ ${csudo} systemctl stop nginxd || :
+ elif ((${service_mod}==1)); then
+ ${csudo} service nginxd stop || :
+ else
+ kill_process nginx
+ fi
+ sleep 1
+ fi
+ fi
+
+ install_main_path
+
+ install_log
+ install_header
+ install_lib
+# if [ "$pagMode" != "lite" ]; then
+# install_connector
+# fi
+# install_examples
+ if [ -z $1 ]; then
+ install_bin
+ install_service
+ install_config
+
+ openresty_work=false
+ if [ "$verMode" == "cluster" ]; then
+ # Check if openresty is installed
+ # Check if nginx is installed successfully
+ if type curl &> /dev/null; then
+ if curl -sSf http://127.0.0.1:${nginx_port} &> /dev/null; then
+ echo -e "\033[44;32;1mNginx for KingHistorian is updated successfully!${NC}"
+ openresty_work=true
+ else
+ echo -e "\033[44;31;5mNginx for KingHistorian does not work! Please try again!\033[0m"
+ fi
+ fi
+ fi
+
+ #echo
+ #echo -e "\033[44;32;1mKingHistorian is updated successfully!${NC}"
+ echo
+ echo -e "${GREEN_DARK}To configure KingHistorian ${NC}: edit /etc/kinghistorian/kinghistorian.cfg"
+ if ((${service_mod}==0)); then
+ echo -e "${GREEN_DARK}To start KingHistorian ${NC}: ${csudo} systemctl start khserver${NC}"
+ elif ((${service_mod}==1)); then
+ echo -e "${GREEN_DARK}To start KingHistorian ${NC}: ${csudo} service khserver start${NC}"
+ else
+ echo -e "${GREEN_DARK}To start KingHistorian ${NC}: ./khserver${NC}"
+ fi
+
+ if [ ${openresty_work} = 'true' ]; then
+ echo -e "${GREEN_DARK}To access KingHistorian ${NC}: use ${GREEN_UNDERLINE}khclient -h $serverFqdn${NC} in shell OR from ${GREEN_UNDERLINE}http://127.0.0.1:${nginx_port}${NC}"
+ else
+ echo -e "${GREEN_DARK}To access KingHistorian ${NC}: use ${GREEN_UNDERLINE}khclient -h $serverFqdn${NC} in shell${NC}"
+ fi
+
+ echo
+ echo -e "\033[44;32;1mKingHistorian is updated successfully!${NC}"
+ else
+ install_bin
+ install_config
+
+ echo
+ echo -e "\033[44;32;1mKingHistorian client is updated successfully!${NC}"
+ fi
+
+ rm -rf $(tar -tf kinghistorian.tar.gz)
+}
+
+function install() {
+ # Start to install
+ if [ ! -e kinghistorian.tar.gz ]; then
+ echo "File kinghistorian.tar.gz does not exist"
+ exit 1
+ fi
+ tar -zxf kinghistorian.tar.gz
+
+ echo -e "${GREEN}Start to install KingHistorian...${NC}"
+
+ install_main_path
+
+ if [ -z $1 ]; then
+ install_data
+ fi
+
+ install_log
+ install_header
+ install_lib
+ install_jemalloc
+# if [ "$pagMode" != "lite" ]; then
+# install_connector
+# fi
+# install_examples
+
+ if [ -z $1 ]; then # install service and client
+ # For installing new
+ install_bin
+ install_service
+
+ openresty_work=false
+ if [ "$verMode" == "cluster" ]; then
+ # Check if nginx is installed successfully
+ if type curl &> /dev/null; then
+ if curl -sSf http://127.0.0.1:${nginx_port} &> /dev/null; then
+ echo -e "\033[44;32;1mNginx for KingHistorian is installed successfully!${NC}"
+ openresty_work=true
+ else
+ echo -e "\033[44;31;5mNginx for KingHistorian does not work! Please try again!\033[0m"
+ fi
+ fi
+ fi
+
+ install_config
+
+ # Ask if to start the service
+ #echo
+ #echo -e "\033[44;32;1mKingHistorian is installed successfully!${NC}"
+ echo
+ echo -e "${GREEN_DARK}To configure KingHistorian ${NC}: edit /etc/kinghistorian/kinghistorian.cfg"
+ if ((${service_mod}==0)); then
+ echo -e "${GREEN_DARK}To start KingHistorian ${NC}: ${csudo} systemctl start khserver${NC}"
+ elif ((${service_mod}==1)); then
+ echo -e "${GREEN_DARK}To start KingHistorian ${NC}: ${csudo} service khserver start${NC}"
+ else
+ echo -e "${GREEN_DARK}To start KingHistorian ${NC}: khserver${NC}"
+ fi
+
+ if [ ! -z "$firstEp" ]; then
+ tmpFqdn=${firstEp%%:*}
+ substr=":"
+ if [[ $firstEp =~ $substr ]];then
+ tmpPort=${firstEp#*:}
+ else
+ tmpPort=""
+ fi
+ if [[ "$tmpPort" != "" ]];then
+ echo -e "${GREEN_DARK}To access KingHistorian ${NC}: khclient -h $tmpFqdn -P $tmpPort${GREEN_DARK} to login into cluster, then${NC}"
+ else
+ echo -e "${GREEN_DARK}To access KingHistorian ${NC}: khclient -h $tmpFqdn${GREEN_DARK} to login into cluster, then${NC}"
+ fi
+ echo -e "${GREEN_DARK}execute ${NC}: create dnode 'newDnodeFQDN:port'; ${GREEN_DARK}to add this new node${NC}"
+ echo
+ elif [ ! -z "$serverFqdn" ]; then
+ echo -e "${GREEN_DARK}To access KingHistorian ${NC}: khclient -h $serverFqdn${GREEN_DARK} to login into KingHistorian server${NC}"
+ echo
+ fi
+ echo -e "\033[44;32;1mKingHistorian is installed successfully!${NC}"
+ echo
+ else # Only install client
+ install_bin
+ install_config
+
+ echo
+ echo -e "\033[44;32;1mKingHistorian client is installed successfully!${NC}"
+ fi
+
+ rm -rf $(tar -tf kinghistorian.tar.gz)
+}
+
+
+## ==============================Main program starts from here============================
+serverFqdn=$(hostname)
+if [ "$verType" == "server" ]; then
+ # Install server and client
+ if [ -x ${bin_dir}/khserver ]; then
+ update_flag=1
+ update
+ else
+ install
+ fi
+elif [ "$verType" == "client" ]; then
+ interactiveFqdn=no
+ # Only install client
+ if [ -x ${bin_dir}/khclient ]; then
+ update_flag=1
+ update client
+ else
+ install client
+ fi
+else
+ echo "please input correct verType"
+fi
diff --git a/packaging/tools/install_power.sh b/packaging/tools/install_power.sh
index 05eb09d8f3a8b5237c36714e964530b877e332de..1935372a6b6289ef8f5e762a0d3a4400f984c632 100755
--- a/packaging/tools/install_power.sh
+++ b/packaging/tools/install_power.sh
@@ -210,13 +210,6 @@ function install_lib() {
${csudo} ln -s ${lib64_link_dir}/libtaos.so.1 ${lib64_link_dir}/libtaos.so || :
fi
- #if [ "$verMode" == "cluster" ]; then
- # # Compatible with version 1.5
- # ${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} chmod 777 ${v15_java_app_dir} || :
- #fi
-
${csudo} ldconfig
}
@@ -328,7 +321,7 @@ function set_hostname() {
${csudo} sed -i -r "s/#*\s*(HOSTNAME=\s*).*/\1$newHostname/" /etc/sysconfig/network ||:
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}/power.cfg
serverFqdn=$newHostname
if [[ -e /etc/hosts ]]; then
@@ -363,7 +356,7 @@ function set_ipAsFqdn() {
echo -e -n "${GREEN}Unable to get local ip, use 127.0.0.1${NC}"
localFqdn="127.0.0.1"
# 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}/power.cfg
serverFqdn=$localFqdn
echo
return
@@ -385,7 +378,7 @@ function set_ipAsFqdn() {
read -p "Please choose an IP from local IP list:" localFqdn
else
# 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}/power.cfg
serverFqdn=$localFqdn
break
fi
@@ -432,16 +425,14 @@ function local_fqdn_check() {
}
function install_config() {
- #${csudo} rm -f ${install_main_dir}/cfg/taos.cfg || :
-
- if [ ! -f ${cfg_install_dir}/taos.cfg ]; then
+ if [ ! -f ${cfg_install_dir}/power.cfg ]; then
${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/power.cfg ] && ${csudo} cp ${script_dir}/cfg/power.cfg ${cfg_install_dir}
${csudo} chmod 644 ${cfg_install_dir}/*
fi
- ${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} cp -f ${script_dir}/cfg/power.cfg ${install_main_dir}/cfg/power.cfg.org
+ ${csudo} ln -s ${cfg_install_dir}/power.cfg ${install_main_dir}/cfg
[ ! -z $1 ] && return 0 || : # only install client
@@ -471,7 +462,7 @@ function install_config() {
# check the format of the firstEp
#if [[ $firstEp == $FQDN_PATTERN ]]; then
# 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}/power.cfg
break
#else
# read -p "Please enter the correct FQDN:port: " firstEp
@@ -607,7 +598,7 @@ function clean_service_on_systemd() {
if [ "$verMode" == "cluster" ]; then
nginx_service_config="${service_config_dir}/nginxd.service"
if systemctl is-active --quiet nginxd; then
- echo "Nginx for TDengine is running, stopping it..."
+ echo "Nginx for PowerDB is running, stopping it..."
${csudo} systemctl stop nginxd &> /dev/null || echo &> /dev/null
fi
${csudo} systemctl disable nginxd &> /dev/null || echo &> /dev/null
@@ -646,7 +637,7 @@ function install_service_on_systemd() {
tarbitratord_service_config="${service_config_dir}/tarbitratord.service"
${csudo} bash -c "echo '[Unit]' >> ${tarbitratord_service_config}"
- ${csudo} bash -c "echo 'Description=TDengine arbitrator service' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'Description=PowerDB arbitrator service' >> ${tarbitratord_service_config}"
${csudo} bash -c "echo 'After=network-online.target' >> ${tarbitratord_service_config}"
${csudo} bash -c "echo 'Wants=network-online.target' >> ${tarbitratord_service_config}"
${csudo} bash -c "echo >> ${tarbitratord_service_config}"
@@ -828,7 +819,7 @@ function update_PowerDB() {
#echo
#echo -e "\033[44;32;1mPowerDB is updated successfully!${NC}"
echo
- echo -e "${GREEN_DARK}To configure PowerDB ${NC}: edit /etc/power/taos.cfg"
+ echo -e "${GREEN_DARK}To configure PowerDB ${NC}: edit /etc/power/power.cfg"
if ((${service_mod}==0)); then
echo -e "${GREEN_DARK}To start PowerDB ${NC}: ${csudo} systemctl start powerd${NC}"
elif ((${service_mod}==1)); then
@@ -905,7 +896,7 @@ function install_PowerDB() {
#echo
#echo -e "\033[44;32;1mPowerDB is installed successfully!${NC}"
echo
- echo -e "${GREEN_DARK}To configure PowerDB ${NC}: edit /etc/power/taos.cfg"
+ echo -e "${GREEN_DARK}To configure PowerDB ${NC}: edit /etc/power/power.cfg"
if ((${service_mod}==0)); then
echo -e "${GREEN_DARK}To start PowerDB ${NC}: ${csudo} systemctl start powerd${NC}"
elif ((${service_mod}==1)); then
diff --git a/packaging/tools/install_pro.sh b/packaging/tools/install_pro.sh
index 527f9a231e5a97fa086ef655cd420abc61677fcf..260e315a5e9745c5c60c41f19b086074b18f6c1b 100755
--- a/packaging/tools/install_pro.sh
+++ b/packaging/tools/install_pro.sh
@@ -316,7 +316,7 @@ function set_hostname() {
${csudo} sed -i -r "s/#*\s*(HOSTNAME=\s*).*/\1$newHostname/" /etc/sysconfig/network ||:
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}/prodb.cfg
serverFqdn=$newHostname
if [[ -e /etc/hosts ]]; then
@@ -351,7 +351,7 @@ function set_ipAsFqdn() {
echo -e -n "${GREEN}Unable to get local ip, use 127.0.0.1${NC}"
localFqdn="127.0.0.1"
# 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}/prodb.cfg
serverFqdn=$localFqdn
echo
return
@@ -373,7 +373,7 @@ function set_ipAsFqdn() {
read -p "Please choose an IP from local IP list:" localFqdn
else
# 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}/prodb.cfg
serverFqdn=$localFqdn
break
fi
@@ -420,14 +420,14 @@ function local_fqdn_check() {
}
function install_config() {
- if [ ! -f ${cfg_install_dir}/taos.cfg ]; then
+ if [ ! -f ${cfg_install_dir}/prodb.cfg ]; then
${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/prodb.cfg ] && ${csudo} cp ${script_dir}/cfg/prodb.cfg ${cfg_install_dir}
${csudo} chmod 644 ${cfg_install_dir}/*
fi
- ${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} cp -f ${script_dir}/cfg/prodb.cfg ${install_main_dir}/cfg/prodb.cfg.org
+ ${csudo} ln -s ${cfg_install_dir}/prodb.cfg ${install_main_dir}/cfg
[ ! -z $1 ] && return 0 || : # only install client
@@ -457,7 +457,7 @@ function install_config() {
# check the format of the firstEp
#if [[ $firstEp == $FQDN_PATTERN ]]; then
# 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}/prodb.cfg
break
#else
# read -p "Please enter the correct FQDN:port: " firstEp
@@ -805,7 +805,7 @@ function update_prodb() {
#echo
#echo -e "\033[44;32;1mProDB is updated successfully!${NC}"
echo
- echo -e "${GREEN_DARK}To configure ProDB ${NC}: edit /etc/ProDB/taos.cfg"
+ echo -e "${GREEN_DARK}To configure ProDB ${NC}: edit /etc/ProDB/prodb.cfg"
if ((${service_mod}==0)); then
echo -e "${GREEN_DARK}To start ProDB ${NC}: ${csudo} systemctl start prodbs${NC}"
elif ((${service_mod}==1)); then
@@ -882,7 +882,7 @@ function install_prodb() {
#echo
#echo -e "\033[44;32;1mProDB is installed successfully!${NC}"
echo
- echo -e "${GREEN_DARK}To configure ProDB ${NC}: edit /etc/ProDB/taos.cfg"
+ echo -e "${GREEN_DARK}To configure ProDB ${NC}: edit /etc/ProDB/prodb.cfg"
if ((${service_mod}==0)); then
echo -e "${GREEN_DARK}To start ProDB ${NC}: ${csudo} systemctl start prodbs${NC}"
elif ((${service_mod}==1)); then
diff --git a/packaging/tools/install_tq.sh b/packaging/tools/install_tq.sh
index 52e08cb6b0d00b25686b87e2f066401e0388d4ce..c5acf9ed27aaa61b53f41c1e380a96a4c86fc2a2 100755
--- a/packaging/tools/install_tq.sh
+++ b/packaging/tools/install_tq.sh
@@ -210,13 +210,6 @@ function install_lib() {
${csudo} ln -s ${lib64_link_dir}/libtaos.so.1 ${lib64_link_dir}/libtaos.so || :
fi
- #if [ "$verMode" == "cluster" ]; then
- # # Compatible with version 1.5
- # ${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} chmod 777 ${v15_java_app_dir} || :
- #fi
-
${csudo} ldconfig
}
@@ -328,7 +321,7 @@ function set_hostname() {
${csudo} sed -i -r "s/#*\s*(HOSTNAME=\s*).*/\1$newHostname/" /etc/sysconfig/network ||:
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}/tq.cfg
serverFqdn=$newHostname
if [[ -e /etc/hosts ]]; then
@@ -363,7 +356,7 @@ function set_ipAsFqdn() {
echo -e -n "${GREEN}Unable to get local ip, use 127.0.0.1${NC}"
localFqdn="127.0.0.1"
# 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}/tq.cfg
serverFqdn=$localFqdn
echo
return
@@ -385,7 +378,7 @@ function set_ipAsFqdn() {
read -p "Please choose an IP from local IP list:" localFqdn
else
# 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}/tq.cfg
serverFqdn=$localFqdn
break
fi
@@ -432,16 +425,14 @@ function local_fqdn_check() {
}
function install_config() {
- #${csudo} rm -f ${install_main_dir}/cfg/taos.cfg || :
-
- if [ ! -f ${cfg_install_dir}/taos.cfg ]; then
+ if [ ! -f ${cfg_install_dir}/tq.cfg ]; then
${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/tq.cfg ] && ${csudo} cp ${script_dir}/cfg/tq.cfg ${cfg_install_dir}
${csudo} chmod 644 ${cfg_install_dir}/*
fi
- ${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} cp -f ${script_dir}/cfg/tq.cfg ${install_main_dir}/cfg/tq.cfg.org
+ ${csudo} ln -s ${cfg_install_dir}/tq.cfg ${install_main_dir}/cfg
[ ! -z $1 ] && return 0 || : # only install client
@@ -471,7 +462,7 @@ function install_config() {
# check the format of the firstEp
#if [[ $firstEp == $FQDN_PATTERN ]]; then
# 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}/tq.cfg
break
#else
# read -p "Please enter the correct FQDN:port: " firstEp
@@ -607,7 +598,7 @@ function clean_service_on_systemd() {
if [ "$verMode" == "cluster" ]; then
nginx_service_config="${service_config_dir}/nginxd.service"
if systemctl is-active --quiet nginxd; then
- echo "Nginx for TDengine is running, stopping it..."
+ echo "Nginx for TQ is running, stopping it..."
${csudo} systemctl stop nginxd &> /dev/null || echo &> /dev/null
fi
${csudo} systemctl disable nginxd &> /dev/null || echo &> /dev/null
@@ -646,7 +637,7 @@ function install_service_on_systemd() {
tarbitratord_service_config="${service_config_dir}/tarbitratord.service"
${csudo} bash -c "echo '[Unit]' >> ${tarbitratord_service_config}"
- ${csudo} bash -c "echo 'Description=TDengine arbitrator service' >> ${tarbitratord_service_config}"
+ ${csudo} bash -c "echo 'Description=TQ arbitrator service' >> ${tarbitratord_service_config}"
${csudo} bash -c "echo 'After=network-online.target' >> ${tarbitratord_service_config}"
${csudo} bash -c "echo 'Wants=network-online.target' >> ${tarbitratord_service_config}"
${csudo} bash -c "echo >> ${tarbitratord_service_config}"
@@ -828,7 +819,7 @@ function update_tq() {
#echo
#echo -e "\033[44;32;1mTQ is updated successfully!${NC}"
echo
- echo -e "${GREEN_DARK}To configure TQ ${NC}: edit /etc/tq/taos.cfg"
+ echo -e "${GREEN_DARK}To configure TQ ${NC}: edit /etc/tq/tq.cfg"
if ((${service_mod}==0)); then
echo -e "${GREEN_DARK}To start TQ ${NC}: ${csudo} systemctl start tqd${NC}"
elif ((${service_mod}==1)); then
@@ -905,7 +896,7 @@ function install_tq() {
#echo
#echo -e "\033[44;32;1mTQ is installed successfully!${NC}"
echo
- echo -e "${GREEN_DARK}To configure TQ ${NC}: edit /etc/tq/taos.cfg"
+ echo -e "${GREEN_DARK}To configure TQ ${NC}: edit /etc/tq/tq.cfg"
if ((${service_mod}==0)); then
echo -e "${GREEN_DARK}To start TQ ${NC}: ${csudo} systemctl start tqd${NC}"
elif ((${service_mod}==1)); then
diff --git a/packaging/tools/make_install.sh b/packaging/tools/make_install.sh
old mode 100644
new mode 100755
index dcdd277457956ba017ff19283b0ca1a1c5abc42a..ea5ab8b1ba6b75bf34001a3e1547a016567d002d
--- a/packaging/tools/make_install.sh
+++ b/packaging/tools/make_install.sh
@@ -282,8 +282,6 @@ function install_header() {
}
function install_config() {
- #${csudo} rm -f ${install_main_dir}/cfg/taos.cfg || :
-
if [ ! -f ${cfg_install_dir}/taos.cfg ]; then
${csudo} mkdir -p ${cfg_install_dir}
[ -f ${script_dir}/../cfg/taos.cfg ] &&
diff --git a/packaging/tools/makearbi_jh.sh b/packaging/tools/makearbi_jh.sh
new file mode 100755
index 0000000000000000000000000000000000000000..5457b163599421d0a5917156efde1c8814a6f514
--- /dev/null
+++ b/packaging/tools/makearbi_jh.sh
@@ -0,0 +1,73 @@
+#!/bin/bash
+#
+# Generate arbitrator's tar.gz setup package for all os system
+
+set -e
+#set -x
+
+curr_dir=$(pwd)
+compile_dir=$1
+version=$2
+build_time=$3
+cpuType=$4
+osType=$5
+verMode=$6
+verType=$7
+pagMode=$8
+
+script_dir="$(dirname $(readlink -f $0))"
+top_dir="$(readlink -f ${script_dir}/../..)"
+
+# create compressed install file.
+build_dir="${compile_dir}/build"
+code_dir="${top_dir}/src"
+release_dir="${top_dir}/release"
+
+#package_name='linux'
+if [ "$verMode" == "cluster" ]; then
+ install_dir="${release_dir}/jh_iot-enterprise-arbitrator-${version}"
+else
+ install_dir="${release_dir}/jh_iot-arbitrator-${version}"
+fi
+
+# Directories and files.
+bin_files="${build_dir}/bin/tarbitrator ${script_dir}/remove_arbi_jh.sh"
+install_files="${script_dir}/install_arbi_jh.sh"
+
+init_file_tarbitrator_deb=${script_dir}/../deb/tarbitratord
+init_file_tarbitrator_rpm=${script_dir}/../rpm/tarbitratord
+
+# make directories.
+mkdir -p ${install_dir} && cp ${install_files} ${install_dir} && chmod a+x ${install_dir}/install_arbi_jh.sh || :
+mkdir -p ${install_dir}/bin && cp ${bin_files} ${install_dir}/bin && chmod a+x ${install_dir}/bin/* || :
+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 || :
+
+cd ${release_dir}
+
+if [ "$verMode" == "cluster" ]; then
+ pkg_name=${install_dir}-${osType}-${cpuType}
+elif [ "$verMode" == "edge" ]; then
+ pkg_name=${install_dir}-${osType}-${cpuType}
+else
+ echo "unknow verMode, nor cluster or edge"
+ exit 1
+fi
+
+if [ "$verType" == "beta" ]; then
+ pkg_name=${pkg_name}-${verType}
+elif [ "$verType" == "stable" ]; then
+ pkg_name=${pkg_name}
+else
+ echo "unknow verType, nor stabel or beta"
+ exit 1
+fi
+
+tar -zcv -f "$(basename ${pkg_name}).tar.gz" $(basename ${install_dir}) --remove-files || :
+exitcode=$?
+if [ "$exitcode" != "0" ]; then
+ echo "tar ${pkg_name}.tar.gz error !!!"
+ exit $exitcode
+fi
+
+cd ${curr_dir}
diff --git a/packaging/tools/makearbi_kh.sh b/packaging/tools/makearbi_kh.sh
new file mode 100755
index 0000000000000000000000000000000000000000..c7fa40eb4f1fc4003e6a584bdc5c4534616754d6
--- /dev/null
+++ b/packaging/tools/makearbi_kh.sh
@@ -0,0 +1,74 @@
+#!/bin/bash
+#
+# Generate arbitrator's tar.gz setup package for all os system
+
+set -e
+#set -x
+
+curr_dir=$(pwd)
+compile_dir=$1
+version=$2
+build_time=$3
+cpuType=$4
+osType=$5
+verMode=$6
+verType=$7
+pagMode=$8
+
+script_dir="$(dirname $(readlink -f $0))"
+top_dir="$(readlink -f ${script_dir}/../..)"
+
+# create compressed install file.
+build_dir="${compile_dir}/build"
+code_dir="${top_dir}/src"
+release_dir="${top_dir}/release"
+
+#package_name='linux'
+if [ "$verMode" == "cluster" ]; then
+ install_dir="${release_dir}/KingHistorian-enterprise-arbitrator-${version}"
+else
+ install_dir="${release_dir}/KingHistorian-arbitrator-${version}"
+fi
+
+# Directories and files.
+bin_files="${build_dir}/bin/tarbitrator ${script_dir}/remove_arbi_kh.sh"
+install_files="${script_dir}/install_arbi_kh.sh"
+
+init_file_tarbitrator_deb=${script_dir}/../deb/tarbitratord
+init_file_tarbitrator_rpm=${script_dir}/../rpm/tarbitratord
+
+# make directories.
+mkdir -p ${install_dir} && cp ${install_files} ${install_dir} && chmod a+x ${install_dir}/install_arbi_kh.sh || :
+#mkdir -p ${install_dir}/inc && cp ${header_files} ${install_dir}/inc || :
+mkdir -p ${install_dir}/bin && cp ${bin_files} ${install_dir}/bin && chmod a+x ${install_dir}/bin/* || :
+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 || :
+
+cd ${release_dir}
+
+if [ "$verMode" == "cluster" ]; then
+ pkg_name=${install_dir}-${osType}-${cpuType}
+elif [ "$verMode" == "edge" ]; then
+ pkg_name=${install_dir}-${osType}-${cpuType}
+else
+ echo "unknow verMode, nor cluster or edge"
+ exit 1
+fi
+
+if [ "$verType" == "beta" ]; then
+ pkg_name=${pkg_name}-${verType}
+elif [ "$verType" == "stable" ]; then
+ pkg_name=${pkg_name}
+else
+ echo "unknow verType, nor stabel or beta"
+ exit 1
+fi
+
+tar -zcv -f "$(basename ${pkg_name}).tar.gz" $(basename ${install_dir}) --remove-files || :
+exitcode=$?
+if [ "$exitcode" != "0" ]; then
+ echo "tar ${pkg_name}.tar.gz error !!!"
+ exit $exitcode
+fi
+
+cd ${curr_dir}
diff --git a/packaging/tools/makearbi_power.sh b/packaging/tools/makearbi_power.sh
index fd50ecd43878de08e7bb94249da8cb64c3630e6e..f4d14809f70225406adae49f30f1dcbe4818f014 100755
--- a/packaging/tools/makearbi_power.sh
+++ b/packaging/tools/makearbi_power.sh
@@ -34,7 +34,6 @@ fi
bin_files="${build_dir}/bin/tarbitrator ${script_dir}/remove_arbi_power.sh"
install_files="${script_dir}/install_arbi_power.sh"
-#header_files="${code_dir}/inc/taos.h ${code_dir}/inc/taoserror.h"
init_file_tarbitrator_deb=${script_dir}/../deb/tarbitratord
init_file_tarbitrator_rpm=${script_dir}/../rpm/tarbitratord
diff --git a/packaging/tools/makearbi_pro.sh b/packaging/tools/makearbi_pro.sh
index 6ce3765e44acc408ced9730c54b793338eb37b38..5b5cd5447c2630f0e6bd9ba53d50856761049bc6 100755
--- a/packaging/tools/makearbi_pro.sh
+++ b/packaging/tools/makearbi_pro.sh
@@ -34,7 +34,6 @@ fi
bin_files="${build_dir}/bin/tarbitrator ${script_dir}/remove_arbi_pro.sh"
install_files="${script_dir}/install_arbi_pro.sh"
-#header_files="${code_dir}/inc/taos.h ${code_dir}/inc/taoserror.h"
init_file_tarbitrator_deb=${script_dir}/../deb/tarbitratord
init_file_tarbitrator_rpm=${script_dir}/../rpm/tarbitratord
diff --git a/packaging/tools/makearbi_tq.sh b/packaging/tools/makearbi_tq.sh
index c10dfec255d411965a3887942e5d2aded4635979..fb5b42a062b1bc34f4104e314de2adeca462d8b9 100755
--- a/packaging/tools/makearbi_tq.sh
+++ b/packaging/tools/makearbi_tq.sh
@@ -34,7 +34,6 @@ fi
bin_files="${build_dir}/bin/tarbitrator ${script_dir}/remove_arbi_tq.sh"
install_files="${script_dir}/install_arbi_tq.sh"
-#header_files="${code_dir}/inc/taos.h ${code_dir}/inc/taoserror.h"
init_file_tarbitrator_deb=${script_dir}/../deb/tarbitratord
init_file_tarbitrator_rpm=${script_dir}/../rpm/tarbitratord
diff --git a/packaging/tools/makeclient_jh.sh b/packaging/tools/makeclient_jh.sh
new file mode 100755
index 0000000000000000000000000000000000000000..267d78b953be33c567f8175a369b13f326ee3f5a
--- /dev/null
+++ b/packaging/tools/makeclient_jh.sh
@@ -0,0 +1,180 @@
+#!/bin/bash
+#
+# Generate tar.gz package for linux client in all os system
+set -e
+#set -x
+
+curr_dir=$(pwd)
+compile_dir=$1
+version=$2
+build_time=$3
+cpuType=$4
+osType=$5
+verMode=$6
+verType=$7
+pagMode=$8
+
+if [ "$osType" != "Darwin" ]; then
+ script_dir="$(dirname $(readlink -f $0))"
+ top_dir="$(readlink -f ${script_dir}/../..)"
+else
+ script_dir=`dirname $0`
+ cd ${script_dir}
+ script_dir="$(pwd)"
+ top_dir=${script_dir}/../..
+fi
+
+# create compressed install file.
+build_dir="${compile_dir}/build"
+code_dir="${top_dir}/src"
+release_dir="${top_dir}/release"
+
+#package_name='linux'
+
+if [ "$verMode" == "cluster" ]; then
+ install_dir="${release_dir}/jh_iot-enterprise-client-${version}"
+else
+ install_dir="${release_dir}/jh_iot-client-${version}"
+fi
+
+# Directories and files.
+
+if [ "$osType" != "Darwin" ]; then
+ lib_files="${build_dir}/lib/libtaos.so.${version}"
+else
+ bin_files="${build_dir}/bin/taos ${script_dir}/remove_client_jh.sh"
+ lib_files="${build_dir}/lib/libtaos.${version}.dylib"
+fi
+
+header_files="${code_dir}/inc/taos.h ${code_dir}/inc/taoserror.h"
+if [ "$verMode" == "cluster" ]; then
+ cfg_dir="${top_dir}/../enterprise/packaging/cfg"
+else
+ cfg_dir="${top_dir}/packaging/cfg"
+fi
+
+install_files="${script_dir}/install_client_jh.sh"
+
+# make directories.
+mkdir -p ${install_dir}
+mkdir -p ${install_dir}/inc && cp ${header_files} ${install_dir}/inc
+mkdir -p ${install_dir}/cfg && cp ${cfg_dir}/taos.cfg ${install_dir}/cfg/taos.cfg
+
+sed -i '/dataDir/ {s/taos/jh_taos/g}' ${install_dir}/cfg/taos.cfg
+sed -i '/logDir/ {s/taos/jh_taos/g}' ${install_dir}/cfg/taos.cfg
+sed -i "s/TDengine/jh_iot/g" ${install_dir}/cfg/taos.cfg
+
+mkdir -p ${install_dir}/bin
+if [ "$osType" != "Darwin" ]; then
+ if [ "$pagMode" == "lite" ]; then
+ strip ${build_dir}/bin/taos
+ cp ${build_dir}/bin/taos ${install_dir}/bin/jh_taos
+ cp ${script_dir}/remove_jh.sh ${install_dir}/bin
+ else
+ cp ${build_dir}/bin/taos ${install_dir}/bin/jh_taos
+ cp ${script_dir}/remove_jh.sh ${install_dir}/bin
+ cp ${build_dir}/bin/taosdemo ${install_dir}/bin/jhdemo
+ cp ${build_dir}/bin/taosdump ${install_dir}/bin/jh_taosdump
+ cp ${script_dir}/set_core.sh ${install_dir}/bin
+ cp ${script_dir}/get_client.sh ${install_dir}/bin
+ cp ${script_dir}/taosd-dump-cfg.gdb ${install_dir}/bin
+ fi
+else
+ cp ${bin_files} ${install_dir}/bin
+fi
+chmod a+x ${install_dir}/bin/* || :
+
+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
+
+cd ${install_dir}
+
+if [ "$osType" != "Darwin" ]; then
+ tar -zcv -f jh_taos.tar.gz * --remove-files || :
+else
+ tar -zcv -f jh_taos.tar.gz * || :
+ mv jh_taos.tar.gz ..
+ rm -rf ./*
+ mv ../jh_taos.tar.gz .
+fi
+
+cd ${curr_dir}
+cp ${install_files} ${install_dir}
+if [ "$osType" == "Darwin" ]; then
+ sed 's/osType=Linux/osType=Darwin/g' ${install_dir}/install_client_jh.sh >> install_client_jh_temp.sh
+ mv install_client_jh_temp.sh ${install_dir}/install_client_jh.sh
+fi
+if [ "$pagMode" == "lite" ]; then
+ sed 's/pagMode=full/pagMode=lite/g' ${install_dir}/install_client_jh.sh >> install_client_jh_temp.sh
+ mv install_client_jh_temp.sh ${install_dir}/install_client_jh.sh
+fi
+chmod a+x ${install_dir}/install_client_jh.sh
+
+# Copy driver
+mkdir -p ${install_dir}/driver
+cp ${lib_files} ${install_dir}/driver
+
+cd ${release_dir}
+
+if [ "$verMode" == "cluster" ]; then
+ pkg_name=${install_dir}-${osType}-${cpuType}
+elif [ "$verMode" == "edge" ]; then
+ pkg_name=${install_dir}-${osType}-${cpuType}
+else
+ echo "unknow verMode, nor cluster or edge"
+ exit 1
+fi
+
+if [ "$pagMode" == "lite" ]; then
+ pkg_name=${pkg_name}-Lite
+fi
+
+if [ "$verType" == "beta" ]; then
+ pkg_name=${pkg_name}-${verType}
+elif [ "$verType" == "stable" ]; then
+ pkg_name=${pkg_name}
+else
+ echo "unknow verType, nor stable or beta"
+ exit 1
+fi
+
+if [ "$osType" != "Darwin" ]; then
+ tar -zcv -f "$(basename ${pkg_name}).tar.gz" $(basename ${install_dir}) --remove-files || :
+else
+ tar -zcv -f "$(basename ${pkg_name}).tar.gz" $(basename ${install_dir}) || :
+ mv "$(basename ${pkg_name}).tar.gz" ..
+ rm -rf ./*
+ mv ../"$(basename ${pkg_name}).tar.gz" .
+fi
+
+cd ${curr_dir}
diff --git a/packaging/tools/makeclient_kh.sh b/packaging/tools/makeclient_kh.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0d7c05249f47a25ce52296253cc763ae2c972e79
--- /dev/null
+++ b/packaging/tools/makeclient_kh.sh
@@ -0,0 +1,181 @@
+#!/bin/bash
+#
+# Generate tar.gz package for linux client in all os system
+set -e
+#set -x
+
+curr_dir=$(pwd)
+compile_dir=$1
+version=$2
+build_time=$3
+cpuType=$4
+osType=$5
+verMode=$6
+verType=$7
+pagMode=$8
+
+if [ "$osType" != "Darwin" ]; then
+ script_dir="$(dirname $(readlink -f $0))"
+ top_dir="$(readlink -f ${script_dir}/../..)"
+else
+ script_dir=`dirname $0`
+ cd ${script_dir}
+ script_dir="$(pwd)"
+ top_dir=${script_dir}/../..
+fi
+
+# create compressed install file.
+build_dir="${compile_dir}/build"
+code_dir="${top_dir}/src"
+release_dir="${top_dir}/release"
+
+#package_name='linux'
+
+if [ "$verMode" == "cluster" ]; then
+ install_dir="${release_dir}/KingHistorian-enterprise-client-${version}"
+else
+ install_dir="${release_dir}/KingHistorian-client-${version}"
+fi
+
+# Directories and files.
+
+if [ "$osType" != "Darwin" ]; then
+ lib_files="${build_dir}/lib/libtaos.so.${version}"
+else
+ bin_files="${build_dir}/bin/taos ${script_dir}/remove_client_kh.sh"
+ lib_files="${build_dir}/lib/libtaos.${version}.dylib"
+fi
+
+header_files="${code_dir}/inc/taos.h ${code_dir}/inc/taoserror.h"
+if [ "$verMode" == "cluster" ]; then
+ cfg_dir="${top_dir}/../enterprise/packaging/cfg"
+else
+ cfg_dir="${top_dir}/packaging/cfg"
+fi
+
+install_files="${script_dir}/install_client_kh.sh"
+
+# make directories.
+mkdir -p ${install_dir}
+mkdir -p ${install_dir}/inc && cp ${header_files} ${install_dir}/inc
+mkdir -p ${install_dir}/cfg && cp ${cfg_dir}/taos.cfg ${install_dir}/cfg/kinghistorian.cfg
+
+sed -i '/dataDir/ {s/taos/kinghistorian/g}' ${install_dir}/cfg/kinghistorian.cfg
+sed -i '/logDir/ {s/taos/kinghistorian/g}' ${install_dir}/cfg/kinghistorian.cfg
+sed -i "s/TDengine/KingHistorian/g" ${install_dir}/cfg/kinghistorian.cfg
+sed -i "s/TAOS/KingHistorian/g" ${install_dir}/cfg/kinghistorian.cfg
+
+mkdir -p ${install_dir}/bin
+if [ "$osType" != "Darwin" ]; then
+ if [ "$pagMode" == "lite" ]; then
+ strip ${build_dir}/bin/taos
+ cp ${build_dir}/bin/taos ${install_dir}/bin/khclient
+ cp ${script_dir}/remove_kh.sh ${install_dir}/bin
+ else
+ cp ${build_dir}/bin/taos ${install_dir}/bin/khclient
+ cp ${script_dir}/remove_kh.sh ${install_dir}/bin
+ cp ${build_dir}/bin/taosdemo ${install_dir}/bin/khdemo
+ cp ${build_dir}/bin/taosdump ${install_dir}/bin/khdump
+ cp ${script_dir}/set_core.sh ${install_dir}/bin
+ cp ${script_dir}/get_client.sh ${install_dir}/bin
+ cp ${script_dir}/taosd-dump-cfg.gdb ${install_dir}/bin
+ fi
+else
+ cp ${bin_files} ${install_dir}/bin
+fi
+chmod a+x ${install_dir}/bin/* || :
+
+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
+
+cd ${install_dir}
+
+if [ "$osType" != "Darwin" ]; then
+ tar -zcv -f kinghistorian.tar.gz * --remove-files || :
+else
+ tar -zcv -f kinghistorian.tar.gz * || :
+ mv kinghistorian.tar.gz ..
+ rm -rf ./*
+ mv ../kinghistorian.tar.gz .
+fi
+
+cd ${curr_dir}
+cp ${install_files} ${install_dir}
+if [ "$osType" == "Darwin" ]; then
+ sed 's/osType=Linux/osType=Darwin/g' ${install_dir}/install_client_kh.sh >> install_client_kh_temp.sh
+ mv install_client_kh_temp.sh ${install_dir}/install_client_kh.sh
+fi
+if [ "$pagMode" == "lite" ]; then
+ sed 's/pagMode=full/pagMode=lite/g' ${install_dir}/install_client_kh.sh >> install_client_kh_temp.sh
+ mv install_client_kh_temp.sh ${install_dir}/install_client_kh.sh
+fi
+chmod a+x ${install_dir}/install_client_kh.sh
+
+# Copy driver
+mkdir -p ${install_dir}/driver
+cp ${lib_files} ${install_dir}/driver
+
+cd ${release_dir}
+
+if [ "$verMode" == "cluster" ]; then
+ pkg_name=${install_dir}-${osType}-${cpuType}
+elif [ "$verMode" == "edge" ]; then
+ pkg_name=${install_dir}-${osType}-${cpuType}
+else
+ echo "unknow verMode, nor cluster or edge"
+ exit 1
+fi
+
+if [ "$pagMode" == "lite" ]; then
+ pkg_name=${pkg_name}-Lite
+fi
+
+if [ "$verType" == "beta" ]; then
+ pkg_name=${pkg_name}-${verType}
+elif [ "$verType" == "stable" ]; then
+ pkg_name=${pkg_name}
+else
+ echo "unknow verType, nor stable or beta"
+ exit 1
+fi
+
+if [ "$osType" != "Darwin" ]; then
+ tar -zcv -f "$(basename ${pkg_name}).tar.gz" $(basename ${install_dir}) --remove-files || :
+else
+ tar -zcv -f "$(basename ${pkg_name}).tar.gz" $(basename ${install_dir}) || :
+ mv "$(basename ${pkg_name}).tar.gz" ..
+ rm -rf ./*
+ mv ../"$(basename ${pkg_name}).tar.gz" .
+fi
+
+cd ${curr_dir}
diff --git a/packaging/tools/makeclient_pro.sh b/packaging/tools/makeclient_pro.sh
index 4a0b033d30e6478f37a62f9cc896aee0903d39c9..3aa37545545d9f9237376fc8f5883e618535b10a 100755
--- a/packaging/tools/makeclient_pro.sh
+++ b/packaging/tools/makeclient_pro.sh
@@ -58,11 +58,11 @@ install_files="${script_dir}/install_client_pro.sh"
# make directories.
mkdir -p ${install_dir}
mkdir -p ${install_dir}/inc && cp ${header_files} ${install_dir}/inc
-mkdir -p ${install_dir}/cfg && cp ${cfg_dir}/taos.cfg ${install_dir}/cfg/taos.cfg
+mkdir -p ${install_dir}/cfg && cp ${cfg_dir}/taos.cfg ${install_dir}/cfg/prodb.cfg
-sed -i '/dataDir/ {s/taos/ProDB/g}' ${install_dir}/cfg/taos.cfg
-sed -i '/logDir/ {s/taos/ProDB/g}' ${install_dir}/cfg/taos.cfg
-sed -i "s/TDengine/ProDB/g" ${install_dir}/cfg/taos.cfg
+sed -i '/dataDir/ {s/taos/ProDB/g}' ${install_dir}/cfg/prodb.cfg
+sed -i '/logDir/ {s/taos/ProDB/g}' ${install_dir}/cfg/prodb.cfg
+sed -i "s/TDengine/ProDB/g" ${install_dir}/cfg/prodb.cfg
mkdir -p ${install_dir}/bin
if [ "$osType" != "Darwin" ]; then
diff --git a/packaging/tools/makeclient_tq.sh b/packaging/tools/makeclient_tq.sh
index 1cc7003661a7491b1df625916dd289de32434ee9..c6922d1c2357c99dc23b14212e652d32c7ac6368 100755
--- a/packaging/tools/makeclient_tq.sh
+++ b/packaging/tools/makeclient_tq.sh
@@ -40,13 +40,6 @@ fi
# Directories and files.
if [ "$osType" != "Darwin" ]; then
-# if [ "$pagMode" == "lite" ]; then
-# strip ${build_dir}/bin/tqd
-# strip ${build_dir}/bin/tq
-# bin_files="${build_dir}/bin/tq ${script_dir}/remove_client_tq.sh"
-# else
-# bin_files="${build_dir}/bin/tq ${build_dir}/bin/tqdemo ${script_dir}/remove_client_tq.sh ${script_dir}/set_core.sh"
-# fi
lib_files="${build_dir}/lib/libtaos.so.${version}"
else
bin_files="${build_dir}/bin/tq ${script_dir}/remove_client_tq.sh"
@@ -65,11 +58,11 @@ install_files="${script_dir}/install_client_tq.sh"
# make directories.
mkdir -p ${install_dir}
mkdir -p ${install_dir}/inc && cp ${header_files} ${install_dir}/inc
-mkdir -p ${install_dir}/cfg && cp ${cfg_dir}/taos.cfg ${install_dir}/cfg/taos.cfg
+mkdir -p ${install_dir}/cfg && cp ${cfg_dir}/taos.cfg ${install_dir}/cfg/tq.cfg
-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
+sed -i '/dataDir/ {s/taos/tq/g}' ${install_dir}/cfg/tq.cfg
+sed -i '/logDir/ {s/taos/tq/g}' ${install_dir}/cfg/tq.cfg
+sed -i "s/TDengine/TQ/g" ${install_dir}/cfg/tq.cfg
mkdir -p ${install_dir}/bin
if [ "$osType" != "Darwin" ]; then
diff --git a/packaging/tools/makepkg_jh.sh b/packaging/tools/makepkg_jh.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d7b7746849578b0e2774ddf442566196102ea561
--- /dev/null
+++ b/packaging/tools/makepkg_jh.sh
@@ -0,0 +1,160 @@
+#!/bin/bash
+#
+# Generate tar.gz package for all os system
+
+set -e
+#set -x
+
+curr_dir=$(pwd)
+compile_dir=$1
+version=$2
+build_time=$3
+cpuType=$4
+osType=$5
+verMode=$6
+verType=$7
+pagMode=$8
+versionComp=$9
+
+script_dir="$(dirname $(readlink -f $0))"
+top_dir="$(readlink -f ${script_dir}/../..)"
+
+# create compressed install file.
+build_dir="${compile_dir}/build"
+code_dir="${top_dir}/src"
+release_dir="${top_dir}/release"
+
+# package_name='linux'
+if [ "$verMode" == "cluster" ]; then
+ install_dir="${release_dir}/jh_iot-enterprise-server-${version}"
+else
+ install_dir="${release_dir}/jh_iot-server-${version}"
+fi
+
+lib_files="${build_dir}/lib/libtaos.so.${version}"
+header_files="${code_dir}/inc/taos.h ${code_dir}/inc/taoserror.h"
+if [ "$verMode" == "cluster" ]; then
+ cfg_dir="${top_dir}/../enterprise/packaging/cfg"
+else
+ cfg_dir="${top_dir}/packaging/cfg"
+fi
+install_files="${script_dir}/install_jh.sh"
+nginx_dir="${code_dir}/../../enterprise/src/plugins/web"
+
+# make directories.
+mkdir -p ${install_dir}
+mkdir -p ${install_dir}/inc && cp ${header_files} ${install_dir}/inc
+mkdir -p ${install_dir}/cfg && cp ${cfg_dir}/taos.cfg ${install_dir}/cfg/taos.cfg
+mkdir -p ${install_dir}/bin
+
+# bin
+if [ "$pagMode" == "lite" ]; then
+ strip ${build_dir}/bin/taosd
+ strip ${build_dir}/bin/taos
+else
+ cp ${build_dir}/bin/taosdemo ${install_dir}/bin/jhdemo
+ cp ${build_dir}/bin/taosdump ${install_dir}/bin/jh_taosdump
+ 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
+ cp ${script_dir}/startPre.sh ${install_dir}/bin
+ cp ${script_dir}/taosd-dump-cfg.gdb ${install_dir}/bin
+fi
+cp ${build_dir}/bin/taos ${install_dir}/bin/jh_taos
+cp ${build_dir}/bin/taosd ${install_dir}/bin/jh_taosd
+cp ${script_dir}/remove_jh.sh ${install_dir}/bin
+chmod a+x ${install_dir}/bin/* || :
+
+# cluster
+if [ "$verMode" == "cluster" ]; then
+ sed 's/verMode=edge/verMode=cluster/g' ${install_dir}/bin/remove_jh.sh >> remove_jh_temp.sh
+ mv remove_jh_temp.sh ${install_dir}/bin/remove_jh.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
+
+ # replace the OEM name
+ sed -i -e 's/www.taosdata.com/www.jhict.com/g' $(grep -r 'www.taosdata.com' ${install_dir}/nginxd | sed -r "s/(.*\.html):\s*(.*)/\1/g")
+ sed -i -e 's/2017/2021/g' $(grep -r '2017' ${install_dir}/nginxd | sed -r "s/(.*\.html):\s*(.*)/\1/g")
+ sed -i -e 's/TAOS Data/Jinheng Technology/g' $(grep -r 'TAOS Data' ${install_dir}/nginxd | sed -r "s/(.*\.html):\s*(.*)/\1/g")
+ sed -i -e 's/taosd/jh_taosd/g' `grep -r 'taosd' ${install_dir}/nginxd | grep -E '*\.js\s*.*' | sed -r -e 's/(.*\.js):\s*(.*)/\1/g' | sort | uniq`
+ sed -i -e 's/
taosd<\/th>/ | jh_taosd<\/th>/g' ${install_dir}/nginxd/admin/monitor.html
+ sed -i -e "s/data:\['taosd', 'system'\],/data:\['jh_taosd', 'system'\],/g" ${install_dir}/nginxd/admin/monitor.html
+ sed -i -e "s/name: 'taosd',/name: 'jh_taosd',/g" ${install_dir}/nginxd/admin/monitor.html
+ sed -i "s/TDengine/jh_iot/g" ${install_dir}/nginxd/admin/*.html
+ sed -i "s/TDengine/jh_iot/g" ${install_dir}/nginxd/admin/js/*.js
+
+ if [ "$cpuType" == "aarch64" ]; then
+ cp -f ${install_dir}/nginxd/sbin/arm/64bit/nginx ${install_dir}/nginxd/sbin/
+ elif [ "$cpuType" == "aarch32" ]; then
+ cp -f ${install_dir}/nginxd/sbin/arm/32bit/nginx ${install_dir}/nginxd/sbin/
+ fi
+ rm -rf ${install_dir}/nginxd/sbin/arm
+fi
+
+sed -i '/dataDir/ {s/taos/jh_taos/g}' ${install_dir}/cfg/taos.cfg
+sed -i '/logDir/ {s/taos/jh_taos/g}' ${install_dir}/cfg/taos.cfg
+sed -i "s/TDengine/jh_iot/g" ${install_dir}/cfg/taos.cfg
+sed -i "s/support@taosdata.com/jhkj@njsteel.com.cn/g" ${install_dir}/cfg/taos.cfg
+sed -i "s/taos client/client/g" ${install_dir}/cfg/taos.cfg
+sed -i "s/taosd/server/g" ${install_dir}/cfg/taos.cfg
+
+cd ${install_dir}
+tar -zcv -f jh_taos.tar.gz * --remove-files || :
+exitcode=$?
+if [ "$exitcode" != "0" ]; then
+ echo "tar jh_taos.tar.gz error !!!"
+ exit $exitcode
+fi
+
+cd ${curr_dir}
+cp ${install_files} ${install_dir}
+if [ "$verMode" == "cluster" ]; then
+ sed 's/verMode=edge/verMode=cluster/g' ${install_dir}/install_jh.sh >> install_jh_temp.sh
+ mv install_jh_temp.sh ${install_dir}/install_jh.sh
+fi
+if [ "$pagMode" == "lite" ]; then
+ sed -e "s/pagMode=full/pagMode=lite/g" -e "s/taos_history/jh_taos_history/g" ${install_dir}/install.sh >> install_jh_temp.sh
+ mv install_jh_temp.sh ${install_dir}/install_jh.sh
+fi
+
+sed -i "/install_connector$/d" ${install_dir}/install_jh.sh
+sed -i "/install_examples$/d" ${install_dir}/install_jh.sh
+chmod a+x ${install_dir}/install_jh.sh
+
+# Copy driver
+mkdir -p ${install_dir}/driver && cp ${lib_files} ${install_dir}/driver && echo "${versionComp}" > ${install_dir}/driver/vercomp.txt
+
+cd ${release_dir}
+
+if [ "$verMode" == "cluster" ]; then
+ pkg_name=${install_dir}-${osType}-${cpuType}
+elif [ "$verMode" == "edge" ]; then
+ pkg_name=${install_dir}-${osType}-${cpuType}
+else
+ echo "unknow verMode, nor cluster or edge"
+ exit 1
+fi
+
+if [ "$pagMode" == "lite" ]; then
+ pkg_name=${pkg_name}-Lite
+fi
+
+if [ "$verType" == "beta" ]; then
+ pkg_name=${pkg_name}-${verType}
+elif [ "$verType" == "stable" ]; then
+ pkg_name=${pkg_name}
+else
+ echo "unknow verType, nor stabel or beta"
+ exit 1
+fi
+
+tar -zcv -f "$(basename ${pkg_name}).tar.gz" $(basename ${install_dir}) --remove-files || :
+exitcode=$?
+if [ "$exitcode" != "0" ]; then
+ echo "tar ${pkg_name}.tar.gz error !!!"
+ exit $exitcode
+fi
+
+cd ${curr_dir}
diff --git a/packaging/tools/makepkg_kh.sh b/packaging/tools/makepkg_kh.sh
new file mode 100755
index 0000000000000000000000000000000000000000..16b5b1a50817aadc1d078814f5db9137aeaa4415
--- /dev/null
+++ b/packaging/tools/makepkg_kh.sh
@@ -0,0 +1,160 @@
+#!/bin/bash
+#
+# Generate tar.gz package for all os system
+
+set -e
+#set -x
+
+curr_dir=$(pwd)
+compile_dir=$1
+version=$2
+build_time=$3
+cpuType=$4
+osType=$5
+verMode=$6
+verType=$7
+pagMode=$8
+versionComp=$9
+
+script_dir="$(dirname $(readlink -f $0))"
+top_dir="$(readlink -f ${script_dir}/../..)"
+
+# create compressed install file.
+build_dir="${compile_dir}/build"
+code_dir="${top_dir}/src"
+release_dir="${top_dir}/release"
+
+# package_name='linux'
+if [ "$verMode" == "cluster" ]; then
+ install_dir="${release_dir}/KingHistorian-enterprise-server-${version}"
+else
+ install_dir="${release_dir}/KingHistorian-server-${version}"
+fi
+
+lib_files="${build_dir}/lib/libtaos.so.${version}"
+header_files="${code_dir}/inc/taos.h ${code_dir}/inc/taoserror.h"
+if [ "$verMode" == "cluster" ]; then
+ cfg_dir="${top_dir}/../enterprise/packaging/cfg"
+else
+ cfg_dir="${top_dir}/packaging/cfg"
+fi
+install_files="${script_dir}/install_kh.sh"
+nginx_dir="${code_dir}/../../enterprise/src/plugins/web"
+
+# make directories.
+mkdir -p ${install_dir}
+mkdir -p ${install_dir}/inc && cp ${header_files} ${install_dir}/inc
+mkdir -p ${install_dir}/cfg && cp ${cfg_dir}/taos.cfg ${install_dir}/cfg/kinghistorian.cfg
+mkdir -p ${install_dir}/bin
+
+# bin
+if [ "$pagMode" == "lite" ]; then
+ strip ${build_dir}/bin/taosd
+ strip ${build_dir}/bin/taos
+else
+ cp ${build_dir}/bin/taosdemo ${install_dir}/bin/khdemo
+ cp ${build_dir}/bin/taosdump ${install_dir}/bin/khdump
+ 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
+ cp ${script_dir}/startPre.sh ${install_dir}/bin
+ cp ${script_dir}/taosd-dump-cfg.gdb ${install_dir}/bin
+fi
+cp ${build_dir}/bin/taos ${install_dir}/bin/khclient
+cp ${build_dir}/bin/taosd ${install_dir}/bin/khserver
+cp ${script_dir}/remove_kh.sh ${install_dir}/bin
+chmod a+x ${install_dir}/bin/* || :
+
+# cluster
+if [ "$verMode" == "cluster" ]; then
+ sed 's/verMode=edge/verMode=cluster/g' ${install_dir}/bin/remove_kh.sh >> remove_kh_temp.sh
+ mv remove_kh_temp.sh ${install_dir}/bin/remove_kh.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 -e 's/www.taosdata.com/www.wellintech.com/g' $(grep -r 'www.taosdata.com' ${install_dir}/nginxd | sed -r "s/(.*\.html):\s*(.*)/\1/g")
+ sed -i -e 's/2017/2021/g' $(grep -r '2017' ${install_dir}/nginxd | sed -r "s/(.*\.html):\s*(.*)/\1/g")
+ sed -i -e 's/TAOS Data/Wellintech/g' $(grep -r 'TAOS Data' ${install_dir}/nginxd | sed -r "s/(.*\.html):\s*(.*)/\1/g")
+ sed -i -e 's/taosd/khserver/g' `grep -r 'taosd' ${install_dir}/nginxd | grep -E '*\.js\s*.*' | sed -r -e 's/(.*\.js):\s*(.*)/\1/g' | sort | uniq`
+ sed -i -e 's/ | taosd<\/th>/ | khserver<\/th>/g' ${install_dir}/nginxd/admin/monitor.html
+ sed -i -e "s/data:\['taosd', 'system'\],/data:\['khserver', 'system'\],/g" ${install_dir}/nginxd/admin/monitor.html
+ sed -i -e "s/name: 'taosd',/name: 'khserver',/g" ${install_dir}/nginxd/admin/monitor.html
+ sed -i "s/TDengine/KingHistorian/g" ${install_dir}/nginxd/admin/*.html
+ sed -i "s/TDengine/KingHistorian/g" ${install_dir}/nginxd/admin/js/*.js
+
+ if [ "$cpuType" == "aarch64" ]; then
+ cp -f ${install_dir}/nginxd/sbin/arm/64bit/nginx ${install_dir}/nginxd/sbin/
+ elif [ "$cpuType" == "aarch32" ]; then
+ cp -f ${install_dir}/nginxd/sbin/arm/32bit/nginx ${install_dir}/nginxd/sbin/
+ fi
+ rm -rf ${install_dir}/nginxd/sbin/arm
+fi
+
+sed -i '/dataDir/ {s/taos/kinghistorian/g}' ${install_dir}/cfg/kinghistorian.cfg
+sed -i '/logDir/ {s/taos/kinghistorian/g}' ${install_dir}/cfg/kinghistorian.cfg
+sed -i "s/TDengine/KingHistorian/g" ${install_dir}/cfg/kinghistorian.cfg
+sed -i "s/support@taosdata.com/support@wellintech.com/g" ${install_dir}/cfg/kinghistorian.cfg
+sed -i "s/taos client/khclient/g" ${install_dir}/cfg/kinghistorian.cfg
+sed -i "s/taosd/khserver/g" ${install_dir}/cfg/kinghistorian.cfg
+sed -i "s/TAOS/KingHistorian/g" ${install_dir}/cfg/kinghistorian.cfg
+
+cd ${install_dir}
+tar -zcv -f kinghistorian.tar.gz * --remove-files || :
+exitcode=$?
+if [ "$exitcode" != "0" ]; then
+ echo "tar kinghistorian.tar.gz error !!!"
+ exit $exitcode
+fi
+
+cd ${curr_dir}
+cp ${install_files} ${install_dir}
+if [ "$verMode" == "cluster" ]; then
+ sed 's/verMode=edge/verMode=cluster/g' ${install_dir}/install_kh.sh >> install_kh_temp.sh
+ mv install_kh_temp.sh ${install_dir}/install_kh.sh
+fi
+if [ "$pagMode" == "lite" ]; then
+ sed -e "s/pagMode=full/pagMode=lite/g" -e "s/taos_history/kh_history/g" ${install_dir}/install.sh >> install_kh_temp.sh
+ mv install_kh_temp.sh ${install_dir}/install_kh.sh
+fi
+
+sed -i "/install_connector$/d" ${install_dir}/install_kh.sh
+sed -i "/install_examples$/d" ${install_dir}/install_kh.sh
+chmod a+x ${install_dir}/install_kh.sh
+
+# Copy driver
+mkdir -p ${install_dir}/driver && cp ${lib_files} ${install_dir}/driver && echo "${versionComp}" > ${install_dir}/driver/vercomp.txt
+
+cd ${release_dir}
+
+if [ "$verMode" == "cluster" ]; then
+ pkg_name=${install_dir}-${osType}-${cpuType}
+elif [ "$verMode" == "edge" ]; then
+ pkg_name=${install_dir}-${osType}-${cpuType}
+else
+ echo "unknow verMode, nor cluster or edge"
+ exit 1
+fi
+
+if [ "$pagMode" == "lite" ]; then
+ pkg_name=${pkg_name}-Lite
+fi
+
+if [ "$verType" == "beta" ]; then
+ pkg_name=${pkg_name}-${verType}
+elif [ "$verType" == "stable" ]; then
+ pkg_name=${pkg_name}
+else
+ echo "unknow verType, nor stabel or beta"
+ exit 1
+fi
+
+tar -zcv -f "$(basename ${pkg_name}).tar.gz" $(basename ${install_dir}) --remove-files || :
+exitcode=$?
+if [ "$exitcode" != "0" ]; then
+ echo "tar ${pkg_name}.tar.gz error !!!"
+ exit $exitcode
+fi
+
+cd ${curr_dir}
diff --git a/packaging/tools/makepkg_power.sh b/packaging/tools/makepkg_power.sh
index e9839e4ef22126fb795501277f73768359f973c0..e5c3c91ebf298e156c331ff2d1d37240b726d460 100755
--- a/packaging/tools/makepkg_power.sh
+++ b/packaging/tools/makepkg_power.sh
@@ -31,16 +31,6 @@ else
install_dir="${release_dir}/PowerDB-server-${version}"
fi
-# Directories and files.
-#if [ "$pagMode" == "lite" ]; then
-# 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
-# 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
-
lib_files="${build_dir}/lib/libtaos.so.${version}"
header_files="${code_dir}/inc/taos.h ${code_dir}/inc/taoserror.h"
if [ "$verMode" == "cluster" ]; then
@@ -51,13 +41,6 @@ fi
install_files="${script_dir}/install_power.sh"
nginx_dir="${code_dir}/../../enterprise/src/plugins/web"
-# Init file
-#init_dir=${script_dir}/deb
-#if [ $package_type = "centos" ]; then
-# init_dir=${script_dir}/rpm
-#fi
-#init_files=${init_dir}/powerd
-# temp use rpm's powerd. TODO: later modify according to os type
init_file_deb=${script_dir}/../deb/powerd
init_file_rpm=${script_dir}/../rpm/powerd
init_file_tarbitrator_deb=${script_dir}/../deb/tarbitratord
@@ -66,7 +49,7 @@ init_file_tarbitrator_rpm=${script_dir}/../rpm/tarbitratord
# make directories.
mkdir -p ${install_dir}
mkdir -p ${install_dir}/inc && cp ${header_files} ${install_dir}/inc
-mkdir -p ${install_dir}/cfg && cp ${cfg_dir}/taos.cfg ${install_dir}/cfg/taos.cfg
+mkdir -p ${install_dir}/cfg && cp ${cfg_dir}/taos.cfg ${install_dir}/cfg/power.cfg
#mkdir -p ${install_dir}/bin && cp ${bin_files} ${install_dir}/bin && chmod a+x ${install_dir}/bin/* || :
mkdir -p ${install_dir}/bin
@@ -108,9 +91,9 @@ if [ "$verMode" == "cluster" ]; then
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
+ sed -i '/dataDir/ {s/taos/power/g}' ${install_dir}/cfg/power.cfg
+ sed -i '/logDir/ {s/taos/power/g}' ${install_dir}/cfg/power.cfg
+ sed -i "s/TDengine/PowerDB/g" ${install_dir}/cfg/power.cfg
if [ "$cpuType" == "aarch64" ]; then
cp -f ${install_dir}/nginxd/sbin/arm/64bit/nginx ${install_dir}/nginxd/sbin/
diff --git a/packaging/tools/makepkg_pro.sh b/packaging/tools/makepkg_pro.sh
index 69076196b2eb9d539ce53f0e48e09b5fea317c2c..a03b306810caf2368f94721a90efb9bafa57d665 100755
--- a/packaging/tools/makepkg_pro.sh
+++ b/packaging/tools/makepkg_pro.sh
@@ -44,7 +44,7 @@ nginx_dir="${code_dir}/../../enterprise/src/plugins/web"
# make directories.
mkdir -p ${install_dir}
mkdir -p ${install_dir}/inc && cp ${header_files} ${install_dir}/inc
-mkdir -p ${install_dir}/cfg && cp ${cfg_dir}/taos.cfg ${install_dir}/cfg/taos.cfg
+mkdir -p ${install_dir}/cfg && cp ${cfg_dir}/taos.cfg ${install_dir}/cfg/prodb.cfg
mkdir -p ${install_dir}/bin
# bin
@@ -93,12 +93,12 @@ if [ "$verMode" == "cluster" ]; then
rm -rf ${install_dir}/nginxd/sbin/arm
fi
-sed -i '/dataDir/ {s/taos/ProDB/g}' ${install_dir}/cfg/taos.cfg
-sed -i '/logDir/ {s/taos/ProDB/g}' ${install_dir}/cfg/taos.cfg
-sed -i "s/TDengine/ProDB/g" ${install_dir}/cfg/taos.cfg
-sed -i "s/support@taosdata.com/support@hanatech.com.cn/g" ${install_dir}/cfg/taos.cfg
-sed -i "s/taos client/prodbc/g" ${install_dir}/cfg/taos.cfg
-sed -i "s/taosd/prodbs/g" ${install_dir}/cfg/taos.cfg
+sed -i '/dataDir/ {s/taos/ProDB/g}' ${install_dir}/cfg/prodb.cfg
+sed -i '/logDir/ {s/taos/ProDB/g}' ${install_dir}/cfg/prodb.cfg
+sed -i "s/TDengine/ProDB/g" ${install_dir}/cfg/prodb.cfg
+sed -i "s/support@taosdata.com/support@hanatech.com.cn/g" ${install_dir}/cfg/prodb.cfg
+sed -i "s/taos client/prodbc/g" ${install_dir}/cfg/prodb.cfg
+sed -i "s/taosd/prodbs/g" ${install_dir}/cfg/prodb.cfg
cd ${install_dir}
tar -zcv -f prodb.tar.gz * --remove-files || :
@@ -123,50 +123,9 @@ sed -i "/install_connector$/d" ${install_dir}/install_pro.sh
sed -i "/install_examples$/d" ${install_dir}/install_pro.sh
chmod a+x ${install_dir}/install_pro.sh
-# Copy example code
-#mkdir -p ${install_dir}/examples
-#examples_dir="${top_dir}/tests/examples"
-#cp -r ${examples_dir}/c ${install_dir}/examples
-#sed -i '/passwd/ {s/taosdata/prodb/g}' ${install_dir}/examples/c/*.c
-#sed -i '/root/ {s/taosdata/prodb/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
-# mv ${install_dir}/examples/matlab/TDengineDemo.m ${install_dir}/examples/matlab/ProDBDemo.m
-# sed -i '/password/ {s/taosdata/prodb/g}' ${install_dir}/examples/matlab/ProDBDemo.m
-# cp -r ${examples_dir}/python ${install_dir}/examples
-# sed -i '/password/ {s/taosdata/prodb/g}' ${install_dir}/examples/python/read_example.py
-# cp -r ${examples_dir}/R ${install_dir}/examples
-# sed -i '/password/ {s/taosdata/prodb/g}' ${install_dir}/examples/R/command.txt
-# cp -r ${examples_dir}/go ${install_dir}/examples
-# mv ${install_dir}/examples/go/taosdemo.go ${install_dir}/examples/go/prodemo.go
-# sed -i '/root/ {s/taosdata/prodb/g}' ${install_dir}/examples/go/prodemo.go
-#fi
-
# Copy 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"
-#mkdir -p ${install_dir}/connector
-#if [[ "$pagMode" != "lite" ]] && [[ "$cpuType" != "aarch32" ]]; then
-# cp ${build_dir}/lib/*.jar ${install_dir}/connector ||:
-
-# if find ${connector_dir}/go -mindepth 1 -maxdepth 1 | read; then
-# cp -r ${connector_dir}/go ${install_dir}/connector
-# else
-# echo "WARNING: go connector not found, please check if want to use it!"
-# fi
-# cp -r ${connector_dir}/python ${install_dir}/connector/
-# mv ${install_dir}/connector/python/taos ${install_dir}/connector/python/prodb
-# sed -i '/password/ {s/taosdata/prodb/g}' ${install_dir}/connector/python/prodb/cinterface.py
-
-# sed -i '/password/ {s/taosdata/prodb/g}' ${install_dir}/connector/python/prodb/subscription.py
-
-# sed -i '/self._password/ {s/taosdata/prodb/g}' ${install_dir}/connector/python/prodb/connection.py
-#fi
-
cd ${release_dir}
if [ "$verMode" == "cluster" ]; then
diff --git a/packaging/tools/makepkg_tq.sh b/packaging/tools/makepkg_tq.sh
index 421e8d7858b764753de9d7519d25e73c7db80bea..8abdfc2f7237ef465eac79907ad2b2a4c35c0463 100755
--- a/packaging/tools/makepkg_tq.sh
+++ b/packaging/tools/makepkg_tq.sh
@@ -31,16 +31,6 @@ else
install_dir="${release_dir}/TQ-server-${version}"
fi
-# Directories and files.
-#if [ "$pagMode" == "lite" ]; then
-# 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
-# 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
-
lib_files="${build_dir}/lib/libtaos.so.${version}"
header_files="${code_dir}/inc/taos.h ${code_dir}/inc/taoserror.h"
if [ "$verMode" == "cluster" ]; then
@@ -51,34 +41,19 @@ fi
install_files="${script_dir}/install_tq.sh"
nginx_dir="${code_dir}/../../enterprise/src/plugins/web"
-# Init file
-#init_dir=${script_dir}/deb
-#if [ $package_type = "centos" ]; then
-# init_dir=${script_dir}/rpm
-#fi
-#init_files=${init_dir}/tqd
-# temp use rpm's tqd. TODO: later modify according to os type
-#init_file_deb=${script_dir}/../deb/tqd
-#init_file_rpm=${script_dir}/../rpm/tqd
-#init_file_tarbitrator_deb=${script_dir}/../deb/tarbitratord
-#init_file_tarbitrator_rpm=${script_dir}/../rpm/tarbitratord
-
# make directories.
mkdir -p ${install_dir}
mkdir -p ${install_dir}/inc && cp ${header_files} ${install_dir}/inc
-mkdir -p ${install_dir}/cfg && cp ${cfg_dir}/taos.cfg ${install_dir}/cfg/taos.cfg
+mkdir -p ${install_dir}/cfg && cp ${cfg_dir}/taos.cfg ${install_dir}/cfg/tq.cfg
-#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/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
-# 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
cp ${script_dir}/remove_tq.sh ${install_dir}/bin
@@ -92,11 +67,6 @@ else
fi
chmod a+x ${install_dir}/bin/* || :
-#mkdir -p ${install_dir}/init.d && cp ${init_file_deb} ${install_dir}/init.d/tqd.deb
-#mkdir -p ${install_dir}/init.d && cp ${init_file_rpm} ${install_dir}/init.d/tqd.rpm
-#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 || :
-
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
@@ -108,9 +78,9 @@ if [ "$verMode" == "cluster" ]; then
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
+ sed -i '/dataDir/ {s/taos/tq/g}' ${install_dir}/cfg/tq.cfg
+ sed -i '/logDir/ {s/taos/tq/g}' ${install_dir}/cfg/tq.cfg
+ sed -i "s/TDengine/TQ/g" ${install_dir}/cfg/tq.cfg
if [ "$cpuType" == "aarch64" ]; then
cp -f ${install_dir}/nginxd/sbin/arm/64bit/nginx ${install_dir}/nginxd/sbin/
@@ -180,10 +150,6 @@ if [[ "$pagMode" != "lite" ]] && [[ "$cpuType" != "aarch32" ]]; then
sed -i '/self._password/ {s/taosdata/tqueue/g}' ${install_dir}/connector/python/taos/connection.py
fi
-# Copy release note
-# cp ${script_dir}/release_note ${install_dir}
-
-# exit 1
cd ${release_dir}
diff --git a/packaging/tools/remove_arbi_jh.sh b/packaging/tools/remove_arbi_jh.sh
new file mode 100755
index 0000000000000000000000000000000000000000..8b690771c761ac51772dac83cafec46360a16be3
--- /dev/null
+++ b/packaging/tools/remove_arbi_jh.sh
@@ -0,0 +1,130 @@
+#!/bin/bash
+#
+# Script to stop the service and uninstall jh_iot's arbitrator
+
+set -e
+#set -x
+
+verMode=edge
+
+RED='\033[0;31m'
+GREEN='\033[1;32m'
+NC='\033[0m'
+
+#install main path
+install_main_dir="/usr/local/tarbitrator"
+bin_link_dir="/usr/bin"
+
+service_config_dir="/etc/systemd/system"
+tarbitrator_service_name="tarbitratord"
+csudo=""
+if command -v sudo > /dev/null; then
+ csudo="sudo"
+fi
+
+initd_mod=0
+service_mod=2
+if pidof systemd &> /dev/null; then
+ service_mod=0
+elif $(which service &> /dev/null); then
+ service_mod=1
+ service_config_dir="/etc/init.d"
+ if $(which chkconfig &> /dev/null); then
+ initd_mod=1
+ elif $(which insserv &> /dev/null); then
+ initd_mod=2
+ elif $(which update-rc.d &> /dev/null); then
+ initd_mod=3
+ else
+ service_mod=2
+ fi
+else
+ service_mod=2
+fi
+
+function kill_tarbitrator() {
+ pid=$(ps -ef | grep "tarbitrator" | grep -v "grep" | awk '{print $2}')
+ if [ -n "$pid" ]; then
+ ${csudo} kill -9 $pid || :
+ fi
+}
+
+function clean_bin() {
+ # Remove link
+ ${csudo} rm -f ${bin_link_dir}/tarbitrator || :
+}
+
+function clean_header() {
+ # Remove link
+ ${csudo} rm -f ${inc_link_dir}/taos.h || :
+ ${csudo} rm -f ${inc_link_dir}/taoserror.h || :
+}
+
+function clean_log() {
+ # Remove link
+ ${csudo} rm -rf /arbitrator.log || :
+}
+
+function clean_service_on_systemd() {
+ tarbitratord_service_config="${service_config_dir}/${tarbitrator_service_name}.service"
+
+ if systemctl is-active --quiet ${tarbitrator_service_name}; then
+ echo "jh_iot's tarbitrator is running, stopping it..."
+ ${csudo} systemctl stop ${tarbitrator_service_name} &> /dev/null || echo &> /dev/null
+ fi
+ ${csudo} systemctl disable ${tarbitrator_service_name} &> /dev/null || echo &> /dev/null
+
+ ${csudo} rm -f ${tarbitratord_service_config}
+}
+
+function clean_service_on_sysvinit() {
+ if pidof tarbitrator &> /dev/null; then
+ echo "jh_iot's tarbitrator is running, stopping it..."
+ ${csudo} service tarbitratord stop || :
+ fi
+
+ if ((${initd_mod}==1)); then
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} chkconfig --del tarbitratord || :
+ fi
+ elif ((${initd_mod}==2)); then
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} insserv -r tarbitratord || :
+ fi
+ elif ((${initd_mod}==3)); then
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} update-rc.d -f tarbitratord remove || :
+ fi
+ fi
+
+ ${csudo} rm -f ${service_config_dir}/tarbitratord || :
+
+ if $(which init &> /dev/null); then
+ ${csudo} init q || :
+ fi
+}
+
+function clean_service() {
+ if ((${service_mod}==0)); then
+ clean_service_on_systemd
+ elif ((${service_mod}==1)); then
+ clean_service_on_sysvinit
+ else
+ # must manual stop
+ kill_tarbitrator
+ fi
+}
+
+# Stop service and disable booting start.
+clean_service
+# Remove binary file and links
+clean_bin
+# Remove header file.
+##clean_header
+# Remove log file
+clean_log
+
+${csudo} rm -rf ${install_main_dir}
+
+echo -e "${GREEN}jh_iot's arbitrator is removed successfully!${NC}"
+echo
diff --git a/packaging/tools/remove_arbi_kh.sh b/packaging/tools/remove_arbi_kh.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ec3254b01649add57f9485c59878059e086b2669
--- /dev/null
+++ b/packaging/tools/remove_arbi_kh.sh
@@ -0,0 +1,130 @@
+#!/bin/bash
+#
+# Script to stop the service and uninstall KingHistorian's arbitrator
+
+set -e
+#set -x
+
+verMode=edge
+
+RED='\033[0;31m'
+GREEN='\033[1;32m'
+NC='\033[0m'
+
+#install main path
+install_main_dir="/usr/local/tarbitrator"
+bin_link_dir="/usr/bin"
+
+service_config_dir="/etc/systemd/system"
+tarbitrator_service_name="tarbitratord"
+csudo=""
+if command -v sudo > /dev/null; then
+ csudo="sudo"
+fi
+
+initd_mod=0
+service_mod=2
+if pidof systemd &> /dev/null; then
+ service_mod=0
+elif $(which service &> /dev/null); then
+ service_mod=1
+ service_config_dir="/etc/init.d"
+ if $(which chkconfig &> /dev/null); then
+ initd_mod=1
+ elif $(which insserv &> /dev/null); then
+ initd_mod=2
+ elif $(which update-rc.d &> /dev/null); then
+ initd_mod=3
+ else
+ service_mod=2
+ fi
+else
+ service_mod=2
+fi
+
+function kill_tarbitrator() {
+ pid=$(ps -ef | grep "tarbitrator" | grep -v "grep" | awk '{print $2}')
+ if [ -n "$pid" ]; then
+ ${csudo} kill -9 $pid || :
+ fi
+}
+
+function clean_bin() {
+ # Remove link
+ ${csudo} rm -f ${bin_link_dir}/tarbitrator || :
+}
+
+function clean_header() {
+ # Remove link
+ ${csudo} rm -f ${inc_link_dir}/taos.h || :
+ ${csudo} rm -f ${inc_link_dir}/taoserror.h || :
+}
+
+function clean_log() {
+ # Remove link
+ ${csudo} rm -rf /arbitrator.log || :
+}
+
+function clean_service_on_systemd() {
+ tarbitratord_service_config="${service_config_dir}/${tarbitrator_service_name}.service"
+
+ if systemctl is-active --quiet ${tarbitrator_service_name}; then
+ echo "KingHistorian's tarbitrator is running, stopping it..."
+ ${csudo} systemctl stop ${tarbitrator_service_name} &> /dev/null || echo &> /dev/null
+ fi
+ ${csudo} systemctl disable ${tarbitrator_service_name} &> /dev/null || echo &> /dev/null
+
+ ${csudo} rm -f ${tarbitratord_service_config}
+}
+
+function clean_service_on_sysvinit() {
+ if pidof tarbitrator &> /dev/null; then
+ echo "KingHistorian's tarbitrator is running, stopping it..."
+ ${csudo} service tarbitratord stop || :
+ fi
+
+ if ((${initd_mod}==1)); then
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} chkconfig --del tarbitratord || :
+ fi
+ elif ((${initd_mod}==2)); then
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} insserv -r tarbitratord || :
+ fi
+ elif ((${initd_mod}==3)); then
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} update-rc.d -f tarbitratord remove || :
+ fi
+ fi
+
+ ${csudo} rm -f ${service_config_dir}/tarbitratord || :
+
+ if $(which init &> /dev/null); then
+ ${csudo} init q || :
+ fi
+}
+
+function clean_service() {
+ if ((${service_mod}==0)); then
+ clean_service_on_systemd
+ elif ((${service_mod}==1)); then
+ clean_service_on_sysvinit
+ else
+ # must manual stop
+ kill_tarbitrator
+ fi
+}
+
+# Stop service and disable booting start.
+clean_service
+# Remove binary file and links
+clean_bin
+# Remove header file.
+##clean_header
+# Remove log file
+clean_log
+
+${csudo} rm -rf ${install_main_dir}
+
+echo -e "${GREEN}KingHistorian's arbitrator is removed successfully!${NC}"
+echo
diff --git a/packaging/tools/remove_arbi_power.sh b/packaging/tools/remove_arbi_power.sh
index 077b19ec7d4208c604c2042c2aa1eacab2033c5b..f34cb4ffed63ae4db33080080a24101f44f3389d 100755
--- a/packaging/tools/remove_arbi_power.sh
+++ b/packaging/tools/remove_arbi_power.sh
@@ -127,4 +127,4 @@ clean_log
${csudo} rm -rf ${install_main_dir}
echo -e "${GREEN}PowerDB's arbitrator is removed successfully!${NC}"
-echo
\ No newline at end of file
+echo
diff --git a/packaging/tools/remove_arbi_tq.sh b/packaging/tools/remove_arbi_tq.sh
index 3d99b6d41a74938d74383df3d8cdfc75c2ebb7c8..27c78b28601a4c57482f9fc56a76175baf668948 100755
--- a/packaging/tools/remove_arbi_tq.sh
+++ b/packaging/tools/remove_arbi_tq.sh
@@ -127,4 +127,4 @@ clean_log
${csudo} rm -rf ${install_main_dir}
echo -e "${GREEN}TQ's arbitrator is removed successfully!${NC}"
-echo
\ No newline at end of file
+echo
diff --git a/packaging/tools/remove_client_jh.sh b/packaging/tools/remove_client_jh.sh
new file mode 100755
index 0000000000000000000000000000000000000000..a3f5dfd10debb0a28211b3682becd083d49ca9c6
--- /dev/null
+++ b/packaging/tools/remove_client_jh.sh
@@ -0,0 +1,79 @@
+#!/bin/bash
+#
+# Script to stop the client and uninstall database, but retain the config and log files.
+set -e
+# set -x
+
+RED='\033[0;31m'
+GREEN='\033[1;32m'
+NC='\033[0m'
+
+#install main path
+install_main_dir="/usr/local/jh_taos"
+
+log_link_dir="/usr/local/jh_taos/log"
+cfg_link_dir="/usr/local/jh_taos/cfg"
+bin_link_dir="/usr/bin"
+lib_link_dir="/usr/lib"
+lib64_link_dir="/usr/lib64"
+inc_link_dir="/usr/include"
+
+csudo=""
+if command -v sudo > /dev/null; then
+ csudo="sudo"
+fi
+
+function kill_client() {
+ if [ -n "$(pidof jh_taos)" ]; then
+ ${csudo} kill -9 $pid || :
+ fi
+}
+
+function clean_bin() {
+ # Remove link
+ ${csudo} rm -f ${bin_link_dir}/jh_taos || :
+ ${csudo} rm -f ${bin_link_dir}/jhdemo || :
+ ${csudo} rm -f ${bin_link_dir}/jh_taosdump || :
+ ${csudo} rm -f ${bin_link_dir}/rmjh || :
+ ${csudo} rm -f ${bin_link_dir}/set_core || :
+}
+
+function clean_lib() {
+ # Remove link
+ ${csudo} rm -f ${lib_link_dir}/libtaos.* || :
+ ${csudo} rm -f ${lib64_link_dir}/libtaos.* || :
+}
+
+function clean_header() {
+ # Remove link
+ ${csudo} rm -f ${inc_link_dir}/taos.h || :
+ ${csudo} rm -f ${inc_link_dir}/taoserror.h || :
+}
+
+function clean_config() {
+ # Remove link
+ ${csudo} rm -f ${cfg_link_dir}/* || :
+}
+
+function clean_log() {
+ # Remove link
+ ${csudo} rm -rf ${log_link_dir} || :
+}
+
+# Stop client.
+kill_client
+# Remove binary file and links
+clean_bin
+# Remove header file.
+clean_header
+# Remove lib file
+clean_lib
+# Remove link log directory
+clean_log
+# Remove link configuration file
+clean_config
+
+${csudo} rm -rf ${install_main_dir}
+
+echo -e "${GREEN}jh_iot client is removed successfully!${NC}"
+echo
diff --git a/packaging/tools/remove_client_kh.sh b/packaging/tools/remove_client_kh.sh
new file mode 100755
index 0000000000000000000000000000000000000000..6a44e875e3426b14400508b1bdbd7510c2ae49cb
--- /dev/null
+++ b/packaging/tools/remove_client_kh.sh
@@ -0,0 +1,79 @@
+#!/bin/bash
+#
+# Script to stop the client and uninstall database, but retain the config and log files.
+set -e
+# set -x
+
+RED='\033[0;31m'
+GREEN='\033[1;32m'
+NC='\033[0m'
+
+#install main path
+install_main_dir="/usr/local/kinghistorian"
+
+log_link_dir="/usr/local/kinghistorian/log"
+cfg_link_dir="/usr/local/kinghistorian/cfg"
+bin_link_dir="/usr/bin"
+lib_link_dir="/usr/lib"
+lib64_link_dir="/usr/lib64"
+inc_link_dir="/usr/include"
+
+csudo=""
+if command -v sudo > /dev/null; then
+ csudo="sudo"
+fi
+
+function kill_client() {
+ if [ -n "$(pidof khclient)" ]; then
+ ${csudo} kill -9 $pid || :
+ fi
+}
+
+function clean_bin() {
+ # Remove link
+ ${csudo} rm -f ${bin_link_dir}/khclient || :
+ ${csudo} rm -f ${bin_link_dir}/khdemo || :
+ ${csudo} rm -f ${bin_link_dir}/khdump || :
+ ${csudo} rm -f ${bin_link_dir}/rmkh || :
+ ${csudo} rm -f ${bin_link_dir}/set_core || :
+}
+
+function clean_lib() {
+ # Remove link
+ ${csudo} rm -f ${lib_link_dir}/libtaos.* || :
+ ${csudo} rm -f ${lib64_link_dir}/libtaos.* || :
+}
+
+function clean_header() {
+ # Remove link
+ ${csudo} rm -f ${inc_link_dir}/taos.h || :
+ ${csudo} rm -f ${inc_link_dir}/taoserror.h || :
+}
+
+function clean_config() {
+ # Remove link
+ ${csudo} rm -f ${cfg_link_dir}/* || :
+}
+
+function clean_log() {
+ # Remove link
+ ${csudo} rm -rf ${log_link_dir} || :
+}
+
+# Stop client.
+kill_client
+# Remove binary file and links
+clean_bin
+# Remove header file.
+clean_header
+# Remove lib file
+clean_lib
+# Remove link log directory
+clean_log
+# Remove link configuration file
+clean_config
+
+${csudo} rm -rf ${install_main_dir}
+
+echo -e "${GREEN}KingHistorian client is removed successfully!${NC}"
+echo
diff --git a/packaging/tools/remove_jh.sh b/packaging/tools/remove_jh.sh
new file mode 100755
index 0000000000000000000000000000000000000000..b962b824fdeeda632be28eeeaa97199adcd6ca2c
--- /dev/null
+++ b/packaging/tools/remove_jh.sh
@@ -0,0 +1,209 @@
+#!/bin/bash
+#
+# Script to stop the service and uninstall jh_taos, but retain the config, data and log files.
+
+set -e
+#set -x
+
+verMode=edge
+
+RED='\033[0;31m'
+GREEN='\033[1;32m'
+NC='\033[0m'
+
+#install main path
+install_main_dir="/usr/local/jh_taos"
+data_link_dir="/usr/local/jh_taos/data"
+log_link_dir="/usr/local/jh_taos/log"
+cfg_link_dir="/usr/local/jh_taos/cfg"
+bin_link_dir="/usr/bin"
+lib_link_dir="/usr/lib"
+lib64_link_dir="/usr/lib64"
+inc_link_dir="/usr/include"
+install_nginxd_dir="/usr/local/nginxd"
+
+service_config_dir="/etc/systemd/system"
+service_name="jh_taosd"
+tarbitrator_service_name="tarbitratord"
+nginx_service_name="nginxd"
+csudo=""
+if command -v sudo > /dev/null; then
+ csudo="sudo"
+fi
+
+initd_mod=0
+service_mod=2
+if pidof systemd &> /dev/null; then
+ service_mod=0
+elif $(which service &> /dev/null); then
+ service_mod=1
+ service_config_dir="/etc/init.d"
+ if $(which chkconfig &> /dev/null); then
+ initd_mod=1
+ elif $(which insserv &> /dev/null); then
+ initd_mod=2
+ elif $(which update-rc.d &> /dev/null); then
+ initd_mod=3
+ else
+ service_mod=2
+ fi
+else
+ service_mod=2
+fi
+
+function kill_process() {
+ pid=$(ps -ef | grep "jh_taosd" | grep -v "grep" | awk '{print $2}')
+ if [ -n "$pid" ]; then
+ ${csudo} kill -9 $pid || :
+ fi
+}
+
+function kill_tarbitrator() {
+ pid=$(ps -ef | grep "tarbitrator" | grep -v "grep" | awk '{print $2}')
+ if [ -n "$pid" ]; then
+ ${csudo} kill -9 $pid || :
+ fi
+}
+
+function clean_bin() {
+ # Remove link
+ ${csudo} rm -f ${bin_link_dir}/jh_taos || :
+ ${csudo} rm -f ${bin_link_dir}/jh_taosd || :
+ ${csudo} rm -f ${bin_link_dir}/jhdemo || :
+ ${csudo} rm -f ${bin_link_dir}/jh_taosdump || :
+ ${csudo} rm -f ${bin_link_dir}/rmjh || :
+ ${csudo} rm -f ${bin_link_dir}/tarbitrator || :
+ ${csudo} rm -f ${bin_link_dir}/set_core || :
+}
+
+function clean_lib() {
+ # Remove link
+ ${csudo} rm -f ${lib_link_dir}/libtaos.* || :
+ ${csudo} rm -f ${lib64_link_dir}/libtaos.* || :
+}
+
+function clean_header() {
+ # Remove link
+ ${csudo} rm -f ${inc_link_dir}/taos.h || :
+ ${csudo} rm -f ${inc_link_dir}/taoserror.h || :
+}
+
+function clean_config() {
+ # Remove link
+ ${csudo} rm -f ${cfg_link_dir}/* || :
+}
+
+function clean_log() {
+ # Remove link
+ ${csudo} rm -rf ${log_link_dir} || :
+}
+
+function clean_service_on_systemd() {
+ service_config="${service_config_dir}/${service_name}.service"
+ if systemctl is-active --quiet ${service_name}; then
+ echo "jh_iot's jh_taosd is running, stopping it..."
+ ${csudo} systemctl stop ${service_name} &> /dev/null || echo &> /dev/null
+ fi
+ ${csudo} systemctl disable ${service_name} &> /dev/null || echo &> /dev/null
+ ${csudo} rm -f ${service_config}
+
+ tarbitratord_service_config="${service_config_dir}/${tarbitrator_service_name}.service"
+ if systemctl is-active --quiet ${tarbitrator_service_name}; then
+ echo "jh_iot's tarbitrator is running, stopping it..."
+ ${csudo} systemctl stop ${tarbitrator_service_name} &> /dev/null || echo &> /dev/null
+ fi
+ ${csudo} systemctl disable ${tarbitrator_service_name} &> /dev/null || echo &> /dev/null
+ ${csudo} rm -f ${tarbitratord_service_config}
+
+ if [ "$verMode" == "cluster" ]; then
+ nginx_service_config="${service_config_dir}/${nginx_service_name}.service"
+ if [ -d ${bin_dir}/web ]; then
+ if systemctl is-active --quiet ${nginx_service_name}; then
+ echo "Nginx for jh_iot is running, stopping it..."
+ ${csudo} systemctl stop ${nginx_service_name} &> /dev/null || echo &> /dev/null
+ fi
+ ${csudo} systemctl disable ${nginx_service_name} &> /dev/null || echo &> /dev/null
+
+ ${csudo} rm -f ${nginx_service_config}
+ fi
+ fi
+}
+
+function clean_service_on_sysvinit() {
+ if pidof jh_taosd &> /dev/null; then
+ echo "jh_iot's jh_taosd is running, stopping it..."
+ ${csudo} service jh_taosd stop || :
+ fi
+
+ if pidof tarbitrator &> /dev/null; then
+ echo "jh_iot's tarbitrator is running, stopping it..."
+ ${csudo} service tarbitratord stop || :
+ fi
+
+ if ((${initd_mod}==1)); then
+ if [ -e ${service_config_dir}/jh_taosd ]; then
+ ${csudo} chkconfig --del jh_taosd || :
+ fi
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} chkconfig --del tarbitratord || :
+ fi
+ elif ((${initd_mod}==2)); then
+ if [ -e ${service_config_dir}/jh_taosd ]; then
+ ${csudo} insserv -r jh_taosd || :
+ fi
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} insserv -r tarbitratord || :
+ fi
+ elif ((${initd_mod}==3)); then
+ if [ -e ${service_config_dir}/jh_taosd ]; then
+ ${csudo} update-rc.d -f jh_taosd remove || :
+ fi
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} update-rc.d -f tarbitratord remove || :
+ fi
+ fi
+
+ ${csudo} rm -f ${service_config_dir}/jh_taosd || :
+ ${csudo} rm -f ${service_config_dir}/tarbitratord || :
+
+ if $(which init &> /dev/null); then
+ ${csudo} init q || :
+ fi
+}
+
+function clean_service() {
+ if ((${service_mod}==0)); then
+ clean_service_on_systemd
+ elif ((${service_mod}==1)); then
+ clean_service_on_sysvinit
+ else
+ kill_process
+ kill_tarbitrator
+ fi
+}
+
+# Stop service and disable booting start.
+clean_service
+# Remove binary file and links
+clean_bin
+# Remove header file.
+clean_header
+# Remove lib file
+clean_lib
+# Remove link log directory
+clean_log
+# Remove link configuration file
+clean_config
+# Remove data link directory
+${csudo} rm -rf ${data_link_dir} || :
+
+${csudo} rm -rf ${install_main_dir}
+${csudo} rm -rf ${install_nginxd_dir}
+if [[ -e /etc/os-release ]]; then
+ osinfo=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
+else
+ osinfo=""
+fi
+
+echo -e "${GREEN}jh_iot is removed successfully!${NC}"
+echo
diff --git a/packaging/tools/remove_kh.sh b/packaging/tools/remove_kh.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0055e043e74a3fa287cebbd325f83c7f8f98ca8a
--- /dev/null
+++ b/packaging/tools/remove_kh.sh
@@ -0,0 +1,209 @@
+#!/bin/bash
+#
+# Script to stop the service and uninstall kinghistorian, but retain the config, data and log files.
+
+set -e
+#set -x
+
+verMode=edge
+
+RED='\033[0;31m'
+GREEN='\033[1;32m'
+NC='\033[0m'
+
+#install main path
+install_main_dir="/usr/local/kinghistorian"
+data_link_dir="/usr/local/kinghistorian/data"
+log_link_dir="/usr/local/kinghistorian/log"
+cfg_link_dir="/usr/local/kinghistorian/cfg"
+bin_link_dir="/usr/bin"
+lib_link_dir="/usr/lib"
+lib64_link_dir="/usr/lib64"
+inc_link_dir="/usr/include"
+install_nginxd_dir="/usr/local/nginxd"
+
+service_config_dir="/etc/systemd/system"
+service_name="khserver"
+tarbitrator_service_name="tarbitratord"
+nginx_service_name="nginxd"
+csudo=""
+if command -v sudo > /dev/null; then
+ csudo="sudo"
+fi
+
+initd_mod=0
+service_mod=2
+if pidof systemd &> /dev/null; then
+ service_mod=0
+elif $(which service &> /dev/null); then
+ service_mod=1
+ service_config_dir="/etc/init.d"
+ if $(which chkconfig &> /dev/null); then
+ initd_mod=1
+ elif $(which insserv &> /dev/null); then
+ initd_mod=2
+ elif $(which update-rc.d &> /dev/null); then
+ initd_mod=3
+ else
+ service_mod=2
+ fi
+else
+ service_mod=2
+fi
+
+function kill_process() {
+ pid=$(ps -ef | grep "khserver" | grep -v "grep" | awk '{print $2}')
+ if [ -n "$pid" ]; then
+ ${csudo} kill -9 $pid || :
+ fi
+}
+
+function kill_tarbitrator() {
+ pid=$(ps -ef | grep "tarbitrator" | grep -v "grep" | awk '{print $2}')
+ if [ -n "$pid" ]; then
+ ${csudo} kill -9 $pid || :
+ fi
+}
+
+function clean_bin() {
+ # Remove link
+ ${csudo} rm -f ${bin_link_dir}/khclient || :
+ ${csudo} rm -f ${bin_link_dir}/khserver || :
+ ${csudo} rm -f ${bin_link_dir}/khdemo || :
+ ${csudo} rm -f ${bin_link_dir}/khdump || :
+ ${csudo} rm -f ${bin_link_dir}/rmkh || :
+ ${csudo} rm -f ${bin_link_dir}/tarbitrator || :
+ ${csudo} rm -f ${bin_link_dir}/set_core || :
+}
+
+function clean_lib() {
+ # Remove link
+ ${csudo} rm -f ${lib_link_dir}/libtaos.* || :
+ ${csudo} rm -f ${lib64_link_dir}/libtaos.* || :
+}
+
+function clean_header() {
+ # Remove link
+ ${csudo} rm -f ${inc_link_dir}/taos.h || :
+ ${csudo} rm -f ${inc_link_dir}/taoserror.h || :
+}
+
+function clean_config() {
+ # Remove link
+ ${csudo} rm -f ${cfg_link_dir}/* || :
+}
+
+function clean_log() {
+ # Remove link
+ ${csudo} rm -rf ${log_link_dir} || :
+}
+
+function clean_service_on_systemd() {
+ service_config="${service_config_dir}/${service_name}.service"
+ if systemctl is-active --quiet ${service_name}; then
+ echo "KingHistorian's khserver is running, stopping it..."
+ ${csudo} systemctl stop ${service_name} &> /dev/null || echo &> /dev/null
+ fi
+ ${csudo} systemctl disable ${service_name} &> /dev/null || echo &> /dev/null
+ ${csudo} rm -f ${service_config}
+
+ tarbitratord_service_config="${service_config_dir}/${tarbitrator_service_name}.service"
+ if systemctl is-active --quiet ${tarbitrator_service_name}; then
+ echo "KingHistorian's tarbitrator is running, stopping it..."
+ ${csudo} systemctl stop ${tarbitrator_service_name} &> /dev/null || echo &> /dev/null
+ fi
+ ${csudo} systemctl disable ${tarbitrator_service_name} &> /dev/null || echo &> /dev/null
+ ${csudo} rm -f ${tarbitratord_service_config}
+
+ if [ "$verMode" == "cluster" ]; then
+ nginx_service_config="${service_config_dir}/${nginx_service_name}.service"
+ if [ -d ${bin_dir}/web ]; then
+ if systemctl is-active --quiet ${nginx_service_name}; then
+ echo "Nginx for KingHistorian is running, stopping it..."
+ ${csudo} systemctl stop ${nginx_service_name} &> /dev/null || echo &> /dev/null
+ fi
+ ${csudo} systemctl disable ${nginx_service_name} &> /dev/null || echo &> /dev/null
+
+ ${csudo} rm -f ${nginx_service_config}
+ fi
+ fi
+}
+
+function clean_service_on_sysvinit() {
+ if pidof khserver &> /dev/null; then
+ echo "KingHistorian's khserver is running, stopping it..."
+ ${csudo} service khserver stop || :
+ fi
+
+ if pidof tarbitrator &> /dev/null; then
+ echo "KingHistorian's tarbitrator is running, stopping it..."
+ ${csudo} service tarbitratord stop || :
+ fi
+
+ if ((${initd_mod}==1)); then
+ if [ -e ${service_config_dir}/khserver ]; then
+ ${csudo} chkconfig --del khserver || :
+ fi
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} chkconfig --del tarbitratord || :
+ fi
+ elif ((${initd_mod}==2)); then
+ if [ -e ${service_config_dir}/khserver ]; then
+ ${csudo} insserv -r khserver || :
+ fi
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} insserv -r tarbitratord || :
+ fi
+ elif ((${initd_mod}==3)); then
+ if [ -e ${service_config_dir}/khserver ]; then
+ ${csudo} update-rc.d -f khserver remove || :
+ fi
+ if [ -e ${service_config_dir}/tarbitratord ]; then
+ ${csudo} update-rc.d -f tarbitratord remove || :
+ fi
+ fi
+
+ ${csudo} rm -f ${service_config_dir}/khserver || :
+ ${csudo} rm -f ${service_config_dir}/tarbitratord || :
+
+ if $(which init &> /dev/null); then
+ ${csudo} init q || :
+ fi
+}
+
+function clean_service() {
+ if ((${service_mod}==0)); then
+ clean_service_on_systemd
+ elif ((${service_mod}==1)); then
+ clean_service_on_sysvinit
+ else
+ kill_process
+ kill_tarbitrator
+ fi
+}
+
+# Stop service and disable booting start.
+clean_service
+# Remove binary file and links
+clean_bin
+# Remove header file.
+clean_header
+# Remove lib file
+clean_lib
+# Remove link log directory
+clean_log
+# Remove link configuration file
+clean_config
+# Remove data link directory
+${csudo} rm -rf ${data_link_dir} || :
+
+${csudo} rm -rf ${install_main_dir}
+${csudo} rm -rf ${install_nginxd_dir}
+if [[ -e /etc/os-release ]]; then
+ osinfo=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
+else
+ osinfo=""
+fi
+
+echo -e "${GREEN}KingHistorian is removed successfully!${NC}"
+echo
diff --git a/packaging/tools/remove_power.sh b/packaging/tools/remove_power.sh
index 816869cf444d8001e0c0aae30840d2c40a9e6af4..55abed87da7f9c7ba9375e002aa0a2ffd7fad1ed 100755
--- a/packaging/tools/remove_power.sh
+++ b/packaging/tools/remove_power.sh
@@ -1,6 +1,6 @@
#!/bin/bash
#
-# Script to stop the service and uninstall TDengine, but retain the config, data and log files.
+# Script to stop the service and uninstall PowerDB, but retain the config, data and log files.
set -e
#set -x
@@ -112,7 +112,7 @@ function clean_service_on_systemd() {
tarbitratord_service_config="${service_config_dir}/${tarbitrator_service_name}.service"
if systemctl is-active --quiet ${tarbitrator_service_name}; then
- echo "TDengine tarbitrator is running, stopping it..."
+ echo "PowerDB tarbitrator is running, stopping it..."
${csudo} systemctl stop ${tarbitrator_service_name} &> /dev/null || echo &> /dev/null
fi
${csudo} systemctl disable ${tarbitrator_service_name} &> /dev/null || echo &> /dev/null
@@ -122,7 +122,7 @@ function clean_service_on_systemd() {
nginx_service_config="${service_config_dir}/${nginx_service_name}.service"
if [ -d ${bin_dir}/web ]; then
if systemctl is-active --quiet ${nginx_service_name}; then
- echo "Nginx for TDengine is running, stopping it..."
+ echo "Nginx for PowerDB is running, stopping it..."
${csudo} systemctl stop ${nginx_service_name} &> /dev/null || echo &> /dev/null
fi
${csudo} systemctl disable ${nginx_service_name} &> /dev/null || echo &> /dev/null
@@ -133,9 +133,6 @@ function clean_service_on_systemd() {
}
function clean_service_on_sysvinit() {
- #restart_config_str="power:2345:respawn:${service_config_dir}/powerd start"
- #${csudo} sed -i "\|${restart_config_str}|d" /etc/inittab || :
-
if pidof powerd &> /dev/null; then
echo "PowerDB powerd is running, stopping it..."
${csudo} service powerd stop || :
@@ -183,7 +180,6 @@ function clean_service() {
elif ((${service_mod}==1)); then
clean_service_on_sysvinit
else
- # must manual stop taosd
kill_powerd
kill_tarbitrator
fi
diff --git a/packaging/tools/remove_pro.sh b/packaging/tools/remove_pro.sh
index f6dad22bc21b02a9d717d530c50bc19c5a718478..5906d60197a14a6cbb9862a9cddb278faafa1d7a 100755
--- a/packaging/tools/remove_pro.sh
+++ b/packaging/tools/remove_pro.sh
@@ -177,7 +177,6 @@ function clean_service() {
elif ((${service_mod}==1)); then
clean_service_on_sysvinit
else
- # must manual stop taosd
kill_prodbs
kill_tarbitrator
fi
diff --git a/packaging/tools/remove_tq.sh b/packaging/tools/remove_tq.sh
index 211eed4dff09ab5da00d5c475cd93148b5ce1b24..14e7dd024d8b7b6c6b39567effb5ad6e8a20f8d5 100755
--- a/packaging/tools/remove_tq.sh
+++ b/packaging/tools/remove_tq.sh
@@ -1,6 +1,6 @@
#!/bin/bash
#
-# Script to stop the service and uninstall TDengine, but retain the config, data and log files.
+# Script to stop the service and uninstall TQ, but retain the config, data and log files.
set -e
#set -x
@@ -112,7 +112,7 @@ function clean_service_on_systemd() {
tarbitratord_service_config="${service_config_dir}/${tarbitrator_service_name}.service"
if systemctl is-active --quiet ${tarbitrator_service_name}; then
- echo "TDengine tarbitrator is running, stopping it..."
+ echo "TQ tarbitrator is running, stopping it..."
${csudo} systemctl stop ${tarbitrator_service_name} &> /dev/null || echo &> /dev/null
fi
${csudo} systemctl disable ${tarbitrator_service_name} &> /dev/null || echo &> /dev/null
@@ -122,7 +122,7 @@ function clean_service_on_systemd() {
nginx_service_config="${service_config_dir}/${nginx_service_name}.service"
if [ -d ${bin_dir}/web ]; then
if systemctl is-active --quiet ${nginx_service_name}; then
- echo "Nginx for TDengine is running, stopping it..."
+ echo "Nginx for TQ is running, stopping it..."
${csudo} systemctl stop ${nginx_service_name} &> /dev/null || echo &> /dev/null
fi
${csudo} systemctl disable ${nginx_service_name} &> /dev/null || echo &> /dev/null
@@ -183,7 +183,6 @@ function clean_service() {
elif ((${service_mod}==1)); then
clean_service_on_sysvinit
else
- # must manual stop taosd
kill_tqd
kill_tarbitrator
fi
@@ -212,16 +211,5 @@ else
osinfo=""
fi
-#if echo $osinfo | grep -qwi "ubuntu" ; then
-## echo "this is ubuntu system"
-# ${csudo} rm -f /var/lib/dpkg/info/tdengine* || :
-#elif echo $osinfo | grep -qwi "debian" ; then
-## echo "this is debian system"
-# ${csudo} rm -f /var/lib/dpkg/info/tdengine* || :
-#elif echo $osinfo | grep -qwi "centos" ; then
-## echo "this is centos system"
-# ${csudo} rpm -e --noscripts tdengine || :
-#fi
-
echo -e "${GREEN}TQ is removed successfully!${NC}"
echo
diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
index a9a6943497c5172fda33180d783ad2aad2cb5c74..16d5d97020400780bb180fa4a5289ac6989c8238 100644
--- a/snap/snapcraft.yaml
+++ b/snap/snapcraft.yaml
@@ -1,6 +1,6 @@
name: tdengine
base: core18
-version: '2.2.1.3'
+version: '2.2.2.0'
icon: snap/gui/t-dengine.svg
summary: an open-source big data platform designed and optimized for IoT.
description: |
@@ -72,7 +72,7 @@ parts:
- usr/bin/taosd
- usr/bin/taos
- usr/bin/taosdemo
- - usr/lib/libtaos.so.2.2.1.3
+ - usr/lib/libtaos.so.2.2.2.0
- usr/lib/libtaos.so.1
- usr/lib/libtaos.so
diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt
index 0d06e5d39c0ed1916e0c2af7ccce5918e31ac42f..c8796479982b71aca6fd41c679c7da9e059727f5 100644
--- a/src/client/CMakeLists.txt
+++ b/src/client/CMakeLists.txt
@@ -32,7 +32,9 @@ IF (TD_LINUX)
#MESSAGE(STATUS "build version ${TD_VER_NUMBER}")
SET_TARGET_PROPERTIES(taos PROPERTIES VERSION ${TD_VER_NUMBER} SOVERSION 1)
- ADD_SUBDIRECTORY(tests)
+ IF (NOT TD_NINGSI_60)
+ ADD_SUBDIRECTORY(tests)
+ ENDIF ()
ELSEIF (TD_DARWIN)
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/deps/jni/linux)
@@ -53,8 +55,9 @@ ELSEIF (TD_DARWIN)
#SOVERSION dylib version
#MESSAGE(STATUS "build version ${TD_VER_NUMBER}")
SET_TARGET_PROPERTIES(taos PROPERTIES VERSION ${TD_VER_NUMBER} SOVERSION 1)
-
- ADD_SUBDIRECTORY(tests)
+ IF (NOT TD_NINGSI_60)
+ ADD_SUBDIRECTORY(tests)
+ ENDIF ()
ELSEIF (TD_WINDOWS)
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/deps/jni/windows)
diff --git a/src/client/src/tscAsync.c b/src/client/src/tscAsync.c
index 82be24cff3aa983cf9d1235e07962f0cc04275d2..3e636cdc7bb14dd2c9e7a9a3f474c1105bdabff2 100644
--- a/src/client/src/tscAsync.c
+++ b/src/client/src/tscAsync.c
@@ -236,7 +236,7 @@ void taos_fetch_rows_a(TAOS_RES *tres, __async_cb_func_t fp, void *param) {
return;
}
- if (pRes->qId == 0) {
+ if (pRes->qId == 0 && pSql->cmd.command != TSDB_SQL_RETRIEVE_EMPTY_RESULT) {
tscError("qhandle is invalid");
pRes->code = TSDB_CODE_TSC_INVALID_QHANDLE;
tscAsyncResultOnError(pSql);
diff --git a/src/client/src/tscGlobalmerge.c b/src/client/src/tscGlobalmerge.c
index 130abdf4a73ade3951070a100555d15270c265f2..83822b6d3dd21cf63d9ad6ae0861ed1396b62e45 100644
--- a/src/client/src/tscGlobalmerge.c
+++ b/src/client/src/tscGlobalmerge.c
@@ -33,12 +33,12 @@ typedef struct SCompareParam {
int32_t groupOrderType;
} SCompareParam;
-static bool needToMerge(SSDataBlock* pBlock, SArray* columnIndexList, int32_t index, char **buf) {
+static bool needToMerge(SSDataBlock* pBlock, SArray* columnIndexList, int32_t tsc_index, char **buf) {
int32_t ret = 0;
size_t size = taosArrayGetSize(columnIndexList);
if (size > 0) {
- ret = compare_aRv(pBlock, columnIndexList, (int32_t) size, index, buf, TSDB_ORDER_ASC);
+ ret = compare_aRv(pBlock, columnIndexList, (int32_t) size, tsc_index, buf, TSDB_ORDER_ASC);
}
// if ret == 0, means the result belongs to the same group
@@ -555,9 +555,9 @@ static void savePrevOrderColumns(char** prevRow, SArray* pColumnList, SSDataBloc
int32_t size = (int32_t) taosArrayGetSize(pColumnList);
for(int32_t i = 0; i < size; ++i) {
- SColIndex* index = taosArrayGet(pColumnList, i);
- SColumnInfoData* pColInfo = taosArrayGet(pBlock->pDataBlock, index->colIndex);
- assert(index->colId == pColInfo->info.colId);
+ SColIndex* tsc_index = taosArrayGet(pColumnList, i);
+ SColumnInfoData* pColInfo = taosArrayGet(pBlock->pDataBlock, tsc_index->colIndex);
+ assert(tsc_index->colId == pColInfo->info.colId);
memcpy(prevRow[i], pColInfo->pData + pColInfo->info.bytes * rowIndex, pColInfo->info.bytes);
}
@@ -967,7 +967,6 @@ SSDataBlock* doGlobalAggregate(void* param, bool* newgroup) {
if (pOperator->pRuntimeEnv->pQueryAttr->order.order == TSDB_ORDER_DESC) {
SWAP(w->skey, w->ekey, TSKEY);
- assert(w->skey <= w->ekey);
}
}
}
diff --git a/src/client/src/tscLocal.c b/src/client/src/tscLocal.c
index 461009fdb8540b2ef3e80cff27869bf28416ab97..30e2c8be93fb39d68518639ed484237c802959e3 100644
--- a/src/client/src/tscLocal.c
+++ b/src/client/src/tscLocal.c
@@ -152,7 +152,7 @@ static int32_t tscSetValueToResObj(SSqlObj *pSql, int32_t rowLen) {
static int32_t tscBuildTableSchemaResultFields(SSqlObj *pSql, int32_t numOfCols, int32_t typeColLength,
int32_t noteColLength) {
int32_t rowLen = 0;
- SColumnIndex index = {0};
+ SColumnIndex tsc_index = {0};
pSql->cmd.numOfCols = numOfCols;
@@ -163,7 +163,7 @@ static int32_t tscBuildTableSchemaResultFields(SSqlObj *pSql, int32_t numOfCols,
tstrncpy(f.name, "Field", sizeof(f.name));
SInternalField* pInfo = tscFieldInfoAppend(&pQueryInfo->fieldsInfo, &f);
- pInfo->pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_TS_DUMMY, &index, TSDB_DATA_TYPE_BINARY,
+ pInfo->pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_TS_DUMMY, &tsc_index, TSDB_DATA_TYPE_BINARY,
(TSDB_COL_NAME_LEN - 1) + VARSTR_HEADER_SIZE, -1000, (TSDB_COL_NAME_LEN - 1), false);
rowLen += ((TSDB_COL_NAME_LEN - 1) + VARSTR_HEADER_SIZE);
@@ -173,7 +173,7 @@ static int32_t tscBuildTableSchemaResultFields(SSqlObj *pSql, int32_t numOfCols,
tstrncpy(f.name, "Type", sizeof(f.name));
pInfo = tscFieldInfoAppend(&pQueryInfo->fieldsInfo, &f);
- pInfo->pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_TS_DUMMY, &index, TSDB_DATA_TYPE_BINARY, (int16_t)(typeColLength + VARSTR_HEADER_SIZE),
+ pInfo->pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_TS_DUMMY, &tsc_index, TSDB_DATA_TYPE_BINARY, (int16_t)(typeColLength + VARSTR_HEADER_SIZE),
-1000, typeColLength, false);
rowLen += typeColLength + VARSTR_HEADER_SIZE;
@@ -183,7 +183,7 @@ static int32_t tscBuildTableSchemaResultFields(SSqlObj *pSql, int32_t numOfCols,
tstrncpy(f.name, "Length", sizeof(f.name));
pInfo = tscFieldInfoAppend(&pQueryInfo->fieldsInfo, &f);
- pInfo->pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_TS_DUMMY, &index, TSDB_DATA_TYPE_INT, sizeof(int32_t),
+ pInfo->pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_TS_DUMMY, &tsc_index, TSDB_DATA_TYPE_INT, sizeof(int32_t),
-1000, sizeof(int32_t), false);
rowLen += sizeof(int32_t);
@@ -193,7 +193,7 @@ static int32_t tscBuildTableSchemaResultFields(SSqlObj *pSql, int32_t numOfCols,
tstrncpy(f.name, "Note", sizeof(f.name));
pInfo = tscFieldInfoAppend(&pQueryInfo->fieldsInfo, &f);
- pInfo->pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_TS_DUMMY, &index, TSDB_DATA_TYPE_BINARY, (int16_t)(noteColLength + VARSTR_HEADER_SIZE),
+ pInfo->pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_TS_DUMMY, &tsc_index, TSDB_DATA_TYPE_BINARY, (int16_t)(noteColLength + VARSTR_HEADER_SIZE),
-1000, noteColLength, false);
rowLen += noteColLength + VARSTR_HEADER_SIZE;
@@ -396,7 +396,7 @@ static int32_t tscGetTableTagValue(SCreateBuilder *builder, char *result) {
static int32_t tscSCreateBuildResultFields(SSqlObj *pSql, BuildType type, const char *ddl) {
int32_t rowLen = 0;
int16_t ddlLen = (int16_t)strlen(ddl);
- SColumnIndex index = {0};
+ SColumnIndex tsc_index = {0};
pSql->cmd.numOfCols = 2;
SQueryInfo* pQueryInfo = tscGetQueryInfo(&pSql->cmd);
@@ -414,7 +414,7 @@ static int32_t tscSCreateBuildResultFields(SSqlObj *pSql, BuildType type, const
}
SInternalField* pInfo = tscFieldInfoAppend(&pQueryInfo->fieldsInfo, &f);
- pInfo->pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_TS_DUMMY, &index, TSDB_DATA_TYPE_BINARY, f.bytes, -1000, f.bytes - VARSTR_HEADER_SIZE, false);
+ pInfo->pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_TS_DUMMY, &tsc_index, TSDB_DATA_TYPE_BINARY, f.bytes, -1000, f.bytes - VARSTR_HEADER_SIZE, false);
rowLen += f.bytes;
@@ -427,7 +427,7 @@ static int32_t tscSCreateBuildResultFields(SSqlObj *pSql, BuildType type, const
}
pInfo = tscFieldInfoAppend(&pQueryInfo->fieldsInfo, &f);
- pInfo->pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_TS_DUMMY, &index, TSDB_DATA_TYPE_BINARY,
+ pInfo->pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_TS_DUMMY, &tsc_index, TSDB_DATA_TYPE_BINARY,
(int16_t)(ddlLen + VARSTR_HEADER_SIZE), -1000, ddlLen, false);
rowLen += ddlLen + VARSTR_HEADER_SIZE;
diff --git a/src/client/src/tscParseInsert.c b/src/client/src/tscParseInsert.c
index 0750abdf6ff991d8c19eb63b77c5ba9ff9ddfb03..b8d7e8a32b668db5aa04a167b1c3c649d178df78 100644
--- a/src/client/src/tscParseInsert.c
+++ b/src/client/src/tscParseInsert.c
@@ -91,8 +91,8 @@ int initMemRowBuilder(SMemRowBuilder *pBuilder, uint32_t nRows, uint3
return TSDB_CODE_SUCCESS;
}
-int tsParseTime(SStrToken *pToken, int64_t *time, char **next, char *error, int16_t timePrec) {
- int32_t index = 0;
+int tsParseTime(SStrToken *pToken, int64_t *tsc_time, char **next, char *tsc_error, int16_t timePrec) {
+ int32_t tsc_index = 0;
SStrToken sToken;
int64_t interval;
int64_t useconds = 0;
@@ -106,8 +106,8 @@ int tsParseTime(SStrToken *pToken, int64_t *time, char **next, char *error, int1
useconds = taosStr2int64(pToken->z);
} else {
// strptime("2001-11-12 18:31:01", "%Y-%m-%d %H:%M:%S", &tm);
- if (taosParseTime(pToken->z, time, pToken->n, timePrec, tsDaylight) != TSDB_CODE_SUCCESS) {
- return tscInvalidOperationMsg(error, "invalid timestamp format", pToken->z);
+ if (taosParseTime(pToken->z, tsc_time, pToken->n, timePrec, tsDaylight) != TSDB_CODE_SUCCESS) {
+ return tscInvalidOperationMsg(tsc_error, "invalid timestamp format", pToken->z);
}
return TSDB_CODE_SUCCESS;
@@ -117,7 +117,7 @@ int tsParseTime(SStrToken *pToken, int64_t *time, char **next, char *error, int1
if (isspace(pToken->z[k])) continue;
if (pToken->z[k] == ',') {
*next = pTokenEnd;
- *time = useconds;
+ *tsc_time = useconds;
return 0;
}
@@ -125,21 +125,21 @@ int tsParseTime(SStrToken *pToken, int64_t *time, char **next, char *error, int1
}
/*
- * time expression:
+ * tsc_time expression:
* e.g., now+12a, now-5h
*/
SStrToken valueToken;
- index = 0;
- sToken = tStrGetToken(pTokenEnd, &index, false);
- pTokenEnd += index;
+ tsc_index = 0;
+ sToken = tStrGetToken(pTokenEnd, &tsc_index, false);
+ pTokenEnd += tsc_index;
if (sToken.type == TK_MINUS || sToken.type == TK_PLUS) {
- index = 0;
- valueToken = tStrGetToken(pTokenEnd, &index, false);
- pTokenEnd += index;
+ tsc_index = 0;
+ valueToken = tStrGetToken(pTokenEnd, &tsc_index, false);
+ pTokenEnd += tsc_index;
if (valueToken.n < 2) {
- return tscInvalidOperationMsg(error, "value expected in timestamp", sToken.z);
+ return tscInvalidOperationMsg(tsc_error, "value expected in timestamp", sToken.z);
}
char unit = 0;
@@ -156,7 +156,7 @@ int tsParseTime(SStrToken *pToken, int64_t *time, char **next, char *error, int1
*next = pTokenEnd;
}
- *time = useconds;
+ *tsc_time = useconds;
return TSDB_CODE_SUCCESS;
}
@@ -448,7 +448,7 @@ int32_t tsCheckTimestamp(STableDataBlocks *pDataBlocks, const char *start) {
int tsParseOneRow(char **str, STableDataBlocks *pDataBlocks, int16_t timePrec, int32_t *len, char *tmpTokenBuf,
SInsertStatementParam *pInsertParam) {
- int32_t index = 0;
+ int32_t tsc_index = 0;
SStrToken sToken = {0};
char *row = pDataBlocks->pData + pDataBlocks->size; // skip the SSubmitBlk header
@@ -472,9 +472,9 @@ int tsParseOneRow(char **str, STableDataBlocks *pDataBlocks, int16_t timePrec, i
SSchema *pSchema = &schema[colIndex]; // get colId here
- index = 0;
- sToken = tStrGetToken(*str, &index, true);
- *str += index;
+ tsc_index = 0;
+ sToken = tStrGetToken(*str, &tsc_index, true);
+ *str += tsc_index;
if (sToken.type == TK_QUESTION) {
if (!isParseBindParam) {
@@ -606,7 +606,7 @@ int32_t boundIdxCompar(const void *lhs, const void *rhs) {
int32_t tsParseValues(char **str, STableDataBlocks *pDataBlock, int maxRows, SInsertStatementParam *pInsertParam,
int32_t* numOfRows, char *tmpTokenBuf) {
- int32_t index = 0;
+ int32_t tsc_index = 0;
int32_t code = 0;
(*numOfRows) = 0;
@@ -626,11 +626,11 @@ int32_t tsParseValues(char **str, STableDataBlocks *pDataBlock, int maxRows, SIn
return code;
}
while (1) {
- index = 0;
- sToken = tStrGetToken(*str, &index, false);
+ tsc_index = 0;
+ sToken = tStrGetToken(*str, &tsc_index, false);
if (sToken.n == 0 || sToken.type != TK_LP) break;
- *str += index;
+ *str += tsc_index;
if ((*numOfRows) >= maxRows || pDataBlock->size + extendedRowSize >= pDataBlock->nAllocSize) {
int32_t tSize;
code = tscAllocateMemIfNeed(pDataBlock, extendedRowSize, &tSize);
@@ -651,13 +651,13 @@ int32_t tsParseValues(char **str, STableDataBlocks *pDataBlock, int maxRows, SIn
pDataBlock->size += len;
- index = 0;
- sToken = tStrGetToken(*str, &index, false);
+ tsc_index = 0;
+ sToken = tStrGetToken(*str, &tsc_index, false);
if (sToken.n == 0 || sToken.type != TK_RP) {
return tscSQLSyntaxErrMsg(pInsertParam->msg, ") expected", *str);
}
- *str += index;
+ *str += tsc_index;
(*numOfRows)++;
}
@@ -905,7 +905,7 @@ static int32_t doParseInsertStatement(SInsertStatementParam *pInsertParam, char
}
static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundColumn) {
- int32_t index = 0;
+ int32_t tsc_index = 0;
SStrToken sToken = {0};
SStrToken tableToken = {0};
int32_t code = TSDB_CODE_SUCCESS;
@@ -920,14 +920,14 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
char *sql = *sqlstr;
// get the token of specified table
- index = 0;
- tableToken = tStrGetToken(sql, &index, false);
- sql += index;
+ tsc_index = 0;
+ tableToken = tStrGetToken(sql, &tsc_index, false);
+ sql += tsc_index;
// skip possibly exists column list
- index = 0;
- sToken = tStrGetToken(sql, &index, false);
- sql += index;
+ tsc_index = 0;
+ sToken = tStrGetToken(sql, &tsc_index, false);
+ sql += tsc_index;
int32_t numOfColList = 0;
@@ -936,8 +936,8 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
*boundColumn = &sToken.z[0];
while (1) {
- index = 0;
- sToken = tStrGetToken(sql, &index, false);
+ tsc_index = 0;
+ sToken = tStrGetToken(sql, &tsc_index, false);
if (sToken.type == TK_ILLEGAL) {
return tscSQLSyntaxErrMsg(pCmd->payload, "unrecognized token", sToken.z);
@@ -947,12 +947,12 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
break;
}
- sql += index;
+ sql += tsc_index;
++numOfColList;
}
- sToken = tStrGetToken(sql, &index, false);
- sql += index;
+ sToken = tStrGetToken(sql, &tsc_index, false);
+ sql += tsc_index;
}
if (numOfColList == 0 && (*boundColumn) != NULL) {
@@ -962,9 +962,9 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, TABLE_INDEX);
if (sToken.type == TK_USING) { // create table if not exists according to the super table
- index = 0;
- sToken = tStrGetToken(sql, &index, false);
- sql += index;
+ tsc_index = 0;
+ sToken = tStrGetToken(sql, &tsc_index, false);
+ sql += tsc_index;
//the source super table is moved to the secondary position of the pTableMetaInfo list
if (pQueryInfo->numOfTables < 2) {
@@ -995,8 +995,8 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
SParsedDataColInfo spd = {0};
tscSetBoundColumnInfo(&spd, pTagSchema, tscGetNumOfTags(pSTableMetaInfo->pTableMeta));
- index = 0;
- sToken = tStrGetToken(sql, &index, false);
+ tsc_index = 0;
+ sToken = tStrGetToken(sql, &tsc_index, false);
if (sToken.type != TK_TAGS && sToken.type != TK_LP) {
tscDestroyBoundColumnInfo(&spd);
return tscSQLSyntaxErrMsg(pInsertParam->msg, "keyword TAGS expected", sToken.z);
@@ -1017,16 +1017,16 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
sql = end;
- index = 0; // keywords of "TAGS"
- sToken = tStrGetToken(sql, &index, false);
- sql += index;
+ tsc_index = 0; // keywords of "TAGS"
+ sToken = tStrGetToken(sql, &tsc_index, false);
+ sql += tsc_index;
} else {
- sql += index;
+ sql += tsc_index;
}
- index = 0;
- sToken = tStrGetToken(sql, &index, false);
- sql += index;
+ tsc_index = 0;
+ sToken = tStrGetToken(sql, &tsc_index, false);
+ sql += tsc_index;
if (sToken.type != TK_LP) {
tscDestroyBoundColumnInfo(&spd);
@@ -1042,9 +1042,9 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
for (int i = 0; i < spd.numOfBound; ++i) {
SSchema* pSchema = &pTagSchema[spd.boundedColumns[i]];
- index = 0;
- sToken = tStrGetToken(sql, &index, true);
- sql += index;
+ tsc_index = 0;
+ sToken = tStrGetToken(sql, &tsc_index, true);
+ sql += tsc_index;
if (TK_ILLEGAL == sToken.type) {
tdDestroyKVRowBuilder(&kvRowBuilder);
@@ -1096,9 +1096,9 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
free(row);
pInsertParam->tagData.data = pTag;
- index = 0;
- sToken = tStrGetToken(sql, &index, false);
- sql += index;
+ tsc_index = 0;
+ sToken = tStrGetToken(sql, &tsc_index, false);
+ sql += tsc_index;
if (sToken.n == 0 || sToken.type != TK_RP) {
return tscSQLSyntaxErrMsg(pInsertParam->msg, ") expected", sToken.z);
}
@@ -1107,9 +1107,9 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
* insert into table_name using super_table(tag_name1, tag_name2) tags(tag_val1, tag_val2)
* (normal_col1, normal_col2) values(normal_col1_val, normal_col2_val);
* */
- index = 0;
- sToken = tStrGetToken(sql, &index, false);
- sql += index;
+ tsc_index = 0;
+ sToken = tStrGetToken(sql, &tsc_index, false);
+ sql += tsc_index;
int numOfColsAfterTags = 0;
if (sToken.type == TK_LP) {
if (*boundColumn != NULL) {
@@ -1119,18 +1119,18 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
}
while (1) {
- index = 0;
- sToken = tStrGetToken(sql, &index, false);
+ tsc_index = 0;
+ sToken = tStrGetToken(sql, &tsc_index, false);
if (sToken.type == TK_RP) {
break;
}
- if (sToken.n == 0 || sToken.type == TK_SEMI || index == 0) {
+ if (sToken.n == 0 || sToken.type == TK_SEMI || tsc_index == 0) {
return tscSQLSyntaxErrMsg(pCmd->payload, "unexpected token", sql);
}
- sql += index;
+ sql += tsc_index;
++numOfColsAfterTags;
}
@@ -1138,7 +1138,7 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
return TSDB_CODE_TSC_SQL_SYNTAX_ERROR;
}
- sToken = tStrGetToken(sql, &index, false);
+ sToken = tStrGetToken(sql, &tsc_index, false);
}
sql = sToken.z;
@@ -1213,9 +1213,9 @@ static int32_t parseBoundColumns(SInsertStatementParam *pInsertParam, SParsedDat
int32_t code = TSDB_CODE_SUCCESS;
- int32_t index = 0;
- SStrToken sToken = tStrGetToken(str, &index, false);
- str += index;
+ int32_t tsc_index = 0;
+ SStrToken sToken = tStrGetToken(str, &tsc_index, false);
+ str += tsc_index;
if (sToken.type != TK_LP) {
code = tscSQLSyntaxErrMsg(pInsertParam->msg, "( is expected", sToken.z);
@@ -1225,9 +1225,9 @@ static int32_t parseBoundColumns(SInsertStatementParam *pInsertParam, SParsedDat
bool isOrdered = true;
int32_t lastColIdx = -1; // last column found
while (1) {
- index = 0;
- sToken = tStrGetToken(str, &index, false);
- str += index;
+ tsc_index = 0;
+ sToken = tStrGetToken(str, &tsc_index, false);
+ str += tsc_index;
if (TK_STRING == sToken.type) {
tscDequoteAndTrimToken(&sToken);
@@ -1378,8 +1378,8 @@ int tsParseInsertSql(SSqlObj *pSql) {
tscDebug("0x%"PRIx64" create data block list hashList:%p", pSql->self, pInsertParam->pTableBlockHashList);
while (1) {
- int32_t index = 0;
- SStrToken sToken = tStrGetToken(str, &index, false);
+ int32_t tsc_index = 0;
+ SStrToken sToken = tStrGetToken(str, &tsc_index, false);
// no data in the sql string anymore.
if (sToken.n == 0) {
@@ -1437,9 +1437,9 @@ int tsParseInsertSql(SSqlObj *pSql) {
goto _clean;
}
- index = 0;
- sToken = tStrGetToken(str, &index, false);
- str += index;
+ tsc_index = 0;
+ sToken = tStrGetToken(str, &tsc_index, false);
+ str += tsc_index;
if (sToken.n == 0 || (sToken.type != TK_FILE && sToken.type != TK_VALUES)) {
code = tscSQLSyntaxErrMsg(pInsertParam->msg, "keyword VALUES or FILE required", sToken.z);
@@ -1452,13 +1452,13 @@ int tsParseInsertSql(SSqlObj *pSql) {
goto _clean;
}
- index = 0;
- sToken = tStrGetToken(str, &index, false);
+ tsc_index = 0;
+ sToken = tStrGetToken(str, &tsc_index, false);
if (sToken.type != TK_STRING && sToken.type != TK_ID) {
code = tscSQLSyntaxErrMsg(pInsertParam->msg, "file path is required following keyword FILE", sToken.z);
goto _clean;
}
- str += index;
+ str += tsc_index;
if (sToken.n == 0) {
code = tscSQLSyntaxErrMsg(pInsertParam->msg, "file path is required following keyword FILE", sToken.z);
goto _clean;
@@ -1553,10 +1553,10 @@ int tsInsertInitialCheck(SSqlObj *pSql) {
return TSDB_CODE_TSC_NO_WRITE_AUTH;
}
- int32_t index = 0;
+ int32_t tsc_index = 0;
SSqlCmd *pCmd = &pSql->cmd;
- SStrToken sToken = tStrGetToken(pSql->sqlstr, &index, false);
+ SStrToken sToken = tStrGetToken(pSql->sqlstr, &tsc_index, false);
assert(sToken.type == TK_INSERT || sToken.type == TK_IMPORT);
pCmd->count = 0;
@@ -1566,7 +1566,7 @@ int tsInsertInitialCheck(SSqlObj *pSql) {
SQueryInfo *pQueryInfo = tscGetQueryInfoS(pCmd);
TSDB_QUERY_SET_TYPE(pQueryInfo->type, TSDB_QUERY_TYPE_INSERT);
- sToken = tStrGetToken(pSql->sqlstr, &index, false);
+ sToken = tStrGetToken(pSql->sqlstr, &tsc_index, false);
if (sToken.type != TK_INTO) {
return tscSQLSyntaxErrMsg(pInsertParam->msg, "keyword INTO is expected", sToken.z);
}
diff --git a/src/client/src/tscParseLineProtocol.c b/src/client/src/tscParseLineProtocol.c
index 8f1f21842015cecfdd71486673cba2dcc1dd73a5..e2f05b3e23aa9540fee5dc46094bffa5a57900fb 100644
--- a/src/client/src/tscParseLineProtocol.c
+++ b/src/client/src/tscParseLineProtocol.c
@@ -970,25 +970,25 @@ static int32_t applyChildTableTags(TAOS* taos, char* cTableName, char* sTableNam
taosArraySetSize(tagBinds, numTags);
int isNullColBind = TSDB_TRUE;
for (int j = 0; j < numTags; ++j) {
- TAOS_BIND* bind = taosArrayGet(tagBinds, j);
- bind->is_null = &isNullColBind;
+ TAOS_BIND* tsc_bind = taosArrayGet(tagBinds, j);
+ tsc_bind->is_null = &isNullColBind;
}
for (int j = 0; j < numTags; ++j) {
if (tagKVs[j] == NULL) continue;
TAOS_SML_KV* kv = tagKVs[j];
- TAOS_BIND* bind = taosArrayGet(tagBinds, kv->fieldSchemaIdx);
- bind->buffer_type = kv->type;
- bind->length = malloc(sizeof(uintptr_t*));
- *bind->length = kv->length;
- bind->buffer = kv->value;
- bind->is_null = NULL;
+ TAOS_BIND* tsc_bind = taosArrayGet(tagBinds, kv->fieldSchemaIdx);
+ tsc_bind->buffer_type = kv->type;
+ tsc_bind->length = malloc(sizeof(uintptr_t*));
+ *tsc_bind->length = kv->length;
+ tsc_bind->buffer = kv->value;
+ tsc_bind->is_null = NULL;
}
int32_t code = creatChildTableIfNotExists(taos, cTableName, sTableName, sTableSchema->tags, tagBinds, info);
for (int i = 0; i < taosArrayGetSize(tagBinds); ++i) {
- TAOS_BIND* bind = taosArrayGet(tagBinds, i);
- free(bind->length);
+ TAOS_BIND* tsc_bind = taosArrayGet(tagBinds, i);
+ free(tsc_bind->length);
}
taosArrayDestroy(tagBinds);
return code;
@@ -1014,17 +1014,17 @@ static int32_t applyChildTableFields(TAOS* taos, SSmlSTableSchema* sTableSchema,
}
for (int j = 0; j < numCols; ++j) {
- TAOS_BIND* bind = colBinds + j;
- bind->is_null = &isNullColBind;
+ TAOS_BIND* tsc_bind = colBinds + j;
+ tsc_bind->is_null = &isNullColBind;
}
for (int j = 0; j < point->fieldNum; ++j) {
TAOS_SML_KV* kv = point->fields + j;
- TAOS_BIND* bind = colBinds + kv->fieldSchemaIdx;
- bind->buffer_type = kv->type;
- bind->length = malloc(sizeof(uintptr_t*));
- *bind->length = kv->length;
- bind->buffer = kv->value;
- bind->is_null = NULL;
+ TAOS_BIND* tsc_bind = colBinds + kv->fieldSchemaIdx;
+ tsc_bind->buffer_type = kv->type;
+ tsc_bind->length = malloc(sizeof(uintptr_t*));
+ *tsc_bind->length = kv->length;
+ tsc_bind->buffer = kv->value;
+ tsc_bind->is_null = NULL;
}
taosArrayPush(rowsBind, &colBinds);
}
@@ -1037,8 +1037,8 @@ static int32_t applyChildTableFields(TAOS* taos, SSmlSTableSchema* sTableSchema,
for (int i = 0; i < rows; ++i) {
TAOS_BIND* colBinds = taosArrayGetP(rowsBind, i);
for (int j = 0; j < numCols; ++j) {
- TAOS_BIND* bind = colBinds + j;
- free(bind->length);
+ TAOS_BIND* tsc_bind = colBinds + j;
+ free(tsc_bind->length);
}
free(colBinds);
}
@@ -1794,14 +1794,14 @@ static int32_t convertSmlTimeStamp(TAOS_SML_KV *pVal, char *value,
return TSDB_CODE_SUCCESS;
}
-static int32_t parseSmlTimeStamp(TAOS_SML_KV **pTS, const char **index, SSmlLinesInfo* info) {
+static int32_t parseSmlTimeStamp(TAOS_SML_KV **pTS, const char **tsc_index, SSmlLinesInfo* info) {
const char *start, *cur;
int32_t ret = TSDB_CODE_SUCCESS;
int len = 0;
char key[] = "_ts";
char *value = NULL;
- start = cur = *index;
+ start = cur = *tsc_index;
*pTS = calloc(1, sizeof(TAOS_SML_KV));
while(*cur != '\0') {
@@ -1851,8 +1851,8 @@ static bool checkDuplicateKey(char *key, SHashObj *pHash, SSmlLinesInfo* info) {
return false;
}
-static int32_t parseSmlKey(TAOS_SML_KV *pKV, const char **index, SHashObj *pHash, SSmlLinesInfo* info) {
- const char *cur = *index;
+static int32_t parseSmlKey(TAOS_SML_KV *pKV, const char **tsc_index, SHashObj *pHash, SSmlLinesInfo* info) {
+ const char *cur = *tsc_index;
char key[TSDB_COL_NAME_LEN + 1]; // +1 to avoid key[len] over write
uint16_t len = 0;
@@ -1887,17 +1887,17 @@ static int32_t parseSmlKey(TAOS_SML_KV *pKV, const char **index, SHashObj *pHash
pKV->key = calloc(len + 1, 1);
memcpy(pKV->key, key, len + 1);
//tscDebug("SML:0x%"PRIx64" Key:%s|len:%d", info->id, pKV->key, len);
- *index = cur + 1;
+ *tsc_index = cur + 1;
return TSDB_CODE_SUCCESS;
}
-static bool parseSmlValue(TAOS_SML_KV *pKV, const char **index,
+static bool parseSmlValue(TAOS_SML_KV *pKV, const char **tsc_index,
bool *is_last_kv, SSmlLinesInfo* info) {
const char *start, *cur;
char *value = NULL;
uint16_t len = 0;
- start = cur = *index;
+ start = cur = *tsc_index;
while (1) {
// unescaped ',' or ' ' or '\0' identifies a value
@@ -1928,13 +1928,13 @@ static bool parseSmlValue(TAOS_SML_KV *pKV, const char **index,
}
free(value);
- *index = (*cur == '\0') ? cur : cur + 1;
+ *tsc_index = (*cur == '\0') ? cur : cur + 1;
return TSDB_CODE_SUCCESS;
}
-static int32_t parseSmlMeasurement(TAOS_SML_DATA_POINT *pSml, const char **index,
+static int32_t parseSmlMeasurement(TAOS_SML_DATA_POINT *pSml, const char **tsc_index,
uint8_t *has_tags, SSmlLinesInfo* info) {
- const char *cur = *index;
+ const char *cur = *tsc_index;
uint16_t len = 0;
pSml->stableName = calloc(TSDB_TABLE_NAME_LEN + 1, 1); // +1 to avoid 1772 line over write
@@ -1973,7 +1973,7 @@ static int32_t parseSmlMeasurement(TAOS_SML_DATA_POINT *pSml, const char **index
len++;
}
pSml->stableName[len] = '\0';
- *index = cur + 1;
+ *tsc_index = cur + 1;
tscDebug("SML:0x%"PRIx64" Stable name in measurement:%s|len:%d", info->id, pSml->stableName, len);
return TSDB_CODE_SUCCESS;
@@ -1992,10 +1992,10 @@ static int32_t isValidChildTableName(const char *pTbName, int16_t len) {
static int32_t parseSmlKvPairs(TAOS_SML_KV **pKVs, int *num_kvs,
- const char **index, bool isField,
+ const char **tsc_index, bool isField,
TAOS_SML_DATA_POINT* smlData, SHashObj *pHash,
SSmlLinesInfo* info) {
- const char *cur = *index;
+ const char *cur = *tsc_index;
int32_t ret = TSDB_CODE_SUCCESS;
TAOS_SML_KV *pkv;
bool is_last_kv = false;
@@ -2077,7 +2077,7 @@ static int32_t parseSmlKvPairs(TAOS_SML_KV **pKVs, int *num_kvs,
error:
return ret;
done:
- *index = cur;
+ *tsc_index = cur;
return ret;
}
@@ -2097,13 +2097,13 @@ static void moveTimeStampToFirstKv(TAOS_SML_DATA_POINT** smlData, TAOS_SML_KV *t
}
int32_t tscParseLine(const char* sql, TAOS_SML_DATA_POINT* smlData, SSmlLinesInfo* info) {
- const char* index = sql;
+ const char* tsc_index = sql;
int32_t ret = TSDB_CODE_SUCCESS;
uint8_t has_tags = 0;
TAOS_SML_KV *timestamp = NULL;
SHashObj *keyHashTable = taosHashInit(128, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, false);
- ret = parseSmlMeasurement(smlData, &index, &has_tags, info);
+ ret = parseSmlMeasurement(smlData, &tsc_index, &has_tags, info);
if (ret) {
tscError("SML:0x%"PRIx64" Unable to parse measurement", info->id);
taosHashCleanup(keyHashTable);
@@ -2113,7 +2113,7 @@ int32_t tscParseLine(const char* sql, TAOS_SML_DATA_POINT* smlData, SSmlLinesInf
//Parse Tags
if (has_tags) {
- ret = parseSmlKvPairs(&smlData->tags, &smlData->tagNum, &index, false, smlData, keyHashTable, info);
+ ret = parseSmlKvPairs(&smlData->tags, &smlData->tagNum, &tsc_index, false, smlData, keyHashTable, info);
if (ret) {
tscError("SML:0x%"PRIx64" Unable to parse tag", info->id);
taosHashCleanup(keyHashTable);
@@ -2123,7 +2123,7 @@ int32_t tscParseLine(const char* sql, TAOS_SML_DATA_POINT* smlData, SSmlLinesInf
tscDebug("SML:0x%"PRIx64" Parse tags finished, num of tags:%d", info->id, smlData->tagNum);
//Parse fields
- ret = parseSmlKvPairs(&smlData->fields, &smlData->fieldNum, &index, true, smlData, keyHashTable, info);
+ ret = parseSmlKvPairs(&smlData->fields, &smlData->fieldNum, &tsc_index, true, smlData, keyHashTable, info);
if (ret) {
tscError("SML:0x%"PRIx64" Unable to parse field", info->id);
taosHashCleanup(keyHashTable);
@@ -2133,7 +2133,7 @@ int32_t tscParseLine(const char* sql, TAOS_SML_DATA_POINT* smlData, SSmlLinesInf
taosHashCleanup(keyHashTable);
//Parse timestamp
- ret = parseSmlTimeStamp(×tamp, &index, info);
+ ret = parseSmlTimeStamp(×tamp, &tsc_index, info);
if (ret) {
tscError("SML:0x%"PRIx64" Unable to parse timestamp", info->id);
return ret;
diff --git a/src/client/src/tscPrepare.c b/src/client/src/tscPrepare.c
index 8cc53aab3357d13d65d8e0ab6e3089240024b727..d0ad31902a815edaafaf0da2b6d3fad76a42dc0a 100644
--- a/src/client/src/tscPrepare.c
+++ b/src/client/src/tscPrepare.c
@@ -119,11 +119,11 @@ static int normalStmtAddPart(SNormalStmt* stmt, bool isParam, char* str, uint32_
return TSDB_CODE_SUCCESS;
}
-static int normalStmtBindParam(STscStmt* stmt, TAOS_BIND* bind) {
+static int normalStmtBindParam(STscStmt* stmt, TAOS_BIND* tsc_bind) {
SNormalStmt* normal = &stmt->normal;
for (uint16_t i = 0; i < normal->numParams; ++i) {
- TAOS_BIND* tb = bind + i;
+ TAOS_BIND* tb = tsc_bind + i;
tVariant* var = normal->params + i;
tVariantDestroy(var);
@@ -381,8 +381,8 @@ int32_t fillTablesColumnsNull(SSqlObj* pSql) {
////////////////////////////////////////////////////////////////////////////////
// functions for insertion statement preparation
-static FORCE_INLINE int doBindParam(STableDataBlocks* pBlock, char* data, SParamInfo* param, TAOS_BIND* bind, int32_t colNum) {
- if (bind->is_null != NULL && *(bind->is_null)) {
+static FORCE_INLINE int doBindParam(STableDataBlocks* pBlock, char* data, SParamInfo* param, TAOS_BIND* tsc_bind, int32_t colNum) {
+ if (tsc_bind->is_null != NULL && *(tsc_bind->is_null)) {
setNull(data + param->offset, param->type, param->bytes);
return TSDB_CODE_SUCCESS;
}
@@ -401,35 +401,35 @@ static FORCE_INLINE int doBindParam(STableDataBlocks* pBlock, char* data, SParam
} u;
switch (param->type) {
case TSDB_DATA_TYPE_BOOL: {
- switch (bind->buffer_type) {
+ switch (tsc_bind->buffer_type) {
case TSDB_DATA_TYPE_BOOL: {
- u.v1 = *(int8_t*)bind->buffer;
+ u.v1 = *(int8_t*)tsc_bind->buffer;
if (u.v1==0 || u.v1==1) break;
} break;
case TSDB_DATA_TYPE_TINYINT: {
- u.v1 = *(int8_t*)bind->buffer;
+ u.v1 = *(int8_t*)tsc_bind->buffer;
if (u.v1==0 || u.v1==1) break;
} break;
case TSDB_DATA_TYPE_SMALLINT: {
- u.v1 = (int8_t)*(int16_t*)bind->buffer;
+ u.v1 = (int8_t)*(int16_t*)tsc_bind->buffer;
if (u.v1==0 || u.v1==1) break;
} break;
case TSDB_DATA_TYPE_INT: {
- u.v1 = (int8_t)*(int32_t*)bind->buffer;
+ u.v1 = (int8_t)*(int32_t*)tsc_bind->buffer;
if (u.v1==0 || u.v1==1) break;
} break;
case TSDB_DATA_TYPE_BIGINT: {
- u.v1 = (int8_t)*(int64_t*)bind->buffer;
+ u.v1 = (int8_t)*(int64_t*)tsc_bind->buffer;
if (u.v1==0 || u.v1==1) break;
} break;
case TSDB_DATA_TYPE_BINARY:
case TSDB_DATA_TYPE_NCHAR: {
// "0", "1" convertible
- if (strncmp((const char*)bind->buffer, "0", *bind->length)==0) {
+ if (strncmp((const char*)tsc_bind->buffer, "0", *tsc_bind->length)==0) {
u.v1 = 0;
break;
}
- if (strncmp((const char*)bind->buffer, "1", *bind->length)==0) {
+ if (strncmp((const char*)tsc_bind->buffer, "1", *tsc_bind->length)==0) {
u.v1 = 1;
break;
}
@@ -446,27 +446,27 @@ static FORCE_INLINE int doBindParam(STableDataBlocks* pBlock, char* data, SParam
return TSDB_CODE_SUCCESS;
} break;
case TSDB_DATA_TYPE_TINYINT: {
- switch (bind->buffer_type) {
+ switch (tsc_bind->buffer_type) {
case TSDB_DATA_TYPE_BOOL:
case TSDB_DATA_TYPE_TINYINT: {
- int8_t v = *(int8_t*)bind->buffer;
+ int8_t v = *(int8_t*)tsc_bind->buffer;
u.v1 = v;
if (v >= SCHAR_MIN && v <= SCHAR_MAX) break;
} break;
case TSDB_DATA_TYPE_SMALLINT: {
- int16_t v = *(int16_t*)bind->buffer;
+ int16_t v = *(int16_t*)tsc_bind->buffer;
u.v1 = (int8_t)v;
if (v >= SCHAR_MIN && v <= SCHAR_MAX) break;
return TSDB_CODE_TSC_INVALID_VALUE;
}
case TSDB_DATA_TYPE_INT: {
- int32_t v = *(int32_t*)bind->buffer;
+ int32_t v = *(int32_t*)tsc_bind->buffer;
u.v1 = (int8_t)v;
if (v >= SCHAR_MIN && v <= SCHAR_MAX) break;
return TSDB_CODE_TSC_INVALID_VALUE;
}
case TSDB_DATA_TYPE_BIGINT: {
- int64_t v = *(int64_t*)bind->buffer;
+ int64_t v = *(int64_t*)tsc_bind->buffer;
u.v1 = (int8_t)v;
if (v >= SCHAR_MIN && v <= SCHAR_MAX) break;
return TSDB_CODE_TSC_INVALID_VALUE;
@@ -475,8 +475,8 @@ static FORCE_INLINE int doBindParam(STableDataBlocks* pBlock, char* data, SParam
case TSDB_DATA_TYPE_NCHAR: {
int64_t v;
int n, r;
- r = sscanf((const char*)bind->buffer, "%" PRId64 "%n", &v, &n);
- if (r == 1 && n == strlen((const char*)bind->buffer)) {
+ r = sscanf((const char*)tsc_bind->buffer, "%" PRId64 "%n", &v, &n);
+ if (r == 1 && n == strlen((const char*)tsc_bind->buffer)) {
u.v1 = (int8_t)v;
if (v >= SCHAR_MIN && v <= SCHAR_MAX) break;
}
@@ -493,21 +493,21 @@ static FORCE_INLINE int doBindParam(STableDataBlocks* pBlock, char* data, SParam
return TSDB_CODE_SUCCESS;
}
case TSDB_DATA_TYPE_SMALLINT: {
- switch (bind->buffer_type) {
+ switch (tsc_bind->buffer_type) {
case TSDB_DATA_TYPE_BOOL:
case TSDB_DATA_TYPE_TINYINT:
case TSDB_DATA_TYPE_SMALLINT: {
- int v = *(int16_t*)bind->buffer;
+ int v = *(int16_t*)tsc_bind->buffer;
u.v2 = (int16_t)v;
} break;
case TSDB_DATA_TYPE_INT: {
- int32_t v = *(int32_t*)bind->buffer;
+ int32_t v = *(int32_t*)tsc_bind->buffer;
u.v2 = (int16_t)v;
if (v >= SHRT_MIN && v <= SHRT_MAX) break;
return TSDB_CODE_TSC_INVALID_VALUE;
}
case TSDB_DATA_TYPE_BIGINT: {
- int64_t v = *(int64_t*)bind->buffer;
+ int64_t v = *(int64_t*)tsc_bind->buffer;
u.v2 = (int16_t)v;
if (v >= SHRT_MIN && v <= SHRT_MAX) break;
return TSDB_CODE_TSC_INVALID_VALUE;
@@ -516,8 +516,8 @@ static FORCE_INLINE int doBindParam(STableDataBlocks* pBlock, char* data, SParam
case TSDB_DATA_TYPE_NCHAR: {
int64_t v;
int n, r;
- r = sscanf((const char*)bind->buffer, "%" PRId64 "%n", &v, &n);
- if (r == 1 && n == strlen((const char*)bind->buffer)) {
+ r = sscanf((const char*)tsc_bind->buffer, "%" PRId64 "%n", &v, &n);
+ if (r == 1 && n == strlen((const char*)tsc_bind->buffer)) {
u.v2 = (int16_t)v;
if (v >= SHRT_MIN && v <= SHRT_MAX) break;
}
@@ -534,15 +534,15 @@ static FORCE_INLINE int doBindParam(STableDataBlocks* pBlock, char* data, SParam
return TSDB_CODE_SUCCESS;
}
case TSDB_DATA_TYPE_INT: {
- switch (bind->buffer_type) {
+ switch (tsc_bind->buffer_type) {
case TSDB_DATA_TYPE_BOOL:
case TSDB_DATA_TYPE_TINYINT:
case TSDB_DATA_TYPE_SMALLINT:
case TSDB_DATA_TYPE_INT: {
- u.v4 = *(int32_t*)bind->buffer;
+ u.v4 = *(int32_t*)tsc_bind->buffer;
} break;
case TSDB_DATA_TYPE_BIGINT: {
- int64_t v = *(int64_t*)bind->buffer;
+ int64_t v = *(int64_t*)tsc_bind->buffer;
u.v4 = (int32_t)v;
if (v >= INT_MIN && v <= INT_MAX) break;
return TSDB_CODE_TSC_INVALID_VALUE;
@@ -551,8 +551,8 @@ static FORCE_INLINE int doBindParam(STableDataBlocks* pBlock, char* data, SParam
case TSDB_DATA_TYPE_NCHAR: {
int64_t v;
int n,r;
- r = sscanf((const char*)bind->buffer, "%" PRId64 "%n", &v, &n);
- if (r==1 && n==strlen((const char*)bind->buffer)) {
+ r = sscanf((const char*)tsc_bind->buffer, "%" PRId64 "%n", &v, &n);
+ if (r==1 && n==strlen((const char*)tsc_bind->buffer)) {
u.v4 = (int32_t)v;
if (v >= INT_MIN && v <= INT_MAX) break;
}
@@ -569,35 +569,35 @@ static FORCE_INLINE int doBindParam(STableDataBlocks* pBlock, char* data, SParam
return TSDB_CODE_SUCCESS;
} break;
case TSDB_DATA_TYPE_FLOAT: {
- switch (bind->buffer_type) {
+ switch (tsc_bind->buffer_type) {
case TSDB_DATA_TYPE_BOOL:
case TSDB_DATA_TYPE_TINYINT: {
- u.f4 = *(int8_t*)bind->buffer;
+ u.f4 = *(int8_t*)tsc_bind->buffer;
} break;
case TSDB_DATA_TYPE_SMALLINT: {
- u.f4 = *(int16_t*)bind->buffer;
+ u.f4 = *(int16_t*)tsc_bind->buffer;
} break;
case TSDB_DATA_TYPE_INT: {
- u.f4 = (float)*(int32_t*)bind->buffer;
+ u.f4 = (float)*(int32_t*)tsc_bind->buffer;
// shall we check equality?
} break;
case TSDB_DATA_TYPE_BIGINT: {
- u.f4 = (float)*(int64_t*)bind->buffer;
+ u.f4 = (float)*(int64_t*)tsc_bind->buffer;
// shall we check equality?
} break;
case TSDB_DATA_TYPE_FLOAT: {
- u.f4 = *(float*)bind->buffer;
+ u.f4 = *(float*)tsc_bind->buffer;
} break;
case TSDB_DATA_TYPE_DOUBLE: {
- u.f4 = *(float*)bind->buffer;
+ u.f4 = *(float*)tsc_bind->buffer;
// shall we check equality?
} break;
case TSDB_DATA_TYPE_BINARY:
case TSDB_DATA_TYPE_NCHAR: {
float v;
int n,r;
- r = sscanf((const char*)bind->buffer, "%f%n", &v, &n);
- if (r==1 && n==strlen((const char*)bind->buffer)) {
+ r = sscanf((const char*)tsc_bind->buffer, "%f%n", &v, &n);
+ if (r==1 && n==strlen((const char*)tsc_bind->buffer)) {
u.f4 = v;
break;
}
@@ -612,26 +612,26 @@ static FORCE_INLINE int doBindParam(STableDataBlocks* pBlock, char* data, SParam
return TSDB_CODE_SUCCESS;
} break;
case TSDB_DATA_TYPE_BIGINT: {
- switch (bind->buffer_type) {
+ switch (tsc_bind->buffer_type) {
case TSDB_DATA_TYPE_BOOL:
case TSDB_DATA_TYPE_TINYINT: {
- u.v8 = *(int8_t*)bind->buffer;
+ u.v8 = *(int8_t*)tsc_bind->buffer;
} break;
case TSDB_DATA_TYPE_SMALLINT: {
- u.v8 = *(int16_t*)bind->buffer;
+ u.v8 = *(int16_t*)tsc_bind->buffer;
} break;
case TSDB_DATA_TYPE_INT: {
- u.v8 = *(int32_t*)bind->buffer;
+ u.v8 = *(int32_t*)tsc_bind->buffer;
} break;
case TSDB_DATA_TYPE_BIGINT: {
- u.v8 = *(int64_t*)bind->buffer;
+ u.v8 = *(int64_t*)tsc_bind->buffer;
} break;
case TSDB_DATA_TYPE_BINARY:
case TSDB_DATA_TYPE_NCHAR: {
int64_t v;
int n,r;
- r = sscanf((const char*)bind->buffer, "%" PRId64 "%n", &v, &n);
- if (r==1 && n==strlen((const char*)bind->buffer)) {
+ r = sscanf((const char*)tsc_bind->buffer, "%" PRId64 "%n", &v, &n);
+ if (r==1 && n==strlen((const char*)tsc_bind->buffer)) {
u.v8 = v;
break;
}
@@ -648,32 +648,32 @@ static FORCE_INLINE int doBindParam(STableDataBlocks* pBlock, char* data, SParam
return TSDB_CODE_SUCCESS;
}
case TSDB_DATA_TYPE_DOUBLE: {
- switch (bind->buffer_type) {
+ switch (tsc_bind->buffer_type) {
case TSDB_DATA_TYPE_BOOL:
case TSDB_DATA_TYPE_TINYINT: {
- u.f8 = *(int8_t*)bind->buffer;
+ u.f8 = *(int8_t*)tsc_bind->buffer;
} break;
case TSDB_DATA_TYPE_SMALLINT: {
- u.f8 = *(int16_t*)bind->buffer;
+ u.f8 = *(int16_t*)tsc_bind->buffer;
} break;
case TSDB_DATA_TYPE_INT: {
- u.f8 = *(int32_t*)bind->buffer;
+ u.f8 = *(int32_t*)tsc_bind->buffer;
} break;
case TSDB_DATA_TYPE_BIGINT: {
- u.f8 = (double)*(int64_t*)bind->buffer;
+ u.f8 = (double)*(int64_t*)tsc_bind->buffer;
} break;
case TSDB_DATA_TYPE_FLOAT: {
- u.f8 = *(float*)bind->buffer;
+ u.f8 = *(float*)tsc_bind->buffer;
} break;
case TSDB_DATA_TYPE_DOUBLE: {
- u.f8 = *(double*)bind->buffer;
+ u.f8 = *(double*)tsc_bind->buffer;
} break;
case TSDB_DATA_TYPE_BINARY:
case TSDB_DATA_TYPE_NCHAR: {
double v;
int n,r;
- r = sscanf((const char*)bind->buffer, "%lf%n", &v, &n);
- if (r==1 && n==strlen((const char*)bind->buffer)) {
+ r = sscanf((const char*)tsc_bind->buffer, "%lf%n", &v, &n);
+ if (r==1 && n==strlen((const char*)tsc_bind->buffer)) {
u.f8 = v;
break;
}
@@ -688,15 +688,15 @@ static FORCE_INLINE int doBindParam(STableDataBlocks* pBlock, char* data, SParam
return TSDB_CODE_SUCCESS;
}
case TSDB_DATA_TYPE_TIMESTAMP: {
- switch (bind->buffer_type) {
+ switch (tsc_bind->buffer_type) {
case TSDB_DATA_TYPE_TIMESTAMP: {
- u.v8 = *(int64_t*)bind->buffer;
+ u.v8 = *(int64_t*)tsc_bind->buffer;
} break;
case TSDB_DATA_TYPE_BINARY:
case TSDB_DATA_TYPE_NCHAR: {
// is this the correct way to call taosParseTime?
- int32_t len = (int32_t)*bind->length;
- if (taosParseTime(bind->buffer, &u.v8, len, 3, tsDaylight) == TSDB_CODE_SUCCESS) {
+ int32_t len = (int32_t)*tsc_bind->length;
+ if (taosParseTime(tsc_bind->buffer, &u.v8, len, 3, tsDaylight) == TSDB_CODE_SUCCESS) {
break;
}
return TSDB_CODE_TSC_INVALID_VALUE;
@@ -716,13 +716,13 @@ static FORCE_INLINE int doBindParam(STableDataBlocks* pBlock, char* data, SParam
return TSDB_CODE_SUCCESS;
}
case TSDB_DATA_TYPE_BINARY: {
- switch (bind->buffer_type) {
+ switch (tsc_bind->buffer_type) {
case TSDB_DATA_TYPE_BINARY: {
- if ((*bind->length) > (uintptr_t)param->bytes) {
+ if ((*tsc_bind->length) > (uintptr_t)param->bytes) {
return TSDB_CODE_TSC_INVALID_VALUE;
}
- short size = (short)*bind->length;
- STR_WITH_SIZE_TO_VARSTR(data + param->offset, bind->buffer, size);
+ short size = (short)*tsc_bind->length;
+ STR_WITH_SIZE_TO_VARSTR(data + param->offset, tsc_bind->buffer, size);
return TSDB_CODE_SUCCESS;
}
case TSDB_DATA_TYPE_BOOL:
@@ -740,10 +740,10 @@ static FORCE_INLINE int doBindParam(STableDataBlocks* pBlock, char* data, SParam
}
}
case TSDB_DATA_TYPE_NCHAR: {
- switch (bind->buffer_type) {
+ switch (tsc_bind->buffer_type) {
case TSDB_DATA_TYPE_NCHAR: {
int32_t output = 0;
- if (!taosMbsToUcs4(bind->buffer, *bind->length, varDataVal(data + param->offset), param->bytes - VARSTR_HEADER_SIZE, &output)) {
+ if (!taosMbsToUcs4(tsc_bind->buffer, *tsc_bind->length, varDataVal(data + param->offset), param->bytes - VARSTR_HEADER_SIZE, &output)) {
return TSDB_CODE_TSC_INVALID_VALUE;
}
varDataSetLen(data + param->offset, output);
@@ -770,7 +770,7 @@ static FORCE_INLINE int doBindParam(STableDataBlocks* pBlock, char* data, SParam
}
#endif
- if (bind->buffer_type != param->type) {
+ if (tsc_bind->buffer_type != param->type) {
tscError("column type mismatch");
return TSDB_CODE_TSC_INVALID_VALUE;
}
@@ -780,39 +780,39 @@ static FORCE_INLINE int doBindParam(STableDataBlocks* pBlock, char* data, SParam
case TSDB_DATA_TYPE_BOOL:
case TSDB_DATA_TYPE_TINYINT:
case TSDB_DATA_TYPE_UTINYINT:
- *(uint8_t *)(data + param->offset) = *(uint8_t *)bind->buffer;
+ *(uint8_t *)(data + param->offset) = *(uint8_t *)tsc_bind->buffer;
break;
case TSDB_DATA_TYPE_SMALLINT:
case TSDB_DATA_TYPE_USMALLINT:
- *(uint16_t *)(data + param->offset) = *(uint16_t *)bind->buffer;
+ *(uint16_t *)(data + param->offset) = *(uint16_t *)tsc_bind->buffer;
break;
case TSDB_DATA_TYPE_INT:
case TSDB_DATA_TYPE_UINT:
case TSDB_DATA_TYPE_FLOAT:
- *(uint32_t *)(data + param->offset) = *(uint32_t *)bind->buffer;
+ *(uint32_t *)(data + param->offset) = *(uint32_t *)tsc_bind->buffer;
break;
case TSDB_DATA_TYPE_BIGINT:
case TSDB_DATA_TYPE_UBIGINT:
case TSDB_DATA_TYPE_DOUBLE:
case TSDB_DATA_TYPE_TIMESTAMP:
- *(uint64_t *)(data + param->offset) = *(uint64_t *)bind->buffer;
+ *(uint64_t *)(data + param->offset) = *(uint64_t *)tsc_bind->buffer;
break;
case TSDB_DATA_TYPE_BINARY:
- if ((*bind->length) > (uintptr_t)param->bytes) {
+ if ((*tsc_bind->length) > (uintptr_t)param->bytes) {
tscError("column length is too big");
return TSDB_CODE_TSC_INVALID_VALUE;
}
- size = (short)*bind->length;
- STR_WITH_SIZE_TO_VARSTR(data + param->offset, bind->buffer, size);
+ size = (short)*tsc_bind->length;
+ STR_WITH_SIZE_TO_VARSTR(data + param->offset, tsc_bind->buffer, size);
return TSDB_CODE_SUCCESS;
case TSDB_DATA_TYPE_NCHAR: {
int32_t output = 0;
- if (!taosMbsToUcs4(bind->buffer, *bind->length, varDataVal(data + param->offset), param->bytes - VARSTR_HEADER_SIZE, &output)) {
+ if (!taosMbsToUcs4(tsc_bind->buffer, *tsc_bind->length, varDataVal(data + param->offset), param->bytes - VARSTR_HEADER_SIZE, &output)) {
tscError("convert nchar failed");
return TSDB_CODE_TSC_INVALID_VALUE;
}
@@ -887,27 +887,27 @@ static int32_t insertStmtGenBlock(STscStmt* pStmt, STableDataBlocks** pBlock, ST
}
-static int doBindBatchParam(STableDataBlocks* pBlock, SParamInfo* param, TAOS_MULTI_BIND* bind, int32_t rowNum) {
- if (bind->buffer_type != param->type || !isValidDataType(param->type)) {
+static int doBindBatchParam(STableDataBlocks* pBlock, SParamInfo* param, TAOS_MULTI_BIND* tsc_bind, int32_t rowNum) {
+ if (tsc_bind->buffer_type != param->type || !isValidDataType(param->type)) {
tscError("column mismatch or invalid");
return TSDB_CODE_TSC_INVALID_VALUE;
}
- if (IS_VAR_DATA_TYPE(param->type) && bind->length == NULL) {
+ if (IS_VAR_DATA_TYPE(param->type) && tsc_bind->length == NULL) {
tscError("BINARY/NCHAR no length");
return TSDB_CODE_TSC_INVALID_VALUE;
}
- for (int i = 0; i < bind->num; ++i) {
+ for (int i = 0; i < tsc_bind->num; ++i) {
char* data = pBlock->pData + sizeof(SSubmitBlk) + pBlock->rowSize * (rowNum + i);
- if (bind->is_null != NULL && bind->is_null[i]) {
+ if (tsc_bind->is_null != NULL && tsc_bind->is_null[i]) {
setNull(data + param->offset, param->type, param->bytes);
continue;
}
if (!IS_VAR_DATA_TYPE(param->type)) {
- memcpy(data + param->offset, (char *)bind->buffer + bind->buffer_length * i, tDataTypes[param->type].bytes);
+ memcpy(data + param->offset, (char *)tsc_bind->buffer + tsc_bind->buffer_length * i, tDataTypes[param->type].bytes);
if (param->offset == 0) {
if (tsCheckTimestamp(pBlock, data + param->offset) != TSDB_CODE_SUCCESS) {
@@ -916,21 +916,21 @@ static int doBindBatchParam(STableDataBlocks* pBlock, SParamInfo* param, TAOS_MU
}
}
} else if (param->type == TSDB_DATA_TYPE_BINARY) {
- if (bind->length[i] > (uintptr_t)param->bytes) {
- tscError("binary length too long, ignore it, max:%d, actual:%d", param->bytes, (int32_t)bind->length[i]);
+ if (tsc_bind->length[i] > (uintptr_t)param->bytes) {
+ tscError("binary length too long, ignore it, max:%d, actual:%d", param->bytes, (int32_t)tsc_bind->length[i]);
return TSDB_CODE_TSC_INVALID_VALUE;
}
- int16_t bsize = (short)bind->length[i];
- STR_WITH_SIZE_TO_VARSTR(data + param->offset, (char *)bind->buffer + bind->buffer_length * i, bsize);
+ int16_t bsize = (short)tsc_bind->length[i];
+ STR_WITH_SIZE_TO_VARSTR(data + param->offset, (char *)tsc_bind->buffer + tsc_bind->buffer_length * i, bsize);
} else if (param->type == TSDB_DATA_TYPE_NCHAR) {
- if (bind->length[i] > (uintptr_t)param->bytes) {
- tscError("nchar string length too long, ignore it, max:%d, actual:%d", param->bytes, (int32_t)bind->length[i]);
+ if (tsc_bind->length[i] > (uintptr_t)param->bytes) {
+ tscError("nchar string length too long, ignore it, max:%d, actual:%d", param->bytes, (int32_t)tsc_bind->length[i]);
return TSDB_CODE_TSC_INVALID_VALUE;
}
int32_t output = 0;
- if (!taosMbsToUcs4((char *)bind->buffer + bind->buffer_length * i, bind->length[i], varDataVal(data + param->offset), param->bytes - VARSTR_HEADER_SIZE, &output)) {
- tscError("convert nchar string to UCS4_LE failed:%s", (char*)((char *)bind->buffer + bind->buffer_length * i));
+ if (!taosMbsToUcs4((char *)tsc_bind->buffer + tsc_bind->buffer_length * i, tsc_bind->length[i], varDataVal(data + param->offset), param->bytes - VARSTR_HEADER_SIZE, &output)) {
+ tscError("convert nchar string to UCS4_LE failed:%s", (char*)((char *)tsc_bind->buffer + tsc_bind->buffer_length * i));
return TSDB_CODE_TSC_INVALID_VALUE;
}
@@ -941,7 +941,7 @@ static int doBindBatchParam(STableDataBlocks* pBlock, SParamInfo* param, TAOS_MU
return TSDB_CODE_SUCCESS;
}
-static int insertStmtBindParam(STscStmt* stmt, TAOS_BIND* bind) {
+static int insertStmtBindParam(STscStmt* stmt, TAOS_BIND* tsc_bind) {
SSqlCmd* pCmd = &stmt->pSql->cmd;
STscStmt* pStmt = (STscStmt*)stmt;
@@ -993,7 +993,7 @@ static int insertStmtBindParam(STscStmt* stmt, TAOS_BIND* bind) {
for (uint32_t j = 0; j < pBlock->numOfParams; ++j) {
SParamInfo* param = &pBlock->params[j];
- int code = doBindParam(pBlock, data, param, &bind[param->idx], 1);
+ int code = doBindParam(pBlock, data, param, &tsc_bind[param->idx], 1);
if (code != TSDB_CODE_SUCCESS) {
tscDebug("0x%"PRIx64" bind column %d: type mismatch or invalid", pStmt->pSql->self, param->idx);
return invalidOperationMsg(tscGetErrorMsgPayload(&stmt->pSql->cmd), "bind column type mismatch or invalid");
@@ -1004,10 +1004,10 @@ static int insertStmtBindParam(STscStmt* stmt, TAOS_BIND* bind) {
}
-static int insertStmtBindParamBatch(STscStmt* stmt, TAOS_MULTI_BIND* bind, int colIdx) {
+static int insertStmtBindParamBatch(STscStmt* stmt, TAOS_MULTI_BIND* tsc_bind, int colIdx) {
SSqlCmd* pCmd = &stmt->pSql->cmd;
STscStmt* pStmt = (STscStmt*)stmt;
- int rowNum = bind->num;
+ int rowNum = tsc_bind->num;
STableDataBlocks* pBlock = NULL;
@@ -1061,15 +1061,15 @@ static int insertStmtBindParamBatch(STscStmt* stmt, TAOS_MULTI_BIND* bind, int c
if (colIdx == -1) {
for (uint32_t j = 0; j < pBlock->numOfParams; ++j) {
SParamInfo* param = &pBlock->params[j];
- if (bind[param->idx].num != rowNum) {
- tscError("0x%"PRIx64" param %d: num[%d:%d] not match", pStmt->pSql->self, param->idx, rowNum, bind[param->idx].num);
- return invalidOperationMsg(tscGetErrorMsgPayload(&stmt->pSql->cmd), "bind row num mismatch");
+ if (tsc_bind[param->idx].num != rowNum) {
+ tscError("0x%"PRIx64" param %d: num[%d:%d] not match", pStmt->pSql->self, param->idx, rowNum, tsc_bind[param->idx].num);
+ return invalidOperationMsg(tscGetErrorMsgPayload(&stmt->pSql->cmd), "tsc_bind row num mismatch");
}
- int code = doBindBatchParam(pBlock, param, &bind[param->idx], pCmd->batchSize);
+ int code = doBindBatchParam(pBlock, param, &tsc_bind[param->idx], pCmd->batchSize);
if (code != TSDB_CODE_SUCCESS) {
tscError("0x%"PRIx64" bind column %d: type mismatch or invalid", pStmt->pSql->self, param->idx);
- return invalidOperationMsg(tscGetErrorMsgPayload(&stmt->pSql->cmd), "bind column type mismatch or invalid");
+ return invalidOperationMsg(tscGetErrorMsgPayload(&stmt->pSql->cmd), "tsc_bind column type mismatch or invalid");
}
}
@@ -1077,7 +1077,7 @@ static int insertStmtBindParamBatch(STscStmt* stmt, TAOS_MULTI_BIND* bind, int c
} else {
SParamInfo* param = &pBlock->params[colIdx];
- int code = doBindBatchParam(pBlock, param, bind, pCmd->batchSize);
+ int code = doBindBatchParam(pBlock, param, tsc_bind, pCmd->batchSize);
if (code != TSDB_CODE_SUCCESS) {
tscError("0x%"PRIx64" bind column %d: type mismatch or invalid", pStmt->pSql->self, param->idx);
return invalidOperationMsg(tscGetErrorMsgPayload(&stmt->pSql->cmd), "bind column type mismatch or invalid");
@@ -1164,7 +1164,7 @@ static int insertStmtExecute(STscStmt* stmt) {
SSqlCmd* pCmd = &stmt->pSql->cmd;
if (pCmd->batchSize == 0) {
tscError("no records bind");
- return invalidOperationMsg(tscGetErrorMsgPayload(&stmt->pSql->cmd), "no records bind");
+ return invalidOperationMsg(tscGetErrorMsgPayload(&stmt->pSql->cmd), "no records tsc_bind");
}
if (taosHashGetSize(pCmd->insertParam.pTableBlockHashList) == 0) {
@@ -1306,8 +1306,8 @@ int stmtParseInsertTbTags(SSqlObj* pSql, STscStmt* pStmt) {
return ret;
}
- int32_t index = 0;
- SStrToken sToken = tStrGetToken(pCmd->insertParam.sql, &index, false);
+ int32_t tsc_index = 0;
+ SStrToken sToken = tStrGetToken(pCmd->insertParam.sql, &tsc_index, false);
if (sToken.n == 0) {
tscError("table is is expected, sql:%s", pCmd->insertParam.sql);
return tscSQLSyntaxErrMsg(pCmd->payload, "table name is expected", pCmd->insertParam.sql);
@@ -1327,7 +1327,7 @@ int stmtParseInsertTbTags(SSqlObj* pSql, STscStmt* pStmt) {
pStmt->mtb.tagSet = true;
- sToken = tStrGetToken(pCmd->insertParam.sql, &index, false);
+ sToken = tStrGetToken(pCmd->insertParam.sql, &tsc_index, false);
if (sToken.n > 0 && (sToken.type == TK_VALUES || sToken.type == TK_LP)) {
return TSDB_CODE_SUCCESS;
}
@@ -1337,14 +1337,14 @@ int stmtParseInsertTbTags(SSqlObj* pSql, STscStmt* pStmt) {
return tscSQLSyntaxErrMsg(pCmd->payload, "keywords USING is expected", sToken.z ? sToken.z : pCmd->insertParam.sql);
}
- sToken = tStrGetToken(pCmd->insertParam.sql, &index, false);
+ sToken = tStrGetToken(pCmd->insertParam.sql, &tsc_index, false);
if (sToken.n <= 0 || ((sToken.type != TK_ID) && (sToken.type != TK_STRING))) {
tscError("invalid token, sql:%s", pCmd->insertParam.sql);
return tscSQLSyntaxErrMsg(pCmd->payload, "invalid token", sToken.z ? sToken.z : pCmd->insertParam.sql);
}
pStmt->mtb.stbname = sToken;
- sToken = tStrGetToken(pCmd->insertParam.sql, &index, false);
+ sToken = tStrGetToken(pCmd->insertParam.sql, &tsc_index, false);
if (sToken.n <= 0 || ((sToken.type != TK_TAGS) && (sToken.type != TK_LP))) {
tscError("invalid token, sql:%s", pCmd->insertParam.sql);
return tscSQLSyntaxErrMsg(pCmd->payload, "invalid token", sToken.z ? sToken.z : pCmd->insertParam.sql);
@@ -1355,9 +1355,9 @@ int stmtParseInsertTbTags(SSqlObj* pSql, STscStmt* pStmt) {
if (sToken.type == TK_LP) {
pStmt->mtb.tagColSet = true;
pStmt->mtb.tagCols = sToken;
- int32_t tagColsStart = index;
+ int32_t tagColsStart = tsc_index;
while (1) {
- sToken = tStrGetToken(pCmd->insertParam.sql, &index, false);
+ sToken = tStrGetToken(pCmd->insertParam.sql, &tsc_index, false);
if (sToken.type == TK_ILLEGAL) {
return tscSQLSyntaxErrMsg(pCmd->payload, "unrecognized token", sToken.z);
}
@@ -1372,16 +1372,16 @@ int stmtParseInsertTbTags(SSqlObj* pSql, STscStmt* pStmt) {
tscError("tag column list expected, sql:%s", pCmd->insertParam.sql);
return tscSQLSyntaxErrMsg(pCmd->payload, "tag column list expected", pCmd->insertParam.sql);
}
- pStmt->mtb.tagCols.n = index - tagColsStart + 1;
+ pStmt->mtb.tagCols.n = tsc_index - tagColsStart + 1;
- sToken = tStrGetToken(pCmd->insertParam.sql, &index, false);
+ sToken = tStrGetToken(pCmd->insertParam.sql, &tsc_index, false);
if (sToken.n <= 0 || sToken.type != TK_TAGS) {
tscError("keyword TAGS expected, sql:%s", pCmd->insertParam.sql);
return tscSQLSyntaxErrMsg(pCmd->payload, "keyword TAGS expected", sToken.z ? sToken.z : pCmd->insertParam.sql);
}
}
- sToken = tStrGetToken(pCmd->insertParam.sql, &index, false);
+ sToken = tStrGetToken(pCmd->insertParam.sql, &tsc_index, false);
if (sToken.n <= 0 || sToken.type != TK_LP) {
tscError("( expected, sql:%s", pCmd->insertParam.sql);
return tscSQLSyntaxErrMsg(pCmd->payload, "( expected", sToken.z ? sToken.z : pCmd->insertParam.sql);
@@ -1392,7 +1392,7 @@ int stmtParseInsertTbTags(SSqlObj* pSql, STscStmt* pStmt) {
int32_t loopCont = 1;
while (loopCont) {
- sToken = tStrGetToken(pCmd->insertParam.sql, &index, false);
+ sToken = tStrGetToken(pCmd->insertParam.sql, &tsc_index, false);
if (sToken.n <= 0) {
tscError("unexpected sql end, sql:%s", pCmd->insertParam.sql);
return tscSQLSyntaxErrMsg(pCmd->payload, "unexpected sql end", pCmd->insertParam.sql);
@@ -1423,7 +1423,7 @@ int stmtParseInsertTbTags(SSqlObj* pSql, STscStmt* pStmt) {
return tscSQLSyntaxErrMsg(pCmd->payload, "not match tags", pCmd->insertParam.sql);
}
- sToken = tStrGetToken(pCmd->insertParam.sql, &index, false);
+ sToken = tStrGetToken(pCmd->insertParam.sql, &tsc_index, false);
if (sToken.n <= 0 || (sToken.type != TK_VALUES && sToken.type != TK_LP)) {
tscError("sql error, sql:%s", pCmd->insertParam.sql);
return tscSQLSyntaxErrMsg(pCmd->payload, "sql error", sToken.z ? sToken.z : pCmd->insertParam.sql);
@@ -1871,20 +1871,20 @@ int taos_stmt_close(TAOS_STMT* stmt) {
STMT_RET(TSDB_CODE_SUCCESS);
}
-int taos_stmt_bind_param(TAOS_STMT* stmt, TAOS_BIND* bind) {
+int taos_stmt_bind_param(TAOS_STMT* stmt, TAOS_BIND* tsc_bind) {
STscStmt* pStmt = (STscStmt*)stmt;
STMT_CHECK
if (pStmt->isInsert) {
if (pStmt->multiTbInsert) {
if (pStmt->last != STMT_SETTBNAME && pStmt->last != STMT_ADD_BATCH) {
- tscError("0x%"PRIx64" bind param status error, last:%d", pStmt->pSql->self, pStmt->last);
- STMT_RET(invalidOperationMsg(tscGetErrorMsgPayload(&pStmt->pSql->cmd), "bind param status error"));
+ tscError("0x%"PRIx64" tsc_bind param status error, last:%d", pStmt->pSql->self, pStmt->last);
+ STMT_RET(invalidOperationMsg(tscGetErrorMsgPayload(&pStmt->pSql->cmd), "tsc_bind param status error"));
}
} else {
if (pStmt->last != STMT_PREPARE && pStmt->last != STMT_ADD_BATCH && pStmt->last != STMT_EXECUTE) {
- tscError("0x%"PRIx64" bind param status error, last:%d", pStmt->pSql->self, pStmt->last);
- STMT_RET(invalidOperationMsg(tscGetErrorMsgPayload(&pStmt->pSql->cmd), "bind param status error"));
+ tscError("0x%"PRIx64" tsc_bind param status error, last:%d", pStmt->pSql->self, pStmt->last);
+ STMT_RET(invalidOperationMsg(tscGetErrorMsgPayload(&pStmt->pSql->cmd), "tsc_bind param status error"));
}
}
@@ -1892,18 +1892,18 @@ int taos_stmt_bind_param(TAOS_STMT* stmt, TAOS_BIND* bind) {
tscDebug("tableId:%" PRIu64 ", try to bind one row", pStmt->mtb.currentUid);
- STMT_RET(insertStmtBindParam(pStmt, bind));
+ STMT_RET(insertStmtBindParam(pStmt, tsc_bind));
} else {
- STMT_RET(normalStmtBindParam(pStmt, bind));
+ STMT_RET(normalStmtBindParam(pStmt, tsc_bind));
}
}
-int taos_stmt_bind_param_batch(TAOS_STMT* stmt, TAOS_MULTI_BIND* bind) {
+int taos_stmt_bind_param_batch(TAOS_STMT* stmt, TAOS_MULTI_BIND* tsc_bind) {
STscStmt* pStmt = (STscStmt*)stmt;
STMT_CHECK
- if (bind == NULL || bind->num <= 0 || bind->num > INT16_MAX) {
+ if (tsc_bind == NULL || tsc_bind->num <= 0 || tsc_bind->num > INT16_MAX) {
tscError("0x%"PRIx64" invalid parameter", pStmt->pSql->self);
STMT_RET(invalidOperationMsg(tscGetErrorMsgPayload(&pStmt->pSql->cmd), "invalid bind param"));
}
@@ -1927,14 +1927,14 @@ int taos_stmt_bind_param_batch(TAOS_STMT* stmt, TAOS_MULTI_BIND* bind) {
pStmt->last = STMT_BIND;
- STMT_RET(insertStmtBindParamBatch(pStmt, bind, -1));
+ STMT_RET(insertStmtBindParamBatch(pStmt, tsc_bind, -1));
}
-int taos_stmt_bind_single_param_batch(TAOS_STMT* stmt, TAOS_MULTI_BIND* bind, int colIdx) {
+int taos_stmt_bind_single_param_batch(TAOS_STMT* stmt, TAOS_MULTI_BIND* tsc_bind, int colIdx) {
STscStmt* pStmt = (STscStmt*)stmt;
STMT_CHECK
- if (bind == NULL || bind->num <= 0 || bind->num > INT16_MAX || colIdx < 0) {
+ if (tsc_bind == NULL || tsc_bind->num <= 0 || tsc_bind->num > INT16_MAX || colIdx < 0) {
tscError("0x%"PRIx64" invalid parameter", pStmt->pSql->self);
STMT_RET(invalidOperationMsg(tscGetErrorMsgPayload(&pStmt->pSql->cmd), "invalid bind param"));
}
@@ -1958,7 +1958,7 @@ int taos_stmt_bind_single_param_batch(TAOS_STMT* stmt, TAOS_MULTI_BIND* bind, in
pStmt->last = STMT_BIND_COL;
- STMT_RET(insertStmtBindParamBatch(pStmt, bind, colIdx));
+ STMT_RET(insertStmtBindParamBatch(pStmt, tsc_bind, colIdx));
}
int taos_stmt_add_batch(TAOS_STMT* stmt) {
diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c
index 9365db99d13020d544e00a33265704bb7ec77140..e86b8d9ea9a07f540acee21dd315247ee120c708 100644
--- a/src/client/src/tscSQLParser.c
+++ b/src/client/src/tscSQLParser.c
@@ -48,7 +48,7 @@
#define COLUMN_INDEX_INITIAL_VAL (-2)
#define COLUMN_INDEX_INITIALIZER \
{ COLUMN_INDEX_INITIAL_VAL, COLUMN_INDEX_INITIAL_VAL }
-#define COLUMN_INDEX_VALIDE(index) (((index).tableIndex >= 0) && ((index).columnIndex >= TSDB_TBNAME_COLUMN_INDEX))
+#define COLUMN_INDEX_VALIDE(tsc_index) (((tsc_index).tableIndex >= 0) && ((tsc_index).columnIndex >= TSDB_TBNAME_COLUMN_INDEX))
#define TBNAME_LIST_SEP ","
typedef struct SColumnList { // todo refactor
@@ -303,21 +303,21 @@ static int32_t invalidOperationMsg(char* dstBuffer, const char* errMsg) {
}
static int convertTimestampStrToInt64(tVariant *pVar, int32_t precision) {
- int64_t time = 0;
+ int64_t tsc_time = 0;
strdequote(pVar->pz);
char* seg = strnchr(pVar->pz, '-', pVar->nLen, false);
if (seg != NULL) {
- if (taosParseTime(pVar->pz, &time, pVar->nLen, precision, tsDaylight) != TSDB_CODE_SUCCESS) {
+ if (taosParseTime(pVar->pz, &tsc_time, pVar->nLen, precision, tsDaylight) != TSDB_CODE_SUCCESS) {
return -1;
}
} else {
- if (tVariantDump(pVar, (char*)&time, TSDB_DATA_TYPE_BIGINT, true)) {
+ if (tVariantDump(pVar, (char*)&tsc_time, TSDB_DATA_TYPE_BIGINT, true)) {
return -1;
}
}
tVariantDestroy(pVar);
- tVariantCreateFromBinary(pVar, (char*)&time, 0, TSDB_DATA_TYPE_BIGINT);
+ tVariantCreateFromBinary(pVar, (char*)&tsc_time, 0, TSDB_DATA_TYPE_BIGINT);
return 0;
}
static int setColumnFilterInfoForTimestamp(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tVariant* pVar) {
@@ -1038,8 +1038,8 @@ static int32_t addPrimaryTsColumnForTimeWindowQuery(SQueryInfo* pQueryInfo, SSql
SSchema s = {.bytes = TSDB_KEYSIZE, .type = TSDB_DATA_TYPE_TIMESTAMP, .colId = PRIMARYKEY_TIMESTAMP_COL_INDEX};
tstrncpy(s.name, aAggs[TSDB_FUNC_TS].name, sizeof(s.name));
- SColumnIndex index = {tableIndex, PRIMARYKEY_TIMESTAMP_COL_INDEX};
- tscAddFuncInSelectClause(pQueryInfo, 0, TSDB_FUNC_TS, &index, &s, TSDB_COL_NORMAL, getNewResColId(pCmd));
+ SColumnIndex tsc_index = {tableIndex, PRIMARYKEY_TIMESTAMP_COL_INDEX};
+ tscAddFuncInSelectClause(pQueryInfo, 0, TSDB_FUNC_TS, &tsc_index, &s, TSDB_COL_NORMAL, getNewResColId(pCmd));
return TSDB_CODE_SUCCESS;
}
@@ -1168,17 +1168,17 @@ static int32_t validateStateWindowNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SS
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg4);
}
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
- if (getColumnIndexByName(col, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
+ if (getColumnIndexByName(col, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
- STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
+ STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
STableMeta* pTableMeta = pTableMetaInfo->pTableMeta;
int32_t numOfCols = tscGetNumOfColumns(pTableMeta);
- if (index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
+ if (tsc_index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
- } else if (index.columnIndex >= numOfCols) {
+ } else if (tsc_index.columnIndex >= numOfCols) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg5);
}
@@ -1187,15 +1187,15 @@ static int32_t validateStateWindowNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SS
pGroupExpr->columnInfo = taosArrayInit(4, sizeof(SColIndex));
}
- SSchema* pSchema = tscGetTableColumnSchema(pTableMeta, index.columnIndex);
+ SSchema* pSchema = tscGetTableColumnSchema(pTableMeta, tsc_index.columnIndex);
if (pSchema->type == TSDB_DATA_TYPE_TIMESTAMP || pSchema->type == TSDB_DATA_TYPE_FLOAT
|| pSchema->type == TSDB_DATA_TYPE_DOUBLE || pSchema->type == TSDB_DATA_TYPE_NCHAR
|| pSchema->type == TSDB_DATA_TYPE_BINARY) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2);
}
- tscColumnListInsert(pQueryInfo->colList, index.columnIndex, pTableMeta->id.uid, pSchema);
- SColIndex colIndex = { .colIndex = index.columnIndex, .flag = TSDB_COL_NORMAL, .colId = pSchema->colId };
+ tscColumnListInsert(pQueryInfo->colList, tsc_index.columnIndex, pTableMeta->id.uid, pSchema);
+ SColIndex colIndex = { .colIndex = tsc_index.columnIndex, .flag = TSDB_COL_NORMAL, .colId = pSchema->colId };
taosArrayPush(pGroupExpr->columnInfo, &colIndex);
pQueryInfo->groupbyExpr.orderType = TSDB_ORDER_ASC;
pQueryInfo->stateWindow = true;
@@ -1234,11 +1234,11 @@ int32_t validateSessionNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode * pS
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg4);
}
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
- if (getColumnIndexByName(col, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
+ if (getColumnIndexByName(col, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
}
- if (index.columnIndex != PRIMARYKEY_TIMESTAMP_COL_INDEX) {
+ if (tsc_index.columnIndex != PRIMARYKEY_TIMESTAMP_COL_INDEX) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
}
@@ -1779,9 +1779,9 @@ static int32_t handleArithmeticExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32
}
// expr string is set as the parameter of function
- SColumnIndex index = {.tableIndex = tableIndex};
+ SColumnIndex tsc_index = {.tableIndex = tableIndex};
- SExprInfo* pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_ARITHM, &index, TSDB_DATA_TYPE_DOUBLE, sizeof(double),
+ SExprInfo* pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_ARITHM, &tsc_index, TSDB_DATA_TYPE_DOUBLE, sizeof(double),
getNewResColId(pCmd), sizeof(double), false);
char* name = (pItem->aliasName != NULL)? pItem->aliasName:pItem->pNode->exprToken.z;
@@ -1928,9 +1928,9 @@ static void addPrimaryTsColIntoResult(SQueryInfo* pQueryInfo, SSqlCmd* pCmd) {
SSchema* pSchema = tscGetTableColumnSchema(pTableMetaInfo->pTableMeta, PRIMARYKEY_TIMESTAMP_COL_INDEX);
// add the timestamp column into the output columns
- SColumnIndex index = {0}; // primary timestamp column info
+ SColumnIndex tsc_index = {0}; // primary timestamp column info
int32_t numOfCols = (int32_t)tscNumOfExprs(pQueryInfo);
- tscAddFuncInSelectClause(pQueryInfo, numOfCols, TSDB_FUNC_PRJ, &index, pSchema, TSDB_COL_NORMAL, getNewResColId(pCmd));
+ tscAddFuncInSelectClause(pQueryInfo, numOfCols, TSDB_FUNC_PRJ, &tsc_index, pSchema, TSDB_COL_NORMAL, getNewResColId(pCmd));
SInternalField* pSupInfo = tscFieldInfoGetInternalField(&pQueryInfo->fieldsInfo, numOfCols);
pSupInfo->visible = false;
@@ -2032,6 +2032,7 @@ int32_t validateSelectNodeList(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SArray* pS
const char* msg6 = "not support distinct mixed with join";
const char* msg7 = "not support distinct mixed with groupby";
const char* msg8 = "not support distinct in nest query";
+ const char* msg9 = "invalid alias name";
// too many result columns not support order by in query
if (taosArrayGetSize(pSelNodeList) > TSDB_MAX_COLUMNS) {
@@ -2055,6 +2056,9 @@ int32_t validateSelectNodeList(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SArray* pS
hasDistinct = (pItem->distinct == true);
distIdx = hasDistinct ? i : -1;
}
+ if(pItem->aliasName != NULL && validateColumnName(pItem->aliasName) != TSDB_CODE_SUCCESS){
+ return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg9);
+ }
int32_t type = pItem->pNode->type;
if (type == SQL_NODE_SQLFUNCTION) {
@@ -2165,16 +2169,16 @@ SExprInfo* doAddProjectCol(SQueryInfo* pQueryInfo, int32_t colIndex, int32_t tab
SSchema* pSchema = tscGetTableColumnSchema(pTableMeta, colIndex);
int16_t functionId = (int16_t)((colIndex >= numOfCols) ? TSDB_FUNC_TAGPRJ : TSDB_FUNC_PRJ);
- SColumnIndex index = {.tableIndex = tableIndex,};
+ SColumnIndex tsc_index = {.tableIndex = tableIndex,};
if (functionId == TSDB_FUNC_TAGPRJ) {
- index.columnIndex = colIndex - tscGetNumOfColumns(pTableMeta);
- tscColumnListInsert(pTableMetaInfo->tagColList, index.columnIndex, pTableMeta->id.uid, pSchema);
+ tsc_index.columnIndex = colIndex - tscGetNumOfColumns(pTableMeta);
+ tscColumnListInsert(pTableMetaInfo->tagColList, tsc_index.columnIndex, pTableMeta->id.uid, pSchema);
} else {
- index.columnIndex = colIndex;
+ tsc_index.columnIndex = colIndex;
}
- return tscExprAppend(pQueryInfo, functionId, &index, pSchema->type, pSchema->bytes, colId, 0,
+ return tscExprAppend(pQueryInfo, functionId, &tsc_index, pSchema->type, pSchema->bytes, colId, 0,
(functionId == TSDB_FUNC_TAGPRJ));
}
@@ -2243,51 +2247,51 @@ int32_t addProjectionExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, t
if (tokenId == TK_ALL) { // project on all fields
TSDB_QUERY_SET_TYPE(pQueryInfo->type, TSDB_QUERY_TYPE_PROJECTION_QUERY);
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
- if (getTableIndexByName(&pItem->pNode->columnName, pQueryInfo, &index) != TSDB_CODE_SUCCESS) {
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
+ if (getTableIndexByName(&pItem->pNode->columnName, pQueryInfo, &tsc_index) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2);
}
// all meters columns are required
- if (index.tableIndex == COLUMN_INDEX_INITIAL_VAL) { // all table columns are required.
+ if (tsc_index.tableIndex == COLUMN_INDEX_INITIAL_VAL) { // all table columns are required.
for (int32_t i = 0; i < pQueryInfo->numOfTables; ++i) {
- index.tableIndex = i;
- int32_t inc = doAddProjectionExprAndResultFields(pQueryInfo, &index, startPos, pCmd);
+ tsc_index.tableIndex = i;
+ int32_t inc = doAddProjectionExprAndResultFields(pQueryInfo, &tsc_index, startPos, pCmd);
startPos += inc;
}
} else {
- doAddProjectionExprAndResultFields(pQueryInfo, &index, startPos, pCmd);
+ doAddProjectionExprAndResultFields(pQueryInfo, &tsc_index, startPos, pCmd);
}
// add the primary timestamp column even though it is not required by user
- STableMeta* pTableMeta = pQueryInfo->pTableMetaInfo[index.tableIndex]->pTableMeta;
+ STableMeta* pTableMeta = pQueryInfo->pTableMetaInfo[tsc_index.tableIndex]->pTableMeta;
if (pTableMeta->tableType != TSDB_TEMP_TABLE) {
tscInsertPrimaryTsSourceColumn(pQueryInfo, pTableMeta->id.uid);
}
} else if (tokenId == TK_STRING || tokenId == TK_INTEGER || tokenId == TK_FLOAT) { // simple column projection query
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
// user-specified constant value as a new result column
- index.columnIndex = (pQueryInfo->udColumnId--);
- index.tableIndex = 0;
+ tsc_index.columnIndex = (pQueryInfo->udColumnId--);
+ tsc_index.tableIndex = 0;
SSchema colSchema = tGetUserSpecifiedColumnSchema(&pItem->pNode->value, &pItem->pNode->exprToken, pItem->aliasName);
- SExprInfo* pExpr = tscAddFuncInSelectClause(pQueryInfo, startPos, TSDB_FUNC_PRJ, &index, &colSchema, TSDB_COL_UDC,
+ SExprInfo* pExpr = tscAddFuncInSelectClause(pQueryInfo, startPos, TSDB_FUNC_PRJ, &tsc_index, &colSchema, TSDB_COL_UDC,
getNewResColId(pCmd));
// NOTE: the first parameter is reserved for the tag column id during join query process.
pExpr->base.numOfParams = 2;
tVariantAssign(&pExpr->base.param[1], &pItem->pNode->value);
} else if (tokenId == TK_ID) {
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
- if (getColumnIndexByName(&pItem->pNode->columnName, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ if (getColumnIndexByName(&pItem->pNode->columnName, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2);
}
- if (index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
+ if (tsc_index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
if (outerQuery) {
- STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
+ STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
int32_t numOfCols = tscGetNumOfColumns(pTableMetaInfo->pTableMeta);
bool existed = false;
@@ -2295,7 +2299,7 @@ int32_t addProjectionExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, t
for (int32_t i = 0; i < numOfCols; ++i) {
if (strncasecmp(pSchema[i].name, TSQL_TBNAME_L, tListLen(pSchema[i].name)) == 0) {
existed = true;
- index.columnIndex = i;
+ tsc_index.columnIndex = i;
break;
}
}
@@ -2304,12 +2308,12 @@ int32_t addProjectionExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, t
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
}
- SSchema colSchema = pSchema[index.columnIndex];
+ SSchema colSchema = pSchema[tsc_index.columnIndex];
char name[TSDB_COL_NAME_LEN] = {0};
getColumnName(pItem, name, colSchema.name, sizeof(colSchema.name) - 1);
tstrncpy(colSchema.name, name, TSDB_COL_NAME_LEN);
- /*SExprInfo* pExpr = */ tscAddFuncInSelectClause(pQueryInfo, startPos, TSDB_FUNC_PRJ, &index, &colSchema,
+ /*SExprInfo* pExpr = */ tscAddFuncInSelectClause(pQueryInfo, startPos, TSDB_FUNC_PRJ, &tsc_index, &colSchema,
TSDB_COL_NORMAL, getNewResColId(pCmd));
} else {
SSchema colSchema = *tGetTbnameColumnSchema();
@@ -2317,23 +2321,23 @@ int32_t addProjectionExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, t
getColumnName(pItem, name, colSchema.name, sizeof(colSchema.name) - 1);
tstrncpy(colSchema.name, name, TSDB_COL_NAME_LEN);
- /*SExprInfo* pExpr = */ tscAddFuncInSelectClause(pQueryInfo, startPos, TSDB_FUNC_TAGPRJ, &index, &colSchema,
+ /*SExprInfo* pExpr = */ tscAddFuncInSelectClause(pQueryInfo, startPos, TSDB_FUNC_TAGPRJ, &tsc_index, &colSchema,
TSDB_COL_TAG, getNewResColId(pCmd));
}
} else {
- STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
+ STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
STableMeta* pTableMeta = pTableMetaInfo->pTableMeta;
- if (index.columnIndex >= tscGetNumOfColumns(pTableMeta) && UTIL_TABLE_IS_NORMAL_TABLE(pTableMetaInfo)) {
+ if (tsc_index.columnIndex >= tscGetNumOfColumns(pTableMeta) && UTIL_TABLE_IS_NORMAL_TABLE(pTableMetaInfo)) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
- addProjectQueryCol(pQueryInfo, startPos, &index, pItem, getNewResColId(pCmd));
+ addProjectQueryCol(pQueryInfo, startPos, &tsc_index, pItem, getNewResColId(pCmd));
pQueryInfo->type |= TSDB_QUERY_TYPE_PROJECTION_QUERY;
}
// add the primary timestamp column even though it is not required by user
- STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
+ STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
if (!UTIL_TABLE_IS_TMP_TABLE(pTableMetaInfo)) {
tscInsertPrimaryTsSourceColumn(pQueryInfo, pTableMetaInfo->pTableMeta->id.uid);
}
@@ -2396,16 +2400,16 @@ void setResultColName(char* name, tSqlExprItem* pItem, int32_t functionId, SStrT
if (pItem->aliasName != NULL) {
tstrncpy(name, pItem->aliasName, TSDB_COL_NAME_LEN);
} else if (multiCols) {
- char uname[TSDB_COL_NAME_LEN] = {0};
+ char tsc_index[TSDB_COL_NAME_LEN] = {0};
int32_t len = MIN(pToken->n + 1, TSDB_COL_NAME_LEN);
- tstrncpy(uname, pToken->z, len);
+ tstrncpy(tsc_index, pToken->z, len);
if (tsKeepOriginalColumnName) { // keep the original column name
- tstrncpy(name, uname, TSDB_COL_NAME_LEN);
+ tstrncpy(name, tsc_index, TSDB_COL_NAME_LEN);
} else {
int32_t size = TSDB_COL_NAME_LEN + tListLen(aAggs[functionId].name) + 2 + 1;
char tmp[TSDB_COL_NAME_LEN + tListLen(aAggs[functionId].name) + 2 + 1] = {0};
- snprintf(tmp, size, "%s(%s)", aAggs[functionId].name, uname);
+ snprintf(tmp, size, "%s(%s)", aAggs[functionId].name, tsc_index);
tstrncpy(name, tmp, TSDB_COL_NAME_LEN);
}
@@ -2472,7 +2476,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
}
SExprInfo* pExpr = NULL;
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
if (pItem->pNode->Expr.paramList != NULL) {
tSqlExprItem* pParamElem = taosArrayGet(pItem->pNode->Expr.paramList, 0);
@@ -2487,43 +2491,43 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
// check if the table name is valid or not
SStrToken tmpToken = pParamElem->pNode->columnName;
- if (getTableIndexByName(&tmpToken, pQueryInfo, &index) != TSDB_CODE_SUCCESS) {
+ if (getTableIndexByName(&tmpToken, pQueryInfo, &tsc_index) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg4);
}
- index = (SColumnIndex){0, PRIMARYKEY_TIMESTAMP_COL_INDEX};
+ tsc_index = (SColumnIndex){0, PRIMARYKEY_TIMESTAMP_COL_INDEX};
int32_t size = tDataTypes[TSDB_DATA_TYPE_BIGINT].bytes;
- pExpr = tscExprAppend(pQueryInfo, functionId, &index, TSDB_DATA_TYPE_BIGINT, size, getNewResColId(pCmd), size, false);
+ pExpr = tscExprAppend(pQueryInfo, functionId, &tsc_index, TSDB_DATA_TYPE_BIGINT, size, getNewResColId(pCmd), size, false);
} else {
// count the number of table created according to the super table
- if (getColumnIndexByName(pToken, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ if (getColumnIndexByName(pToken, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
}
- pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
+ pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
// count tag is equalled to count(tbname)
bool isTag = false;
- if (index.columnIndex >= tscGetNumOfColumns(pTableMetaInfo->pTableMeta) || index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
- index.columnIndex = TSDB_TBNAME_COLUMN_INDEX;
+ if (tsc_index.columnIndex >= tscGetNumOfColumns(pTableMetaInfo->pTableMeta) || tsc_index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
+ tsc_index.columnIndex = TSDB_TBNAME_COLUMN_INDEX;
isTag = true;
}
int32_t size = tDataTypes[TSDB_DATA_TYPE_BIGINT].bytes;
- pExpr = tscExprAppend(pQueryInfo, functionId, &index, TSDB_DATA_TYPE_BIGINT, size, getNewResColId(pCmd), size, isTag);
+ pExpr = tscExprAppend(pQueryInfo, functionId, &tsc_index, TSDB_DATA_TYPE_BIGINT, size, getNewResColId(pCmd), size, isTag);
}
} else { // count(*) is equalled to count(primary_timestamp_key)
- index = (SColumnIndex){0, PRIMARYKEY_TIMESTAMP_COL_INDEX};
+ tsc_index = (SColumnIndex){0, PRIMARYKEY_TIMESTAMP_COL_INDEX};
int32_t size = tDataTypes[TSDB_DATA_TYPE_BIGINT].bytes;
- pExpr = tscExprAppend(pQueryInfo, functionId, &index, TSDB_DATA_TYPE_BIGINT, size, getNewResColId(pCmd), size, false);
+ pExpr = tscExprAppend(pQueryInfo, functionId, &tsc_index, TSDB_DATA_TYPE_BIGINT, size, getNewResColId(pCmd), size, false);
}
- pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
+ pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
memset(pExpr->base.aliasName, 0, tListLen(pExpr->base.aliasName));
getColumnName(pItem, pExpr->base.aliasName, pExpr->base.token,sizeof(pExpr->base.aliasName) - 1);
- SColumnList list = createColumnList(1, index.tableIndex, index.columnIndex);
+ SColumnList list = createColumnList(1, tsc_index.tableIndex, tsc_index.columnIndex);
if (finalResult) {
int32_t numOfOutput = tscNumOfFields(pQueryInfo);
insertResultField(pQueryInfo, numOfOutput, &list, sizeof(int64_t), TSDB_DATA_TYPE_BIGINT, pExpr->base.aliasName, pExpr);
@@ -2536,7 +2540,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
}
// the time stamp may be always needed
- if (index.tableIndex < tscGetNumOfColumns(pTableMetaInfo->pTableMeta)) {
+ if (tsc_index.tableIndex < tscGetNumOfColumns(pTableMetaInfo->pTableMeta)) {
tscInsertPrimaryTsSourceColumn(pQueryInfo, pTableMetaInfo->pTableMeta->id.uid);
}
@@ -2569,21 +2573,21 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2);
}
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
- if ((getColumnIndexByName(&pParamElem->pNode->columnName, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS)) {
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
+ if ((getColumnIndexByName(&pParamElem->pNode->columnName, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS)) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
}
- pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
+ pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
STableComInfo info = tscGetTableInfo(pTableMetaInfo->pTableMeta);
// functions can not be applied to tags
- if (index.columnIndex == TSDB_TBNAME_COLUMN_INDEX || (index.columnIndex >= tscGetNumOfColumns(pTableMetaInfo->pTableMeta))) {
+ if (tsc_index.columnIndex == TSDB_TBNAME_COLUMN_INDEX || (tsc_index.columnIndex >= tscGetNumOfColumns(pTableMetaInfo->pTableMeta))) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg6);
}
// 2. check if sql function can be applied on this column data type
- SSchema* pSchema = tscGetTableColumnSchema(pTableMetaInfo->pTableMeta, index.columnIndex);
+ SSchema* pSchema = tscGetTableColumnSchema(pTableMetaInfo->pTableMeta, tsc_index.columnIndex);
if (!IS_NUMERIC_TYPE(pSchema->type)) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
@@ -2602,7 +2606,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
// set the first column ts for diff query
if (functionId == TSDB_FUNC_DIFF || functionId == TSDB_FUNC_DERIVATIVE) {
- SColumnIndex indexTS = {.tableIndex = index.tableIndex, .columnIndex = 0};
+ SColumnIndex indexTS = {.tableIndex = tsc_index.tableIndex, .columnIndex = 0};
SExprInfo* pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_TS_DUMMY, &indexTS, TSDB_DATA_TYPE_TIMESTAMP,
TSDB_KEYSIZE, getNewResColId(pCmd), TSDB_KEYSIZE, false);
tstrncpy(pExpr->base.aliasName, aAggs[TSDB_FUNC_TS_DUMMY].name, sizeof(pExpr->base.aliasName));
@@ -2611,7 +2615,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
insertResultField(pQueryInfo, colIndex, &ids, TSDB_KEYSIZE, TSDB_DATA_TYPE_TIMESTAMP, aAggs[TSDB_FUNC_TS_DUMMY].name, pExpr);
}
- SExprInfo* pExpr = tscExprAppend(pQueryInfo, functionId, &index, resultType, resultSize, getNewResColId(pCmd), intermediateResSize, false);
+ SExprInfo* pExpr = tscExprAppend(pQueryInfo, functionId, &tsc_index, resultType, resultSize, getNewResColId(pCmd), intermediateResSize, false);
if (functionId == TSDB_FUNC_LEASTSQR) { // set the leastsquares parameters
char val[8] = {0};
@@ -2663,7 +2667,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
tscExprAddParams(&pExpr->base, val, TSDB_DATA_TYPE_BIGINT, LONG_BYTES);
}
- SColumnList ids = createColumnList(1, index.tableIndex, index.columnIndex);
+ SColumnList ids = createColumnList(1, tsc_index.tableIndex, tsc_index.columnIndex);
memset(pExpr->base.aliasName, 0, tListLen(pExpr->base.aliasName));
getColumnName(pItem, pExpr->base.aliasName, pExpr->base.token,sizeof(pExpr->base.aliasName) - 1);
@@ -2712,49 +2716,49 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
}
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
if (pParamElem->pNode->tokenId == TK_ALL) { // select table.*
SStrToken tmpToken = pParamElem->pNode->columnName;
- if (getTableIndexByName(&tmpToken, pQueryInfo, &index) != TSDB_CODE_SUCCESS) {
+ if (getTableIndexByName(&tmpToken, pQueryInfo, &tsc_index) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg4);
}
- pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
+ pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
SSchema* pSchema = tscGetTableSchema(pTableMetaInfo->pTableMeta);
char name[TSDB_COL_NAME_LEN] = {0};
for (int32_t j = 0; j < tscGetNumOfColumns(pTableMetaInfo->pTableMeta); ++j) {
- index.columnIndex = j;
+ tsc_index.columnIndex = j;
SStrToken t = {.z = pSchema[j].name, .n = (uint32_t)strnlen(pSchema[j].name, TSDB_COL_NAME_LEN)};
setResultColName(name, pItem, cvtFunc.originFuncId, &t, true);
- if (setExprInfoForFunctions(pCmd, pQueryInfo, &pSchema[j], cvtFunc, name, colIndex++, &index,
+ if (setExprInfoForFunctions(pCmd, pQueryInfo, &pSchema[j], cvtFunc, name, colIndex++, &tsc_index,
finalResult, pUdfInfo) != 0) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
}
} else {
- if (getColumnIndexByName(&pParamElem->pNode->columnName, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ if (getColumnIndexByName(&pParamElem->pNode->columnName, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
}
- pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
+ pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
// functions can not be applied to tags
- if ((index.columnIndex >= tscGetNumOfColumns(pTableMetaInfo->pTableMeta)) || (index.columnIndex < 0)) {
+ if ((tsc_index.columnIndex >= tscGetNumOfColumns(pTableMetaInfo->pTableMeta)) || (tsc_index.columnIndex < 0)) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg6);
}
char name[TSDB_COL_NAME_LEN] = {0};
- SSchema* pSchema = tscGetTableColumnSchema(pTableMetaInfo->pTableMeta, index.columnIndex);
+ SSchema* pSchema = tscGetTableColumnSchema(pTableMetaInfo->pTableMeta, tsc_index.columnIndex);
bool multiColOutput = taosArrayGetSize(pItem->pNode->Expr.paramList) > 1;
setResultColName(name, pItem, cvtFunc.originFuncId, &pParamElem->pNode->columnName, multiColOutput);
- if (setExprInfoForFunctions(pCmd, pQueryInfo, pSchema, cvtFunc, name, colIndex++, &index, finalResult, pUdfInfo) != 0) {
+ if (setExprInfoForFunctions(pCmd, pQueryInfo, pSchema, cvtFunc, name, colIndex++, &tsc_index, finalResult, pUdfInfo) != 0) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
}
@@ -2773,13 +2777,13 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
SSchema* pSchema = tscGetTableSchema(pTableMetaInfo->pTableMeta);
for (int32_t i = 0; i < tscGetNumOfColumns(pTableMetaInfo->pTableMeta); ++i) {
- SColumnIndex index = {.tableIndex = j, .columnIndex = i};
+ SColumnIndex tsc_index = {.tableIndex = j, .columnIndex = i};
char name[TSDB_COL_NAME_LEN] = {0};
SStrToken t = {.z = pSchema[i].name, .n = (uint32_t)strnlen(pSchema[i].name, TSDB_COL_NAME_LEN)};
setResultColName(name, pItem, cvtFunc.originFuncId, &t, true);
- if (setExprInfoForFunctions(pCmd, pQueryInfo, &pSchema[index.columnIndex], cvtFunc, name, colIndex, &index,
+ if (setExprInfoForFunctions(pCmd, pQueryInfo, &pSchema[tsc_index.columnIndex], cvtFunc, name, colIndex, &tsc_index,
finalResult, pUdfInfo) != 0) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
@@ -2807,20 +2811,20 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2);
}
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
- if (getColumnIndexByName(&pParamElem->pNode->columnName, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
+ if (getColumnIndexByName(&pParamElem->pNode->columnName, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
}
- if (index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
+ if (tsc_index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg6);
}
- pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
- SSchema* pSchema = tscGetTableColumnSchema(pTableMetaInfo->pTableMeta, index.columnIndex);
+ pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
+ SSchema* pSchema = tscGetTableColumnSchema(pTableMetaInfo->pTableMeta, tsc_index.columnIndex);
// functions can not be applied to tags
- if (index.columnIndex >= tscGetNumOfColumns(pTableMetaInfo->pTableMeta)) {
+ if (tsc_index.columnIndex >= tscGetNumOfColumns(pTableMetaInfo->pTableMeta)) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg6);
}
@@ -2862,7 +2866,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
tscInsertPrimaryTsSourceColumn(pQueryInfo, pTableMetaInfo->pTableMeta->id.uid);
colIndex += 1; // the first column is ts
- pExpr = tscExprAppend(pQueryInfo, functionId, &index, resultType, resultSize, getNewResColId(pCmd), interResult, false);
+ pExpr = tscExprAppend(pQueryInfo, functionId, &tsc_index, resultType, resultSize, getNewResColId(pCmd), interResult, false);
tscExprAddParams(&pExpr->base, val, TSDB_DATA_TYPE_DOUBLE, sizeof(double));
} else {
tVariantDump(pVariant, val, TSDB_DATA_TYPE_BIGINT, true);
@@ -2874,19 +2878,19 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
// todo REFACTOR
// set the first column ts for top/bottom query
- SColumnIndex index1 = {index.tableIndex, PRIMARYKEY_TIMESTAMP_COL_INDEX};
+ SColumnIndex index1 = {tsc_index.tableIndex, PRIMARYKEY_TIMESTAMP_COL_INDEX};
pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_TS, &index1, TSDB_DATA_TYPE_TIMESTAMP, TSDB_KEYSIZE, getNewResColId(pCmd),
0, false);
tstrncpy(pExpr->base.aliasName, aAggs[TSDB_FUNC_TS].name, sizeof(pExpr->base.aliasName));
const int32_t TS_COLUMN_INDEX = PRIMARYKEY_TIMESTAMP_COL_INDEX;
- SColumnList ids = createColumnList(1, index.tableIndex, TS_COLUMN_INDEX);
+ SColumnList ids = createColumnList(1, tsc_index.tableIndex, TS_COLUMN_INDEX);
insertResultField(pQueryInfo, colIndex, &ids, TSDB_KEYSIZE, TSDB_DATA_TYPE_TIMESTAMP,
aAggs[TSDB_FUNC_TS].name, pExpr);
colIndex += 1; // the first column is ts
- pExpr = tscExprAppend(pQueryInfo, functionId, &index, resultType, resultSize, getNewResColId(pCmd), resultSize, false);
+ pExpr = tscExprAppend(pQueryInfo, functionId, &tsc_index, resultType, resultSize, getNewResColId(pCmd), resultSize, false);
tscExprAddParams(&pExpr->base, val, TSDB_DATA_TYPE_BIGINT, sizeof(int64_t));
}
@@ -2894,7 +2898,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
getColumnName(pItem, pExpr->base.aliasName, pExpr->base.token,sizeof(pExpr->base.aliasName) - 1);
// todo refactor: tscColumnListInsert part
- SColumnList ids = createColumnList(1, index.tableIndex, index.columnIndex);
+ SColumnList ids = createColumnList(1, tsc_index.tableIndex, tsc_index.columnIndex);
if (finalResult) {
insertResultField(pQueryInfo, colIndex, &ids, resultSize, (int8_t)resultType, pExpr->base.aliasName, pExpr);
@@ -2920,45 +2924,45 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
tSqlExprItem* pParamItem = taosArrayGet(pItem->pNode->Expr.paramList, 0);
tSqlExpr* pParam = pParamItem->pNode;
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
- if (getColumnIndexByName(&pParam->columnName, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
+ if (getColumnIndexByName(&pParam->columnName, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
}
- pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
+ pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
SSchema* pSchema = tscGetTableTagSchema(pTableMetaInfo->pTableMeta);
// functions can not be applied to normal columns
int32_t numOfCols = tscGetNumOfColumns(pTableMetaInfo->pTableMeta);
- if (index.columnIndex < numOfCols && index.columnIndex != TSDB_TBNAME_COLUMN_INDEX) {
+ if (tsc_index.columnIndex < numOfCols && tsc_index.columnIndex != TSDB_TBNAME_COLUMN_INDEX) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg6);
}
- if (index.columnIndex > 0) {
- index.columnIndex -= numOfCols;
+ if (tsc_index.columnIndex > 0) {
+ tsc_index.columnIndex -= numOfCols;
}
// 2. valid the column type
int16_t colType = 0;
- if (index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
+ if (tsc_index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
colType = TSDB_DATA_TYPE_BINARY;
} else {
- colType = pSchema[index.columnIndex].type;
+ colType = pSchema[tsc_index.columnIndex].type;
}
if (colType == TSDB_DATA_TYPE_BOOL) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
- tscColumnListInsert(pTableMetaInfo->tagColList, index.columnIndex, pTableMetaInfo->pTableMeta->id.uid,
- &pSchema[index.columnIndex]);
+ tscColumnListInsert(pTableMetaInfo->tagColList, tsc_index.columnIndex, pTableMetaInfo->pTableMeta->id.uid,
+ &pSchema[tsc_index.columnIndex]);
SSchema* pTagSchema = tscGetTableTagSchema(pTableMetaInfo->pTableMeta);
SSchema s = {0};
- if (index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
+ if (tsc_index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
s = *tGetTbnameColumnSchema();
} else {
- s = pTagSchema[index.columnIndex];
+ s = pTagSchema[tsc_index.columnIndex];
}
int16_t bytes = 0;
@@ -2972,7 +2976,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
s.bytes = bytes;
TSDB_QUERY_SET_TYPE(pQueryInfo->type, TSDB_QUERY_TYPE_TAG_FILTER_QUERY);
- tscAddFuncInSelectClause(pQueryInfo, 0, TSDB_FUNC_TID_TAG, &index, &s, TSDB_COL_TAG, getNewResColId(pCmd));
+ tscAddFuncInSelectClause(pQueryInfo, 0, TSDB_FUNC_TID_TAG, &tsc_index, &s, TSDB_COL_TAG, getNewResColId(pCmd));
return TSDB_CODE_SUCCESS;
}
@@ -2983,8 +2987,8 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2);
}
- SColumnIndex index = {.tableIndex = 0, .columnIndex = 0,};
- pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
+ SColumnIndex tsc_index = {.tableIndex = 0, .columnIndex = 0,};
+ pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
int32_t inter = 0;
int16_t resType = 0;
@@ -2995,10 +2999,10 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
SSchema s = {.name = "block_dist", .type = TSDB_DATA_TYPE_BINARY, .bytes = bytes};
SExprInfo* pExpr =
- tscExprInsert(pQueryInfo, 0, TSDB_FUNC_BLKINFO, &index, resType, bytes, getNewResColId(pCmd), bytes, 0);
+ tscExprInsert(pQueryInfo, 0, TSDB_FUNC_BLKINFO, &tsc_index, resType, bytes, getNewResColId(pCmd), bytes, 0);
tstrncpy(pExpr->base.aliasName, s.name, sizeof(pExpr->base.aliasName));
- SColumnList ids = createColumnList(1, index.tableIndex, index.columnIndex);
+ SColumnList ids = createColumnList(1, tsc_index.tableIndex, tsc_index.columnIndex);
insertResultField(pQueryInfo, 0, &ids, bytes, s.type, s.name, pExpr);
pExpr->base.numOfParams = 1;
@@ -3023,19 +3027,19 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2);
}
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
- if (getColumnIndexByName(&pParamElem->pNode->columnName, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
+ if (getColumnIndexByName(&pParamElem->pNode->columnName, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
}
- if (index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
+ if (tsc_index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg6);
}
- pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
+ pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
// functions can not be applied to tags
- if (index.columnIndex >= tscGetNumOfColumns(pTableMetaInfo->pTableMeta)) {
+ if (tsc_index.columnIndex >= tscGetNumOfColumns(pTableMetaInfo->pTableMeta)) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg6);
}
@@ -3044,20 +3048,20 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
int16_t bytes = 0;
getResultDataInfo(TSDB_DATA_TYPE_INT, 4, functionId, 0, &resType, &bytes, &inter, 0, false, pUdfInfo);
- SExprInfo* pExpr = tscExprAppend(pQueryInfo, functionId, &index, resType, bytes, getNewResColId(pCmd), inter, false);
+ SExprInfo* pExpr = tscExprAppend(pQueryInfo, functionId, &tsc_index, resType, bytes, getNewResColId(pCmd), inter, false);
memset(pExpr->base.aliasName, 0, tListLen(pExpr->base.aliasName));
getColumnName(pItem, pExpr->base.aliasName, pExpr->base.token, sizeof(pExpr->base.aliasName) - 1);
- SSchema* pSchema = tscGetTableColumnSchema(pTableMetaInfo->pTableMeta, index.columnIndex);
+ SSchema* pSchema = tscGetTableColumnSchema(pTableMetaInfo->pTableMeta, tsc_index.columnIndex);
uint64_t uid = pTableMetaInfo->pTableMeta->id.uid;
- SColumnList ids = createColumnList(1, index.tableIndex, index.columnIndex);
+ SColumnList ids = createColumnList(1, tsc_index.tableIndex, tsc_index.columnIndex);
if (finalResult) {
insertResultField(pQueryInfo, colIndex, &ids, pUdfInfo->resBytes, pUdfInfo->resType, pExpr->base.aliasName, pExpr);
} else {
for (int32_t i = 0; i < ids.num; ++i) {
- tscColumnListInsert(pQueryInfo->colList, index.columnIndex, uid, pSchema);
+ tscColumnListInsert(pQueryInfo->colList, tsc_index.columnIndex, uid, pSchema);
}
}
tscInsertPrimaryTsSourceColumn(pQueryInfo, pTableMetaInfo->pTableMeta->id.uid);
@@ -3075,9 +3079,9 @@ static SColumnList createColumnList(int32_t num, int16_t tableIndex, int32_t col
SColumnList columnList = {0};
columnList.num = num;
- int32_t index = num - 1;
- columnList.ids[index].tableIndex = tableIndex;
- columnList.ids[index].columnIndex = columnIndex;
+ int32_t tsc_index = num - 1;
+ columnList.ids[tsc_index].tableIndex = tableIndex;
+ columnList.ids[tsc_index].columnIndex = columnIndex;
return columnList;
}
@@ -3103,8 +3107,8 @@ static bool isTablenameToken(SStrToken* token) {
return (tmpToken.n == strlen(TSQL_TBNAME_L) && strncasecmp(TSQL_TBNAME_L, tmpToken.z, tmpToken.n) == 0);
}
-static int16_t doGetColumnIndex(SQueryInfo* pQueryInfo, int32_t index, SStrToken* pToken) {
- STableMeta* pTableMeta = tscGetMetaInfo(pQueryInfo, index)->pTableMeta;
+static int16_t doGetColumnIndex(SQueryInfo* pQueryInfo, int32_t tsc_index, SStrToken* pToken) {
+ STableMeta* pTableMeta = tscGetMetaInfo(pQueryInfo, tsc_index)->pTableMeta;
int32_t numOfCols = tscGetNumOfColumns(pTableMeta) + tscGetNumOfTags(pTableMeta);
SSchema* pSchema = tscGetTableSchema(pTableMeta);
@@ -3137,7 +3141,7 @@ int32_t doGetColumnIndexByName(SStrToken* pToken, SQueryInfo* pQueryInfo, SColum
} else if (pToken->n == 0) {
pIndex->columnIndex = PRIMARYKEY_TIMESTAMP_COL_INDEX; // just make runtime happy, need fix java test case InsertSpecialCharacterJniTest
} else {
- // not specify the table name, try to locate the table index by column name
+ // not specify the table name, try to locate the table tsc_index by column name
if (pIndex->tableIndex == COLUMN_INDEX_INITIAL_VAL) {
for (int16_t i = 0; i < pQueryInfo->numOfTables; ++i) {
int16_t colIndex = doGetColumnIndex(pQueryInfo, i, pToken);
@@ -3151,7 +3155,7 @@ int32_t doGetColumnIndexByName(SStrToken* pToken, SQueryInfo* pQueryInfo, SColum
}
}
}
- } else { // table index is valid, get the column index
+ } else { // table tsc_index is valid, get the column tsc_index
int16_t colIndex = doGetColumnIndex(pQueryInfo, pIndex->tableIndex, pToken);
if (colIndex != COLUMN_INDEX_INITIAL_VAL) {
pIndex->columnIndex = colIndex;
@@ -3631,36 +3635,36 @@ int32_t validateGroupbyNode(SQueryInfo* pQueryInfo, SArray* pList, SSqlCmd* pCmd
SStrToken token = {pVar->nLen, pVar->nType, pVar->pz};
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
- if (getColumnIndexByName(&token, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
+ if (getColumnIndexByName(&token, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2);
}
if (tableIndex == COLUMN_INDEX_INITIAL_VAL) {
- tableIndex = index.tableIndex;
- } else if (tableIndex != index.tableIndex) {
+ tableIndex = tsc_index.tableIndex;
+ } else if (tableIndex != tsc_index.tableIndex) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
}
- pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
+ pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
STableMeta* pTableMeta = pTableMetaInfo->pTableMeta;
- if (index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
+ if (tsc_index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
pSchema = tGetTbnameColumnSchema();
} else {
- pSchema = tscGetTableColumnSchema(pTableMeta, index.columnIndex);
+ pSchema = tscGetTableColumnSchema(pTableMeta, tsc_index.columnIndex);
}
int32_t numOfCols = tscGetNumOfColumns(pTableMeta);
- bool groupTag = (index.columnIndex == TSDB_TBNAME_COLUMN_INDEX || index.columnIndex >= numOfCols);
+ bool groupTag = (tsc_index.columnIndex == TSDB_TBNAME_COLUMN_INDEX || tsc_index.columnIndex >= numOfCols);
if (groupTag) {
if (!UTIL_TABLE_IS_SUPER_TABLE(pTableMetaInfo)) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg6);
}
- int32_t relIndex = index.columnIndex;
- if (index.columnIndex != TSDB_TBNAME_COLUMN_INDEX) {
+ int32_t relIndex = tsc_index.columnIndex;
+ if (tsc_index.columnIndex != TSDB_TBNAME_COLUMN_INDEX) {
relIndex -= numOfCols;
}
@@ -3668,17 +3672,17 @@ int32_t validateGroupbyNode(SQueryInfo* pQueryInfo, SArray* pList, SSqlCmd* pCmd
strncpy(colIndex.name, pSchema->name, tListLen(colIndex.name));
taosArrayPush(pGroupExpr->columnInfo, &colIndex);
- index.columnIndex = relIndex;
- tscColumnListInsert(pTableMetaInfo->tagColList, index.columnIndex, pTableMeta->id.uid, pSchema);
+ tsc_index.columnIndex = relIndex;
+ tscColumnListInsert(pTableMetaInfo->tagColList, tsc_index.columnIndex, pTableMeta->id.uid, pSchema);
} else {
// check if the column type is valid, here only support the bool/tinyint/smallint/bigint group by
if (pSchema->type == TSDB_DATA_TYPE_FLOAT || pSchema->type == TSDB_DATA_TYPE_DOUBLE) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg5);
}
- tscColumnListInsert(pQueryInfo->colList, index.columnIndex, pTableMeta->id.uid, pSchema);
+ tscColumnListInsert(pQueryInfo->colList, tsc_index.columnIndex, pTableMeta->id.uid, pSchema);
- SColIndex colIndex = { .colIndex = index.columnIndex, .flag = TSDB_COL_NORMAL, .colId = pSchema->colId };
+ SColIndex colIndex = { .colIndex = tsc_index.columnIndex, .flag = TSDB_COL_NORMAL, .colId = pSchema->colId };
strncpy(colIndex.name, pSchema->name, tListLen(colIndex.name));
taosArrayPush(pGroupExpr->columnInfo, &colIndex);
@@ -4021,12 +4025,12 @@ static int32_t getColumnQueryCondInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSq
return getColumnQueryCondInfo(pCmd, pQueryInfo, pExpr->pRight, pExpr->tokenId);
} else { // handle leaf node
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
- if (getColumnIndexByName(&pExpr->pLeft->columnName, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
+ if (getColumnIndexByName(&pExpr->pLeft->columnName, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
- return extractColumnFilterInfo(pCmd, pQueryInfo, &index, pExpr, relOptr);
+ return extractColumnFilterInfo(pCmd, pQueryInfo, &tsc_index, pExpr, relOptr);
}
}
@@ -4050,17 +4054,17 @@ static int32_t checkAndSetJoinCondInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tS
return checkAndSetJoinCondInfo(pCmd, pQueryInfo, pExpr->pRight);
}
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
- if (getColumnIndexByName(&pExpr->pLeft->columnName, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
+ if (getColumnIndexByName(&pExpr->pLeft->columnName, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg4);
}
- STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
- SSchema* pTagSchema1 = tscGetTableColumnSchema(pTableMetaInfo->pTableMeta, index.columnIndex);
+ STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
+ SSchema* pTagSchema1 = tscGetTableColumnSchema(pTableMetaInfo->pTableMeta, tsc_index.columnIndex);
- assert(index.tableIndex >= 0 && index.tableIndex < TSDB_MAX_JOIN_TABLE_NUM);
+ assert(tsc_index.tableIndex >= 0 && tsc_index.tableIndex < TSDB_MAX_JOIN_TABLE_NUM);
- SJoinNode **leftNode = &pQueryInfo->tagCond.joinInfo.joinTables[index.tableIndex];
+ SJoinNode **leftNode = &pQueryInfo->tagCond.joinInfo.joinTables[tsc_index.tableIndex];
if (*leftNode == NULL) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
@@ -4071,9 +4075,9 @@ static int32_t checkAndSetJoinCondInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tS
if (UTIL_TABLE_IS_SUPER_TABLE(pTableMetaInfo)) {
STableMeta* pTableMeta = pTableMetaInfo->pTableMeta;
- index.columnIndex = index.columnIndex - tscGetNumOfColumns(pTableMetaInfo->pTableMeta);
+ tsc_index.columnIndex = tsc_index.columnIndex - tscGetNumOfColumns(pTableMetaInfo->pTableMeta);
if (tscColumnExists(pTableMetaInfo->tagColList, pTagSchema1->colId, pTableMetaInfo->pTableMeta->id.uid) < 0) {
- tscColumnListInsert(pTableMetaInfo->tagColList, index.columnIndex, pTableMeta->id.uid, pTagSchema1);
+ tscColumnListInsert(pTableMetaInfo->tagColList, tsc_index.columnIndex, pTableMeta->id.uid, pTagSchema1);
atomic_add_fetch_32(&pTableMetaInfo->joinTagNum, 1);
if (pTableMetaInfo->joinTagNum > 1) {
@@ -4082,19 +4086,19 @@ static int32_t checkAndSetJoinCondInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tS
}
}
- int16_t leftIdx = index.tableIndex;
+ int16_t leftIdx = tsc_index.tableIndex;
- index = (SColumnIndex)COLUMN_INDEX_INITIALIZER;
- if (getColumnIndexByName(&pExpr->pRight->columnName, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ tsc_index = (SColumnIndex)COLUMN_INDEX_INITIALIZER;
+ if (getColumnIndexByName(&pExpr->pRight->columnName, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg4);
}
- pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
- SSchema* pTagSchema2 = tscGetTableColumnSchema(pTableMetaInfo->pTableMeta, index.columnIndex);
+ pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
+ SSchema* pTagSchema2 = tscGetTableColumnSchema(pTableMetaInfo->pTableMeta, tsc_index.columnIndex);
- assert(index.tableIndex >= 0 && index.tableIndex < TSDB_MAX_JOIN_TABLE_NUM);
+ assert(tsc_index.tableIndex >= 0 && tsc_index.tableIndex < TSDB_MAX_JOIN_TABLE_NUM);
- SJoinNode **rightNode = &pQueryInfo->tagCond.joinInfo.joinTables[index.tableIndex];
+ SJoinNode **rightNode = &pQueryInfo->tagCond.joinInfo.joinTables[tsc_index.tableIndex];
if (*rightNode == NULL) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
@@ -4104,10 +4108,10 @@ static int32_t checkAndSetJoinCondInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tS
if (UTIL_TABLE_IS_SUPER_TABLE(pTableMetaInfo)) {
STableMeta* pTableMeta = pTableMetaInfo->pTableMeta;
- index.columnIndex = index.columnIndex - tscGetNumOfColumns(pTableMeta);
+ tsc_index.columnIndex = tsc_index.columnIndex - tscGetNumOfColumns(pTableMeta);
if (tscColumnExists(pTableMetaInfo->tagColList, pTagSchema2->colId, pTableMeta->id.uid) < 0) {
- tscColumnListInsert(pTableMetaInfo->tagColList, index.columnIndex, pTableMeta->id.uid, pTagSchema2);
+ tscColumnListInsert(pTableMetaInfo->tagColList, tsc_index.columnIndex, pTableMeta->id.uid, pTagSchema2);
atomic_add_fetch_32(&pTableMetaInfo->joinTagNum, 1);
if (pTableMetaInfo->joinTagNum > 1) {
@@ -4116,7 +4120,7 @@ static int32_t checkAndSetJoinCondInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tS
}
}
- int16_t rightIdx = index.tableIndex;
+ int16_t rightIdx = tsc_index.tableIndex;
if (pTagSchema1->type != pTagSchema2->type) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
@@ -4157,21 +4161,21 @@ static int32_t validateSQLExpr(SSqlCmd* pCmd, tSqlExpr* pExpr, SQueryInfo* pQuer
return TSDB_CODE_TSC_INVALID_OPERATION;
}
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
- if (getColumnIndexByName(&pExpr->columnName, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
+ if (getColumnIndexByName(&pExpr->columnName, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
// if column is timestamp, bool, binary, nchar, not support arithmetic, so return invalid sql
- STableMeta* pTableMeta = tscGetMetaInfo(pQueryInfo, index.tableIndex)->pTableMeta;
- SSchema* pSchema = tscGetTableSchema(pTableMeta) + index.columnIndex;
+ STableMeta* pTableMeta = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex)->pTableMeta;
+ SSchema* pSchema = tscGetTableSchema(pTableMeta) + tsc_index.columnIndex;
if ((pSchema->type == TSDB_DATA_TYPE_TIMESTAMP) || (pSchema->type == TSDB_DATA_TYPE_BOOL) ||
(pSchema->type == TSDB_DATA_TYPE_BINARY) || (pSchema->type == TSDB_DATA_TYPE_NCHAR)) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
- pList->ids[pList->num++] = index;
+ pList->ids[pList->num++] = tsc_index;
} else if ((pExpr->tokenId == TK_FLOAT && (isnan(pExpr->value.dKey) || isinf(pExpr->value.dKey))) ||
pExpr->tokenId == TK_NULL) {
return TSDB_CODE_TSC_INVALID_OPERATION;
@@ -4435,7 +4439,7 @@ static int32_t validateNullExpr(tSqlExpr* pExpr, char* msgBuf) {
}
// check for like expression
-static int32_t validateLikeExpr(tSqlExpr* pExpr, STableMeta* pTableMeta, int32_t index, char* msgBuf) {
+static int32_t validateLikeExpr(tSqlExpr* pExpr, STableMeta* pTableMeta, int32_t tsc_index, char* msgBuf) {
const char* msg1 = "wildcard string should be less than %d characters";
const char* msg2 = "illegal column name";
@@ -4450,7 +4454,7 @@ static int32_t validateLikeExpr(tSqlExpr* pExpr, STableMeta* pTableMeta, int32_t
}
SSchema* pSchema = tscGetTableSchema(pTableMeta);
- if ((!isTablenameToken(&pLeft->columnName)) && !IS_VAR_DATA_TYPE(pSchema[index].type)) {
+ if ((!isTablenameToken(&pLeft->columnName)) && !IS_VAR_DATA_TYPE(pSchema[tsc_index].type)) {
return invalidOperationMsg(msgBuf, msg2);
}
}
@@ -4473,16 +4477,16 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
int32_t ret = TSDB_CODE_SUCCESS;
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
- if (getColumnIndexByName(&pLeft->columnName, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
+ if (getColumnIndexByName(&pLeft->columnName, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2);
}
- *tbIdx = index.tableIndex;
+ *tbIdx = tsc_index.tableIndex;
assert(tSqlExprIsParentOfLeaf(*pExpr));
- STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
+ STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
STableMeta* pTableMeta = pTableMetaInfo->pTableMeta;
// validate the null expression
@@ -4492,14 +4496,14 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
}
// validate the like expression
- code = validateLikeExpr(*pExpr, pTableMeta, index.columnIndex, tscGetErrorMsgPayload(pCmd));
+ code = validateLikeExpr(*pExpr, pTableMeta, tsc_index.columnIndex, tscGetErrorMsgPayload(pCmd));
if (code != TSDB_CODE_SUCCESS) {
return code;
}
- SSchema* pSchema = tscGetTableColumnSchema(pTableMeta, index.columnIndex);
- if (pSchema->type == TSDB_DATA_TYPE_TIMESTAMP && index.columnIndex == PRIMARYKEY_TIMESTAMP_COL_INDEX) { // query on time range
- if (!validateJoinExprNode(pCmd, pQueryInfo, *pExpr, &index)) {
+ SSchema* pSchema = tscGetTableColumnSchema(pTableMeta, tsc_index.columnIndex);
+ if (pSchema->type == TSDB_DATA_TYPE_TIMESTAMP && tsc_index.columnIndex == PRIMARYKEY_TIMESTAMP_COL_INDEX) { // query on time range
+ if (!validateJoinExprNode(pCmd, pQueryInfo, *pExpr, &tsc_index)) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
@@ -4508,8 +4512,8 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
TSDB_QUERY_SET_TYPE(pQueryInfo->type, TSDB_QUERY_TYPE_JOIN_QUERY);
pCondExpr->tsJoin = true;
- assert(index.tableIndex >= 0 && index.tableIndex < TSDB_MAX_JOIN_TABLE_NUM);
- SJoinNode **leftNode = &pQueryInfo->tagCond.joinInfo.joinTables[index.tableIndex];
+ assert(tsc_index.tableIndex >= 0 && tsc_index.tableIndex < TSDB_MAX_JOIN_TABLE_NUM);
+ SJoinNode **leftNode = &pQueryInfo->tagCond.joinInfo.joinTables[tsc_index.tableIndex];
if (*leftNode == NULL) {
*leftNode = calloc(1, sizeof(SJoinNode));
if (*leftNode == NULL) {
@@ -4517,17 +4521,17 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
}
}
- int16_t leftIdx = index.tableIndex;
+ int16_t leftIdx = tsc_index.tableIndex;
- if (getColumnIndexByName(&pRight->columnName, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ if (getColumnIndexByName(&pRight->columnName, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2);
}
- if (index.tableIndex < 0 || index.tableIndex >= TSDB_MAX_JOIN_TABLE_NUM) {
+ if (tsc_index.tableIndex < 0 || tsc_index.tableIndex >= TSDB_MAX_JOIN_TABLE_NUM) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg4);
}
- SJoinNode **rightNode = &pQueryInfo->tagCond.joinInfo.joinTables[index.tableIndex];
+ SJoinNode **rightNode = &pQueryInfo->tagCond.joinInfo.joinTables[tsc_index.tableIndex];
if (*rightNode == NULL) {
*rightNode = calloc(1, sizeof(SJoinNode));
if (*rightNode == NULL) {
@@ -4535,7 +4539,7 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
}
}
- int16_t rightIdx = index.tableIndex;
+ int16_t rightIdx = tsc_index.tableIndex;
if ((*leftNode)->tsJoin == NULL) {
(*leftNode)->tsJoin = taosArrayInit(2, sizeof(int16_t));
@@ -4559,14 +4563,14 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
*pExpr = NULL; // remove this expression
*type = TSQL_EXPR_TS;
- } else if (index.columnIndex >= tscGetNumOfColumns(pTableMeta) || index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
+ } else if (tsc_index.columnIndex >= tscGetNumOfColumns(pTableMeta) || tsc_index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
// query on tags, check for tag query condition
if (UTIL_TABLE_IS_NORMAL_TABLE(pTableMetaInfo)) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
// in case of in operator, keep it in a seprate attribute
- if (index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
+ if (tsc_index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
if (!validTableNameOptr(*pExpr)) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg7);
}
@@ -4578,7 +4582,7 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
if (pCondExpr->pTableCond == NULL) {
pCondExpr->pTableCond = *pExpr;
pCondExpr->relType = parentOptr;
- pCondExpr->tableCondIndex = index.tableIndex;
+ pCondExpr->tableCondIndex = tsc_index.tableIndex;
} else {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg6);
}
@@ -4587,7 +4591,7 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
*pExpr = NULL;
} else {
if (pRight != NULL && pRight->tokenId == TK_ID) { // join on tag columns for stable query
- if (!validateJoinExprNode(pCmd, pQueryInfo, *pExpr, &index)) {
+ if (!validateJoinExprNode(pCmd, pQueryInfo, *pExpr, &tsc_index)) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
@@ -4690,12 +4694,12 @@ static void doExtractExprForSTable(SSqlCmd* pCmd, tSqlExpr** pExpr, SQueryInfo*
if (tSqlExprIsParentOfLeaf(*pExpr)) {
tSqlExpr* pLeft = (*pExpr)->pLeft;
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
- if (getColumnIndexByName(&pLeft->columnName, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
+ if (getColumnIndexByName(&pLeft->columnName, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return;
}
- if (index.tableIndex != tableIndex) {
+ if (tsc_index.tableIndex != tableIndex) {
return;
}
@@ -4860,12 +4864,12 @@ static int32_t getTimeRangeFromExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSqlE
return getTimeRangeFromExpr(pCmd, pQueryInfo, pExpr->pRight);
} else {
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
- if (getColumnIndexByName(&pExpr->pLeft->columnName, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
+ if (getColumnIndexByName(&pExpr->pLeft->columnName, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
- STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
+ STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta);
tSqlExpr* pRight = pExpr->pRight;
@@ -4943,27 +4947,27 @@ static void cleanQueryExpr(SCondExpr* pCondExpr) {
static void doAddJoinTagsColumnsIntoTagList(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SCondExpr* pCondExpr) {
STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
if (QUERY_IS_JOIN_QUERY(pQueryInfo->type) && UTIL_TABLE_IS_SUPER_TABLE(pTableMetaInfo)) {
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
- if (getColumnIndexByName(pCmd, &pCondExpr->pJoinExpr->pLeft->ColName, pQueryInfo, &index) != TSDB_CODE_SUCCESS) {
+ if (getColumnIndexByName(pCmd, &pCondExpr->pJoinExpr->pLeft->ColName, pQueryInfo, &tsc_index) != TSDB_CODE_SUCCESS) {
tscError("%p: invalid column name (left)", pQueryInfo);
}
- pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
- index.columnIndex = index.columnIndex - tscGetNumOfColumns(pTableMetaInfo->pTableMeta);
+ pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
+ tsc_index.columnIndex = tsc_index.columnIndex - tscGetNumOfColumns(pTableMetaInfo->pTableMeta);
SSchema* pSchema = tscGetTableTagSchema(pTableMetaInfo->pTableMeta);
- tscColumnListInsert(pTableMetaInfo->tagColList, &index, &pSchema[index.columnIndex]);
+ tscColumnListInsert(pTableMetaInfo->tagColList, &tsc_index, &pSchema[tsc_index.columnIndex]);
- if (getColumnIndexByName(pCmd, &pCondExpr->pJoinExpr->pRight->ColName, pQueryInfo, &index) != TSDB_CODE_SUCCESS) {
+ if (getColumnIndexByName(pCmd, &pCondExpr->pJoinExpr->pRight->ColName, pQueryInfo, &tsc_index) != TSDB_CODE_SUCCESS) {
tscError("%p: invalid column name (right)", pQueryInfo);
}
- pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
- index.columnIndex = index.columnIndex - tscGetNumOfColumns(pTableMetaInfo->pTableMeta);
+ pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
+ tsc_index.columnIndex = tsc_index.columnIndex - tscGetNumOfColumns(pTableMetaInfo->pTableMeta);
pSchema = tscGetTableTagSchema(pTableMetaInfo->pTableMeta);
- tscColumnListInsert(pTableMetaInfo->tagColList, &index, &pSchema[index.columnIndex]);
+ tscColumnListInsert(pTableMetaInfo->tagColList, &tsc_index, &pSchema[tsc_index.columnIndex]);
}
}
*/
@@ -5082,10 +5086,10 @@ static int32_t getTagQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SCondE
size_t num = taosArrayGetSize(colList);
for(int32_t j = 0; j < num; ++j) {
SColIndex* pIndex = taosArrayGet(colList, j);
- SColumnIndex index = {.tableIndex = i, .columnIndex = pIndex->colIndex - numOfCols};
+ SColumnIndex tsc_index = {.tableIndex = i, .columnIndex = pIndex->colIndex - numOfCols};
SSchema* s = tscGetTableSchema(pTableMetaInfo->pTableMeta);
- tscColumnListInsert(pTableMetaInfo->tagColList, index.columnIndex, pTableMetaInfo->pTableMeta->id.uid,
+ tscColumnListInsert(pTableMetaInfo->tagColList, tsc_index.columnIndex, pTableMetaInfo->pTableMeta->id.uid,
&s[pIndex->colIndex]);
}
@@ -5604,7 +5608,7 @@ int32_t validateOrderbyNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSq
}
SStrToken columnName = {pVar->nLen, pVar->nType, pVar->pz};
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
bool udf = false;
if (pQueryInfo->pUdfInfo && taosArrayGetSize(pQueryInfo->pUdfInfo) > 0) {
@@ -5620,7 +5624,7 @@ int32_t validateOrderbyNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSq
}
if (UTIL_TABLE_IS_SUPER_TABLE(pTableMetaInfo)) { // super table query
- if (getColumnIndexByName(&columnName, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ if (getColumnIndexByName(&columnName, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(pMsgBuf, msg1);
}
@@ -5628,8 +5632,8 @@ int32_t validateOrderbyNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSq
bool orderByTS = false;
bool orderByGroupbyCol = false;
- if (index.columnIndex >= tscGetNumOfColumns(pTableMetaInfo->pTableMeta)) {
- int32_t relTagIndex = index.columnIndex - tscGetNumOfColumns(pTableMetaInfo->pTableMeta);
+ if (tsc_index.columnIndex >= tscGetNumOfColumns(pTableMetaInfo->pTableMeta)) {
+ int32_t relTagIndex = tsc_index.columnIndex - tscGetNumOfColumns(pTableMetaInfo->pTableMeta);
// it is a tag column
if (pQueryInfo->groupbyExpr.columnInfo == NULL) {
@@ -5639,18 +5643,18 @@ int32_t validateOrderbyNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSq
if (relTagIndex == pColIndex->colIndex) {
orderByTags = true;
}
- } else if (index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
+ } else if (tsc_index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
orderByTags = true;
}
- if (PRIMARYKEY_TIMESTAMP_COL_INDEX == index.columnIndex) {
+ if (PRIMARYKEY_TIMESTAMP_COL_INDEX == tsc_index.columnIndex) {
orderByTS = true;
}
SArray *columnInfo = pQueryInfo->groupbyExpr.columnInfo;
if (columnInfo != NULL && taosArrayGetSize(columnInfo) > 0) {
SColIndex* pColIndex = taosArrayGet(columnInfo, 0);
- if (PRIMARYKEY_TIMESTAMP_COL_INDEX != index.columnIndex && pColIndex->colIndex == index.columnIndex) {
+ if (PRIMARYKEY_TIMESTAMP_COL_INDEX != tsc_index.columnIndex && pColIndex->colIndex == tsc_index.columnIndex) {
orderByGroupbyCol = true;
}
}
@@ -5664,7 +5668,7 @@ int32_t validateOrderbyNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSq
size_t s = taosArrayGetSize(pSortOrder);
if (s == 1) {
if (orderByTags) {
- pQueryInfo->groupbyExpr.orderIndex = index.columnIndex - tscGetNumOfColumns(pTableMetaInfo->pTableMeta);
+ pQueryInfo->groupbyExpr.orderIndex = tsc_index.columnIndex - tscGetNumOfColumns(pTableMetaInfo->pTableMeta);
tVariantListItem* p1 = taosArrayGet(pSqlNode->pSortOrder, 0);
pQueryInfo->groupbyExpr.orderType = p1->sortOrder;
@@ -5672,7 +5676,7 @@ int32_t validateOrderbyNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSq
tVariantListItem* p1 = taosArrayGet(pSqlNode->pSortOrder, 0);
pQueryInfo->groupbyExpr.orderType = p1->sortOrder;
- pQueryInfo->order.orderColId = pSchema[index.columnIndex].colId;
+ pQueryInfo->order.orderColId = pSchema[tsc_index.columnIndex].colId;
if (udf) {
return invalidOperationMsg(pMsgBuf, msg11);
}
@@ -5684,13 +5688,13 @@ int32_t validateOrderbyNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSq
assert(pExpr->base.functionId == TSDB_FUNC_TS);
pExpr = tscExprGet(pQueryInfo, topBotIndex);
- if (pExpr->base.colInfo.colIndex != index.columnIndex && index.columnIndex != PRIMARYKEY_TIMESTAMP_COL_INDEX) {
+ if (pExpr->base.colInfo.colIndex != tsc_index.columnIndex && tsc_index.columnIndex != PRIMARYKEY_TIMESTAMP_COL_INDEX) {
return invalidOperationMsg(pMsgBuf, msg2);
}
tVariantListItem* p1 = taosArrayGet(pSqlNode->pSortOrder, 0);
pQueryInfo->order.order = p1->sortOrder;
- pQueryInfo->order.orderColId = pSchema[index.columnIndex].colId;
+ pQueryInfo->order.orderColId = pSchema[tsc_index.columnIndex].colId;
return TSDB_CODE_SUCCESS;
} else {
tVariantListItem* p1 = taosArrayGet(pSqlNode->pSortOrder, 0);
@@ -5721,11 +5725,11 @@ int32_t validateOrderbyNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSq
} else {
tVariantListItem *pItem = taosArrayGet(pSqlNode->pSortOrder, 0);
if (orderByTags) {
- pQueryInfo->groupbyExpr.orderIndex = index.columnIndex - tscGetNumOfColumns(pTableMetaInfo->pTableMeta);
+ pQueryInfo->groupbyExpr.orderIndex = tsc_index.columnIndex - tscGetNumOfColumns(pTableMetaInfo->pTableMeta);
pQueryInfo->groupbyExpr.orderType = pItem->sortOrder;
} else if (orderByGroupbyCol){
pQueryInfo->order.order = pItem->sortOrder;
- pQueryInfo->order.orderColId = index.columnIndex;
+ pQueryInfo->order.orderColId = tsc_index.columnIndex;
if (udf) {
return invalidOperationMsg(pMsgBuf, msg11);
}
@@ -5740,11 +5744,11 @@ int32_t validateOrderbyNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSq
pItem = taosArrayGet(pSqlNode->pSortOrder, 1);
tVariant* pVar2 = &pItem->pVar;
SStrToken cname = {pVar2->nLen, pVar2->nType, pVar2->pz};
- if (getColumnIndexByName(&cname, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ if (getColumnIndexByName(&cname, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(pMsgBuf, msg1);
}
- if (index.columnIndex != PRIMARYKEY_TIMESTAMP_COL_INDEX) {
+ if (tsc_index.columnIndex != PRIMARYKEY_TIMESTAMP_COL_INDEX) {
return invalidOperationMsg(pMsgBuf, msg2);
} else {
tVariantListItem* p1 = taosArrayGet(pSortOrder, 1);
@@ -5754,16 +5758,16 @@ int32_t validateOrderbyNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSq
}
} else if (UTIL_TABLE_IS_NORMAL_TABLE(pTableMetaInfo) || UTIL_TABLE_IS_CHILD_TABLE(pTableMetaInfo)) { // check order by clause for normal table & temp table
- if (getColumnIndexByName(&columnName, pQueryInfo, &index, pMsgBuf) != TSDB_CODE_SUCCESS) {
+ if (getColumnIndexByName(&columnName, pQueryInfo, &tsc_index, pMsgBuf) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(pMsgBuf, msg1);
}
- if (index.columnIndex != PRIMARYKEY_TIMESTAMP_COL_INDEX && !isTopBottomQuery(pQueryInfo)) {
+ if (tsc_index.columnIndex != PRIMARYKEY_TIMESTAMP_COL_INDEX && !isTopBottomQuery(pQueryInfo)) {
bool validOrder = false;
SArray *columnInfo = pQueryInfo->groupbyExpr.columnInfo;
if (columnInfo != NULL && taosArrayGetSize(columnInfo) > 0) {
SColIndex* pColIndex = taosArrayGet(columnInfo, 0);
- validOrder = (pColIndex->colIndex == index.columnIndex);
+ validOrder = (pColIndex->colIndex == tsc_index.columnIndex);
}
if (!validOrder) {
@@ -5775,7 +5779,7 @@ int32_t validateOrderbyNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSq
}
tVariantListItem* p1 = taosArrayGet(pSqlNode->pSortOrder, 0);
- pQueryInfo->groupbyExpr.orderIndex = pSchema[index.columnIndex].colId;
+ pQueryInfo->groupbyExpr.orderIndex = pSchema[tsc_index.columnIndex].colId;
pQueryInfo->groupbyExpr.orderType = p1->sortOrder;
}
@@ -5784,7 +5788,7 @@ int32_t validateOrderbyNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSq
SArray *columnInfo = pQueryInfo->groupbyExpr.columnInfo;
if (columnInfo != NULL && taosArrayGetSize(columnInfo) > 0) {
SColIndex* pColIndex = taosArrayGet(columnInfo, 0);
- validOrder = (pColIndex->colIndex == index.columnIndex);
+ validOrder = (pColIndex->colIndex == tsc_index.columnIndex);
} else {
int32_t topBotIndex = tscGetTopBotQueryExprIndex(pQueryInfo);
assert(topBotIndex >= 1);
@@ -5793,7 +5797,7 @@ int32_t validateOrderbyNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSq
assert(pExpr->base.functionId == TSDB_FUNC_TS);
pExpr = tscExprGet(pQueryInfo, topBotIndex);
- if (pExpr->base.colInfo.colIndex != index.columnIndex && index.columnIndex != PRIMARYKEY_TIMESTAMP_COL_INDEX) {
+ if (pExpr->base.colInfo.colIndex != tsc_index.columnIndex && tsc_index.columnIndex != PRIMARYKEY_TIMESTAMP_COL_INDEX) {
return invalidOperationMsg(pMsgBuf, msg2);
}
@@ -5807,7 +5811,7 @@ int32_t validateOrderbyNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSq
tVariantListItem* pItem = taosArrayGet(pSqlNode->pSortOrder, 0);
pQueryInfo->order.order = pItem->sortOrder;
- pQueryInfo->order.orderColId = pSchema[index.columnIndex].colId;
+ pQueryInfo->order.orderColId = pSchema[tsc_index.columnIndex].colId;
return TSDB_CODE_SUCCESS;
}
@@ -5817,13 +5821,13 @@ int32_t validateOrderbyNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSq
tVariantListItem* pItem = taosArrayGet(pSqlNode->pSortOrder, 0);
pQueryInfo->order.order = pItem->sortOrder;
- pQueryInfo->order.orderColId = pSchema[index.columnIndex].colId;
+ pQueryInfo->order.orderColId = pSchema[tsc_index.columnIndex].colId;
} else {
// handle the temp table order by clause. You can order by any single column in case of the temp table, created by
// inner subquery.
assert(UTIL_TABLE_IS_TMP_TABLE(pTableMetaInfo) && taosArrayGetSize(pSqlNode->pSortOrder) == 1);
- if (getColumnIndexByName(&columnName, pQueryInfo, &index, pMsgBuf) != TSDB_CODE_SUCCESS) {
+ if (getColumnIndexByName(&columnName, pQueryInfo, &tsc_index, pMsgBuf) != TSDB_CODE_SUCCESS) {
return invalidOperationMsg(pMsgBuf, msg1);
}
@@ -5833,7 +5837,7 @@ int32_t validateOrderbyNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSq
tVariantListItem* pItem = taosArrayGet(pSqlNode->pSortOrder, 0);
pQueryInfo->order.order = pItem->sortOrder;
- pQueryInfo->order.orderColId = pSchema[index.columnIndex].colId;
+ pQueryInfo->order.orderColId = pSchema[tsc_index.columnIndex].colId;
}
return TSDB_CODE_SUCCESS;
@@ -5937,17 +5941,17 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
return invalidOperationMsg(pMsg, msg9);
}
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
SStrToken name = {.z = pItem->pVar.pz, .n = pItem->pVar.nLen, .type = TK_STRING};
- if (getColumnIndexByName(&name, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
+ if (getColumnIndexByName(&name, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
int32_t numOfCols = tscGetNumOfColumns(pTableMeta);
- if (index.columnIndex < numOfCols) {
+ if (tsc_index.columnIndex < numOfCols) {
return invalidOperationMsg(pMsg, msg10);
- } else if (index.columnIndex == numOfCols) {
+ } else if (tsc_index.columnIndex == numOfCols) {
return invalidOperationMsg(pMsg, msg11);
}
@@ -6706,20 +6710,20 @@ void addGroupInfoForSubquery(SSqlObj* pParentObj, SSqlObj* pSql, int32_t subClau
SSchema* pTagSchema = tscGetColumnSchemaById(pTableMetaInfo->pTableMeta, colId);
int16_t colIndex = tscGetTagColIndexById(pTableMetaInfo->pTableMeta, colId);
- SColumnIndex index = {.tableIndex = 0, .columnIndex = colIndex};
+ SColumnIndex tsc_index = {.tableIndex = 0, .columnIndex = colIndex};
char* name = pTagSchema->name;
int16_t type = pTagSchema->type;
int16_t bytes = pTagSchema->bytes;
- pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_TAG, &index, type, bytes, getNewResColId(&pSql->cmd), bytes, true);
+ pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_TAG, &tsc_index, type, bytes, getNewResColId(&pSql->cmd), bytes, true);
pExpr->base.colInfo.flag = TSDB_COL_TAG;
// NOTE: tag column does not add to source column list
SColumnList ids = {0};
insertResultField(pQueryInfo, (int32_t)size, &ids, bytes, (int8_t)type, name, pExpr);
- int32_t relIndex = index.columnIndex;
+ int32_t relIndex = tsc_index.columnIndex;
pExpr->base.colInfo.colIndex = relIndex;
SColIndex* pColIndex = taosArrayGet(pQueryInfo->groupbyExpr.columnInfo, 0);
@@ -7035,8 +7039,8 @@ static int32_t doAddGroupbyColumnsOnDemand(SSqlCmd* pCmd, SQueryInfo* pQueryInfo
int32_t pos = tscGetFirstInvisibleFieldPos(pQueryInfo);
- SColumnIndex index = {.tableIndex = pQueryInfo->groupbyExpr.tableIndex, .columnIndex = colIndex};
- SExprInfo* pExpr = tscExprInsert(pQueryInfo, pos, f, &index, s->type, s->bytes, getNewResColId(pCmd), s->bytes, true);
+ SColumnIndex tsc_index = {.tableIndex = pQueryInfo->groupbyExpr.tableIndex, .columnIndex = colIndex};
+ SExprInfo* pExpr = tscExprInsert(pQueryInfo, pos, f, &tsc_index, s->type, s->bytes, getNewResColId(pCmd), s->bytes, true);
memset(pExpr->base.aliasName, 0, sizeof(pExpr->base.aliasName));
tstrncpy(pExpr->base.aliasName, s->name, sizeof(pExpr->base.aliasName));
@@ -7265,20 +7269,20 @@ int32_t doLocalQueryProcess(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSq
{"client_version()", 16},
{"current_user()", 14}};
- int32_t index = -1;
+ int32_t tsc_index = -1;
if (server_status == true) {
- index = 2;
+ tsc_index = 2;
} else {
for (int32_t i = 0; i < tListLen(functionsInfo); ++i) {
if (strncasecmp(functionsInfo[i].name, pExpr->exprToken.z, functionsInfo[i].len) == 0 &&
functionsInfo[i].len == pExpr->exprToken.n) {
- index = i;
+ tsc_index = i;
break;
}
}
}
- switch (index) {
+ switch (tsc_index) {
case 0:
pQueryInfo->command = TSDB_SQL_CURRENT_DB;break;
case 1:
@@ -7297,7 +7301,7 @@ int32_t doLocalQueryProcess(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode* pSq
tDataTypes[TSDB_DATA_TYPE_INT].bytes, getNewResColId(pCmd), tDataTypes[TSDB_DATA_TYPE_INT].bytes, false);
tSqlExprItem* item = taosArrayGet(pExprList, 0);
- const char* name = (item->aliasName != NULL)? item->aliasName:functionsInfo[index].name;
+ const char* name = (item->aliasName != NULL)? item->aliasName:functionsInfo[tsc_index].name;
tstrncpy(pExpr1->base.aliasName, name, tListLen(pExpr1->base.aliasName));
return TSDB_CODE_SUCCESS;
@@ -7903,10 +7907,10 @@ int32_t tscGetExprFilters(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SArray* pSelect
pParam = taosArrayGet(pSqlExpr->Expr.paramList, 0);
SStrToken* pToken = &pParam->pNode->columnName;
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
- getColumnIndexByName(pToken, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd));
- STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
- schema = *tscGetTableColumnSchema(pTableMetaInfo->pTableMeta, index.columnIndex);
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
+ getColumnIndexByName(pToken, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd));
+ STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
+ schema = *tscGetTableColumnSchema(pTableMetaInfo->pTableMeta, tsc_index.columnIndex);
} else {
schema = (SSchema) {.colId = PRIMARYKEY_TIMESTAMP_COL_INDEX, .type = TSDB_DATA_TYPE_TIMESTAMP, .bytes = TSDB_KEYSIZE};
}
@@ -7926,15 +7930,15 @@ int32_t tscGetExprFilters(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SArray* pSelect
//
// if (tSqlExprCompare(pItem->pNode, pSqlExpr) == 0) { // exists, not added it,
//
-// SColumnIndex index = COLUMN_INDEX_INITIALIZER;
+// SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
// int32_t functionId = pSqlExpr->functionId;
// if (pSqlExpr->Expr.paramList == NULL) {
-// index.columnIndex = 0;
-// index.tableIndex = 0;
+// tsc_index.columnIndex = 0;
+// tsc_index.tableIndex = 0;
// } else {
// tSqlExprItem* pParamElem = taosArrayGet(pSqlExpr->Expr.paramList, 0);
// SStrToken* pToken = &pParamElem->pNode->columnName;
-// getColumnIndexByName(pToken, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd));
+// getColumnIndexByName(pToken, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd));
// }
//
// size_t numOfNodeInSel = tscNumOfExprs(pQueryInfo);
@@ -7945,7 +7949,7 @@ int32_t tscGetExprFilters(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SArray* pSelect
// continue;
// }
//
-// if (pExpr1->base.colInfo.colIndex != index.columnIndex) {
+// if (pExpr1->base.colInfo.colIndex != tsc_index.columnIndex) {
// continue;
// }
//
@@ -8121,16 +8125,16 @@ int32_t getHavingExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SArray* pSelectNode
}
if (pExpr1->tokenId == TK_ID) {
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
- if ((getColumnIndexByName(&pExpr1->columnName, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS)) {
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
+ if ((getColumnIndexByName(&pExpr1->columnName, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd)) != TSDB_CODE_SUCCESS)) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
- STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, index.tableIndex);
+ STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex);
STableMeta* pTableMeta = pTableMetaInfo->pTableMeta;
- if (index.columnIndex <= 0 ||
- index.columnIndex >= tscGetNumOfColumns(pTableMeta)) {
+ if (tsc_index.columnIndex <= 0 ||
+ tsc_index.columnIndex >= tscGetNumOfColumns(pTableMeta)) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
}
}
@@ -8583,8 +8587,8 @@ static STableMeta* extractTempTableMetaFromSubquery(SQueryInfo* pUpstream) {
return meta;
}
-static int32_t doValidateSubquery(SSqlNode* pSqlNode, int32_t index, SSqlObj* pSql, SQueryInfo* pQueryInfo, char* msgBuf) {
- SRelElementPair* subInfo = taosArrayGet(pSqlNode->from->list, index);
+static int32_t doValidateSubquery(SSqlNode* pSqlNode, int32_t tsc_index, SSqlObj* pSql, SQueryInfo* pQueryInfo, char* msgBuf) {
+ SRelElementPair* subInfo = taosArrayGet(pSqlNode->from->list, tsc_index);
// union all is not support currently
SSqlNode* p = taosArrayGetP(subInfo->pSubquery, 0);
@@ -9004,7 +9008,7 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf
int32_t exprTreeFromSqlExpr(SSqlCmd* pCmd, tExprNode **pExpr, const tSqlExpr* pSqlExpr, SQueryInfo* pQueryInfo, SArray* pCols, uint64_t *uid) {
tExprNode* pLeft = NULL;
tExprNode* pRight= NULL;
- SColumnIndex index = COLUMN_INDEX_INITIALIZER;
+ SColumnIndex tsc_index = COLUMN_INDEX_INITIALIZER;
if (pSqlExpr->pLeft != NULL) {
int32_t ret = exprTreeFromSqlExpr(pCmd, &pLeft, pSqlExpr->pLeft, pQueryInfo, pCols, uid);
@@ -9076,13 +9080,13 @@ int32_t exprTreeFromSqlExpr(SSqlCmd* pCmd, tExprNode **pExpr, const tSqlExpr* pS
}
}
} else if (pSqlExpr->type == SQL_NODE_TABLE_COLUMN) { // column name, normal column arithmetic expression
- int32_t ret = getColumnIndexByName(&pSqlExpr->columnName, pQueryInfo, &index, tscGetErrorMsgPayload(pCmd));
+ int32_t ret = getColumnIndexByName(&pSqlExpr->columnName, pQueryInfo, &tsc_index, tscGetErrorMsgPayload(pCmd));
if (ret != TSDB_CODE_SUCCESS) {
return ret;
}
- pQueryInfo->curTableIdx = index.tableIndex;
- STableMeta* pTableMeta = tscGetMetaInfo(pQueryInfo, index.tableIndex)->pTableMeta;
+ pQueryInfo->curTableIdx = tsc_index.tableIndex;
+ STableMeta* pTableMeta = tscGetMetaInfo(pQueryInfo, tsc_index.tableIndex)->pTableMeta;
int32_t numOfColumns = tscGetNumOfColumns(pTableMeta);
*pExpr = calloc(1, sizeof(tExprNode));
@@ -9091,14 +9095,14 @@ int32_t exprTreeFromSqlExpr(SSqlCmd* pCmd, tExprNode **pExpr, const tSqlExpr* pS
SSchema* pSchema = NULL;
- if (index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
+ if (tsc_index.columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
pSchema = (*pExpr)->pSchema;
strcpy(pSchema->name, TSQL_TBNAME_L);
pSchema->type = TSDB_DATA_TYPE_BINARY;
pSchema->colId = TSDB_TBNAME_COLUMN_INDEX;
pSchema->bytes = -1;
} else {
- pSchema = tscGetTableColumnSchema(pTableMeta, index.columnIndex);
+ pSchema = tscGetTableColumnSchema(pTableMeta, tsc_index.columnIndex);
*(*pExpr)->pSchema = *pSchema;
}
@@ -9106,8 +9110,8 @@ int32_t exprTreeFromSqlExpr(SSqlCmd* pCmd, tExprNode **pExpr, const tSqlExpr* pS
SColIndex colIndex = {0};
tstrncpy(colIndex.name, pSchema->name, sizeof(colIndex.name));
colIndex.colId = pSchema->colId;
- colIndex.colIndex = index.columnIndex;
- colIndex.flag = (index.columnIndex >= numOfColumns)? 1:0;
+ colIndex.colIndex = tsc_index.columnIndex;
+ colIndex.flag = (tsc_index.columnIndex >= numOfColumns)? 1:0;
taosArrayPush(pCols, &colIndex);
}
diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c
index b8cb5fea28c74cbfd6d4756d0121319abb424100..bd5c95480a224e681c7e576bd234dca2c42a8656 100644
--- a/src/client/src/tscServer.c
+++ b/src/client/src/tscServer.c
@@ -860,13 +860,13 @@ static char *doSerializeTableInfo(SQueryTableMsg *pQueryMsg, SSqlObj *pSql, STab
int32_t vgId = -1;
if (UTIL_TABLE_IS_SUPER_TABLE(pTableMetaInfo)) {
- int32_t index = pTableMetaInfo->vgroupIndex;
- assert(index >= 0);
+ int32_t tsc_index = pTableMetaInfo->vgroupIndex;
+ assert(tsc_index >= 0);
SVgroupInfo* pVgroupInfo = NULL;
if (pTableMetaInfo->vgroupList && pTableMetaInfo->vgroupList->numOfVgroups > 0) {
- assert(index < pTableMetaInfo->vgroupList->numOfVgroups);
- pVgroupInfo = &pTableMetaInfo->vgroupList->vgroups[index];
+ assert(tsc_index < pTableMetaInfo->vgroupList->numOfVgroups);
+ pVgroupInfo = &pTableMetaInfo->vgroupList->vgroups[tsc_index];
} else {
tscError("0x%"PRIx64" No vgroup info found", pSql->self);
@@ -876,7 +876,7 @@ static char *doSerializeTableInfo(SQueryTableMsg *pQueryMsg, SSqlObj *pSql, STab
vgId = pVgroupInfo->vgId;
tscSetDnodeEpSet(&pSql->epSet, pVgroupInfo);
- tscDebug("0x%"PRIx64" query on stable, vgIndex:%d, numOfVgroups:%d", pSql->self, index, pTableMetaInfo->vgroupList->numOfVgroups);
+ tscDebug("0x%"PRIx64" query on stable, vgIndex:%d, numOfVgroups:%d", pSql->self, tsc_index, pTableMetaInfo->vgroupList->numOfVgroups);
} else {
vgId = pTableMeta->vgId;
@@ -898,11 +898,11 @@ static char *doSerializeTableInfo(SQueryTableMsg *pQueryMsg, SSqlObj *pSql, STab
pQueryMsg->numOfTables = htonl(1); // set the number of tables
pMsg += sizeof(STableIdInfo);
} else { // it is a subquery of the super table query, this EP info is acquired from vgroupInfo
- int32_t index = pTableMetaInfo->vgroupIndex;
+ int32_t tsc_index = pTableMetaInfo->vgroupIndex;
int32_t numOfVgroups = (int32_t)taosArrayGetSize(pTableMetaInfo->pVgroupTables);
- assert(index >= 0 && index < numOfVgroups);
+ assert(tsc_index >= 0 && tsc_index < numOfVgroups);
- SVgroupTableInfo* pTableIdList = taosArrayGet(pTableMetaInfo->pVgroupTables, index);
+ SVgroupTableInfo* pTableIdList = taosArrayGet(pTableMetaInfo->pVgroupTables, tsc_index);
// set the vgroup info
tscSetDnodeEpSet(&pSql->epSet, &pTableIdList->vgInfo);
@@ -912,7 +912,7 @@ static char *doSerializeTableInfo(SQueryTableMsg *pQueryMsg, SSqlObj *pSql, STab
pQueryMsg->numOfTables = htonl(numOfTables); // set the number of tables
tscDebug("0x%"PRIx64" query on stable, vgId:%d, numOfTables:%d, vgIndex:%d, numOfVgroups:%d", pSql->self,
- pTableIdList->vgInfo.vgId, numOfTables, index, numOfVgroups);
+ pTableIdList->vgInfo.vgId, numOfTables, tsc_index, numOfVgroups);
// serialize each table id info
for(int32_t i = 0; i < numOfTables; ++i) {
@@ -2691,18 +2691,18 @@ int tscProcessShowRsp(SSqlObj *pSql) {
SFieldInfo* pFieldInfo = &pQueryInfo->fieldsInfo;
- SColumnIndex index = {0};
+ SColumnIndex tsc_index = {0};
pSchema = pMetaMsg->schema;
uint64_t uid = pTableMetaInfo->pTableMeta->id.uid;
for (int16_t i = 0; i < pMetaMsg->numOfColumns; ++i, ++pSchema) {
- index.columnIndex = i;
+ tsc_index.columnIndex = i;
tscColumnListInsert(pQueryInfo->colList, i, uid, pSchema);
TAOS_FIELD f = tscCreateField(pSchema->type, pSchema->name, pSchema->bytes);
SInternalField* pInfo = tscFieldInfoAppend(pFieldInfo, &f);
- pInfo->pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_TS_DUMMY, &index,
+ pInfo->pExpr = tscExprAppend(pQueryInfo, TSDB_FUNC_TS_DUMMY, &tsc_index,
pTableSchema[i].type, pTableSchema[i].bytes, getNewResColId(pCmd), pTableSchema[i].bytes, false);
}
diff --git a/src/client/src/tscStream.c b/src/client/src/tscStream.c
index 78c98113f5b4132cb1ecd225caa805689111a3b6..c866e8bf7dfcc48be287b831e2d29a6a60d02927 100644
--- a/src/client/src/tscStream.c
+++ b/src/client/src/tscStream.c
@@ -704,8 +704,8 @@ static void tscSetNextLaunchTimer(SSqlStream *pStream, SSqlObj *pSql) {
return;
}
} else {
- int64_t stime = taosTimeTruncate(pStream->stime - 1, &pStream->interval, pStream->precision);
- if (stime >= pStream->etime) {
+ int64_t tsc_stime = taosTimeTruncate(pStream->stime - 1, &pStream->interval, pStream->precision);
+ if (tsc_stime >= pStream->etime) {
tscDebug("0x%"PRIx64" stream:%p, stime:%" PRId64 " is larger than end time: %" PRId64 ", stop the stream", pStream->pSql->self, pStream,
pStream->stime, pStream->etime);
// TODO : How to terminate stream here
@@ -784,7 +784,7 @@ static int32_t tscSetSlidingWindowInfo(SSqlObj *pSql, SSqlStream *pStream) {
return TSDB_CODE_SUCCESS;
}
-static int64_t tscGetStreamStartTimestamp(SSqlObj *pSql, SSqlStream *pStream, int64_t stime) {
+static int64_t tscGetStreamStartTimestamp(SSqlObj *pSql, SSqlStream *pStream, int64_t tsc_stime) {
SQueryInfo* pQueryInfo = tscGetQueryInfo(&pSql->cmd);
if (pStream->isProject) {
@@ -792,31 +792,31 @@ static int64_t tscGetStreamStartTimestamp(SSqlObj *pSql, SSqlStream *pStream, in
pStream->interval.interval = tsProjectExecInterval;
pStream->interval.sliding = tsProjectExecInterval;
- if (stime != INT64_MIN) { // first projection start from the latest event timestamp
- assert(stime >= pQueryInfo->window.skey);
- stime += 1; // exclude the last records from table
+ if (tsc_stime != INT64_MIN) { // first projection start from the latest event timestamp
+ assert(tsc_stime >= pQueryInfo->window.skey);
+ tsc_stime += 1; // exclude the last records from table
} else {
- stime = pQueryInfo->window.skey;
+ tsc_stime = pQueryInfo->window.skey;
}
} else { // timewindow based aggregation stream
- if (stime == INT64_MIN) { // no data in meter till now
+ if (tsc_stime == INT64_MIN) { // no data in meter till now
if (pQueryInfo->window.skey != INT64_MIN) {
- stime = pQueryInfo->window.skey;
+ tsc_stime = pQueryInfo->window.skey;
} else {
- return stime;
+ return tsc_stime;
}
- stime = taosTimeTruncate(stime, &pStream->interval, pStream->precision);
+ tsc_stime = taosTimeTruncate(tsc_stime, &pStream->interval, pStream->precision);
} else {
- int64_t newStime = taosTimeTruncate(stime, &pStream->interval, pStream->precision);
- if (newStime != stime) {
- tscWarn("0x%"PRIx64" stream:%p, last timestamp:%" PRId64 ", reset to:%" PRId64, pSql->self, pStream, stime, newStime);
- stime = newStime;
+ int64_t newStime = taosTimeTruncate(tsc_stime, &pStream->interval, pStream->precision);
+ if (newStime != tsc_stime) {
+ tscWarn("0x%"PRIx64" stream:%p, last timestamp:%" PRId64 ", reset to:%" PRId64, pSql->self, pStream, tsc_stime, newStime);
+ tsc_stime = newStime;
}
}
}
- return stime;
+ return tsc_stime;
}
static int64_t tscGetFirstLaunchTime(const SSqlStream *pStream) {
@@ -1023,7 +1023,7 @@ TAOS_STREAM *taos_open_stream_withname(TAOS *taos, const char* dstTable, int32_t
}
pStream->ltime = INT64_MIN;
- pStream->stime = stime;
+ pStream->stime = tsc_stime;
pStream->fp = fp;
pStream->callback = callback;
pStream->param = param;
diff --git a/src/client/src/tscSubquery.c b/src/client/src/tscSubquery.c
index 0b6cee89c72ba0bcd6daa2c358ac6d9d3a0ea86c..47a37fdf5e0eee8bedad750e5ebf9062503d1181 100644
--- a/src/client/src/tscSubquery.c
+++ b/src/client/src/tscSubquery.c
@@ -380,7 +380,7 @@ static int64_t doTSBlockIntersect(SSqlObj* pSql, STimeWindow * win) {
// todo handle failed to create sub query
-SJoinSupporter* tscCreateJoinSupporter(SSqlObj* pSql, int32_t index) {
+SJoinSupporter* tscCreateJoinSupporter(SSqlObj* pSql, int32_t tsc_index) {
SJoinSupporter* pSupporter = calloc(1, sizeof(SJoinSupporter));
if (pSupporter == NULL) {
return NULL;
@@ -388,13 +388,13 @@ SJoinSupporter* tscCreateJoinSupporter(SSqlObj* pSql, int32_t index) {
pSupporter->pObj = pSql->self;
- pSupporter->subqueryIndex = index;
+ pSupporter->subqueryIndex = tsc_index;
SQueryInfo* pQueryInfo = tscGetQueryInfo(&pSql->cmd);
memcpy(&pSupporter->interval, &pQueryInfo->interval, sizeof(pSupporter->interval));
pSupporter->limit = pQueryInfo->limit;
- STableMetaInfo* pTableMetaInfo = tscGetTableMetaInfoFromCmd(&pSql->cmd, index);
+ STableMetaInfo* pTableMetaInfo = tscGetTableMetaInfoFromCmd(&pSql->cmd, tsc_index);
pSupporter->uid = pTableMetaInfo->pTableMeta->id.uid;
assert (pSupporter->uid != 0);
@@ -598,7 +598,7 @@ static int32_t tscLaunchRealSubqueries(SSqlObj* pSql) {
* during the timestamp intersection.
*/
pSupporter->limit = pQueryInfo->limit;
- SColumnIndex index = {.tableIndex = 0, .columnIndex = PRIMARYKEY_TIMESTAMP_COL_INDEX};
+ SColumnIndex tsc_index = {.tableIndex = 0, .columnIndex = PRIMARYKEY_TIMESTAMP_COL_INDEX};
SSchema* s = tscGetTableColumnSchema(pTableMetaInfo->pTableMeta, 0);
SExprInfo* pExpr = tscExprGet(pQueryInfo, 0);
@@ -610,7 +610,7 @@ static int32_t tscLaunchRealSubqueries(SSqlObj* pSql) {
int16_t functionId = tscIsProjectionQuery(pQueryInfo)? TSDB_FUNC_PRJ : TSDB_FUNC_TS;
- tscAddFuncInSelectClause(pQueryInfo, 0, functionId, &index, s, TSDB_COL_NORMAL, getNewResColId(&pNew->cmd));
+ tscAddFuncInSelectClause(pQueryInfo, 0, functionId, &tsc_index, s, TSDB_COL_NORMAL, getNewResColId(&pNew->cmd));
tscPrintSelNodeList(pNew, 0);
tscFieldInfoUpdateOffset(pQueryInfo);
@@ -806,8 +806,8 @@ static void issueTsCompQuery(SSqlObj* pSql, SJoinSupporter* pSupporter, SSqlObj*
SSchema colSchema = {.type = TSDB_DATA_TYPE_BINARY, .bytes = 1};
- SColumnIndex index = {0, PRIMARYKEY_TIMESTAMP_COL_INDEX};
- tscAddFuncInSelectClause(pQueryInfo, 0, TSDB_FUNC_TS_COMP, &index, &colSchema, TSDB_COL_NORMAL, getNewResColId(pCmd));
+ SColumnIndex tsc_index = {0, PRIMARYKEY_TIMESTAMP_COL_INDEX};
+ tscAddFuncInSelectClause(pQueryInfo, 0, TSDB_FUNC_TS_COMP, &tsc_index, &colSchema, TSDB_COL_NORMAL, getNewResColId(pCmd));
// set the tags value for ts_comp function
if (UTIL_TABLE_IS_SUPER_TABLE(pTableMetaInfo)) {
@@ -2424,7 +2424,7 @@ int32_t tscHandleFirstRoundStableQuery(SSqlObj *pSql) {
int32_t numOfExprs = (int32_t) tscNumOfExprs(pQueryInfo);
- int32_t index = 0;
+ int32_t tsc_index = 0;
for(int32_t i = 0; i < numOfExprs; ++i) {
SExprInfo* pExpr = tscExprGet(pQueryInfo, i);
if (pExpr->base.functionId == TSDB_FUNC_TS && pQueryInfo->interval.interval > 0) {
@@ -2433,7 +2433,7 @@ int32_t tscHandleFirstRoundStableQuery(SSqlObj *pSql) {
SColumnIndex colIndex = {.tableIndex = 0, .columnIndex = PRIMARYKEY_TIMESTAMP_COL_INDEX};
SSchema* schema = tscGetColumnSchemaById(pTableMetaInfo1->pTableMeta, pExpr->base.colInfo.colId);
- SExprInfo* p = tscAddFuncInSelectClause(pNewQueryInfo, index++, TSDB_FUNC_TS, &colIndex, schema, TSDB_COL_NORMAL, getNewResColId(pCmd));
+ SExprInfo* p = tscAddFuncInSelectClause(pNewQueryInfo, tsc_index++, TSDB_FUNC_TS, &colIndex, schema, TSDB_COL_NORMAL, getNewResColId(pCmd));
p->base.resColId = pExpr->base.resColId; // update the result column id
} else if (pExpr->base.functionId == TSDB_FUNC_STDDEV_DST) {
taosArrayPush(pSup->pColsInfo, &pExpr->base.resColId);
@@ -2442,7 +2442,7 @@ int32_t tscHandleFirstRoundStableQuery(SSqlObj *pSql) {
SSchema schema = {.type = TSDB_DATA_TYPE_DOUBLE, .bytes = sizeof(double)};
tstrncpy(schema.name, pExpr->base.aliasName, tListLen(schema.name));
- SExprInfo* p = tscAddFuncInSelectClause(pNewQueryInfo, index++, TSDB_FUNC_AVG, &colIndex, &schema, TSDB_COL_NORMAL, getNewResColId(pCmd));
+ SExprInfo* p = tscAddFuncInSelectClause(pNewQueryInfo, tsc_index++, TSDB_FUNC_AVG, &colIndex, &schema, TSDB_COL_NORMAL, getNewResColId(pCmd));
p->base.resColId = pExpr->base.resColId; // update the result column id
} else if (pExpr->base.functionId == TSDB_FUNC_TAG) {
pSup->tagLen += pExpr->base.resBytes;
@@ -2455,7 +2455,7 @@ int32_t tscHandleFirstRoundStableQuery(SSqlObj *pSql) {
schema = tGetTbnameColumnSchema();
}
- SExprInfo* p = tscAddFuncInSelectClause(pNewQueryInfo, index++, TSDB_FUNC_TAG, &colIndex, schema, TSDB_COL_TAG, getNewResColId(pCmd));
+ SExprInfo* p = tscAddFuncInSelectClause(pNewQueryInfo, tsc_index++, TSDB_FUNC_TAG, &colIndex, schema, TSDB_COL_TAG, getNewResColId(pCmd));
p->base.resColId = pExpr->base.resColId;
} else if (pExpr->base.functionId == TSDB_FUNC_PRJ) {
int32_t num = (int32_t) taosArrayGetSize(pNewQueryInfo->groupbyExpr.columnInfo);
@@ -2469,7 +2469,7 @@ int32_t tscHandleFirstRoundStableQuery(SSqlObj *pSql) {
SSchema* schema = tscGetColumnSchemaById(pTableMetaInfo1->pTableMeta, pExpr->base.colInfo.colId);
//doLimitOutputNormalColOfGroupby
- SExprInfo* p = tscAddFuncInSelectClause(pNewQueryInfo, index++, TSDB_FUNC_PRJ, &colIndex, schema, TSDB_COL_NORMAL, getNewResColId(pCmd));
+ SExprInfo* p = tscAddFuncInSelectClause(pNewQueryInfo, tsc_index++, TSDB_FUNC_PRJ, &colIndex, schema, TSDB_COL_NORMAL, getNewResColId(pCmd));
p->base.numOfParams = 1;
p->base.param[0].i64 = 1;
p->base.param[0].nType = TSDB_DATA_TYPE_INT;
@@ -2511,7 +2511,7 @@ int32_t tscHandleFirstRoundStableQuery(SSqlObj *pSql) {
"0x%"PRIx64" first round subquery:0x%"PRIx64" tableIndex:%d, vgroupIndex:%d, numOfVgroups:%d, type:%d, query to retrieve timestamps, "
"numOfExpr:%" PRIzu ", colList:%d, numOfOutputFields:%d, name:%s",
pSql->self, pNew->self, 0, pTableMetaInfo->vgroupIndex, pTableMetaInfo->vgroupList->numOfVgroups, pNewQueryInfo->type,
- tscNumOfExprs(pNewQueryInfo), index+1, pNewQueryInfo->fieldsInfo.numOfOutput, tNameGetTableName(&pTableMetaInfo->name));
+ tscNumOfExprs(pNewQueryInfo), tsc_index+1, pNewQueryInfo->fieldsInfo.numOfOutput, tNameGetTableName(&pTableMetaInfo->name));
pSql->pSubs = calloc(1, POINTER_BYTES);
if (pSql->pSubs == NULL) {
@@ -3145,7 +3145,7 @@ static SSqlObj *tscCreateSTableSubquery(SSqlObj *pSql, SRetrieveSupport *trsuppo
assert(trsupport->subqueryIndex < pSql->subState.numOfSub);
- // launch subquery for each vnode, so the subquery index equals to the vgroupIndex.
+ // launch subquery for each vnode, so the subquery tsc_index equals to the vgroupIndex.
STableMetaInfo *pTableMetaInfo = tscGetMetaInfo(pQueryInfo, table_index);
pTableMetaInfo->vgroupIndex = trsupport->subqueryIndex;
@@ -3628,19 +3628,19 @@ void tscBuildResFromSubqueries(SSqlObj *pSql) {
char *getArithmeticInputSrc(void *param, const char *name, int32_t colId) {
SArithmeticSupport *pSupport = (SArithmeticSupport *) param;
- int32_t index = -1;
+ int32_t tsc_index = -1;
SExprInfo* pExpr = NULL;
for (int32_t i = 0; i < pSupport->numOfCols; ++i) {
pExpr = taosArrayGetP(pSupport->exprList, i);
if (strncmp(name, pExpr->base.aliasName, sizeof(pExpr->base.aliasName) - 1) == 0) {
- index = i;
+ tsc_index = i;
break;
}
}
- assert(index >= 0 && index < pSupport->numOfCols);
- return pSupport->data[index] + pSupport->offset * pExpr->base.resBytes;
+ assert(tsc_index >= 0 && tsc_index < pSupport->numOfCols);
+ return pSupport->data[tsc_index] + pSupport->offset * pExpr->base.resBytes;
}
TAOS_ROW doSetResultRowData(SSqlObj *pSql) {
@@ -3819,7 +3819,7 @@ void* createQInfoFromQueryNode(SQueryInfo* pQueryInfo, STableGroupInfo* pTableGr
pthread_mutex_init(&pQInfo->lock, NULL);
tsem_init(&pQInfo->ready, 0, 0);
- int32_t index = 0;
+ int32_t tsc_index = 0;
for(int32_t i = 0; i < numOfGroups; ++i) {
SArray* pa = taosArrayGetP(pQueryAttr->tableGroupInfo.pGroupList, i);
@@ -3836,7 +3836,7 @@ void* createQInfoFromQueryNode(SQueryInfo* pQueryInfo, STableGroupInfo* pTableGr
STableKeyInfo* info = taosArrayGet(pa, j);
window.skey = info->lastKey;
- void* buf = (char*) pQInfo->pBuf + index * sizeof(STableQueryInfo);
+ void* buf = (char*) pQInfo->pBuf + tsc_index * sizeof(STableQueryInfo);
STableQueryInfo* item = createTableQueryInfo(pQueryAttr, info->pTable, pQueryAttr->groupbyColumn, window, buf);
if (item == NULL) {
goto _cleanup;
@@ -3847,7 +3847,7 @@ void* createQInfoFromQueryNode(SQueryInfo* pQueryInfo, STableGroupInfo* pTableGr
STableId id = {.tid = 0, .uid = 0};
taosHashPut(pRuntimeEnv->tableqinfoGroupInfo.map, &id.tid, sizeof(id.tid), &item, POINTER_BYTES);
- index += 1;
+ tsc_index += 1;
}
}
diff --git a/src/client/src/tscSystem.c b/src/client/src/tscSystem.c
index 8af340030cccee1431a82eb88344642011f2e019..6c08524faa44a7a39e868a705510f2fc2f8275aa 100644
--- a/src/client/src/tscSystem.c
+++ b/src/client/src/tscSystem.c
@@ -45,7 +45,17 @@ int32_t tscNumOfObj = 0; // number of sqlObj in current process.
static void *tscCheckDiskUsageTmr;
void *tscRpcCache; // cache to keep rpc obj
int32_t tscNumOfThreads = 1; // num of rpc threads
+#ifdef _TD_POWER_
+char tscLogFileName[12] = "powerlog";
+#elif (_TD_TQ_ == true)
+char tscLogFileName[12] = "tqlog";
+#elif (_TD_PRO_ == true)
+char tscLogFileName[12] = "prolog";
+#elif (_TD_KH_ == true)
+char tscLogFileName[12] = "khclientlog";
+#else
char tscLogFileName[12] = "taoslog";
+#endif
int tscLogFileNum = 10;
static pthread_mutex_t rpcObjMutex; // mutex to protect open the rpc obj concurrently
@@ -84,27 +94,27 @@ int32_t tscAcquireRpc(const char *key, const char *user, const char *secretEncry
return 0;
}
- SRpcInit rpcInit;
- memset(&rpcInit, 0, sizeof(rpcInit));
- rpcInit.localPort = 0;
- rpcInit.label = "TSC";
- rpcInit.numOfThreads = tscNumOfThreads;
- rpcInit.cfp = tscProcessMsgFromServer;
- rpcInit.sessions = tsMaxConnections;
- rpcInit.connType = TAOS_CONN_CLIENT;
- rpcInit.user = (char *)user;
- rpcInit.idleTime = tsShellActivityTimer * 1000;
- rpcInit.ckey = "key";
- rpcInit.spi = 1;
- rpcInit.secret = (char *)secretEncrypt;
+ SRpcInit tsc_rpcInit;
+ memset(&tsc_rpcInit, 0, sizeof(tsc_rpcInit));
+ tsc_rpcInit.localPort = 0;
+ tsc_rpcInit.label = "TSC";
+ tsc_rpcInit.numOfThreads = tscNumOfThreads;
+ tsc_rpcInit.cfp = tscProcessMsgFromServer;
+ tsc_rpcInit.sessions = tsMaxConnections;
+ tsc_rpcInit.connType = TAOS_CONN_CLIENT;
+ tsc_rpcInit.user = (char *)user;
+ tsc_rpcInit.idleTime = tsShellActivityTimer * 1000;
+ tsc_rpcInit.ckey = "key";
+ tsc_rpcInit.spi = 1;
+ tsc_rpcInit.secret = (char *)secretEncrypt;
SRpcObj rpcObj;
memset(&rpcObj, 0, sizeof(rpcObj));
strncpy(rpcObj.key, key, strlen(key));
- rpcObj.pDnodeConn = rpcOpen(&rpcInit);
+ rpcObj.pDnodeConn = rpcOpen(&tsc_rpcInit);
if (rpcObj.pDnodeConn == NULL) {
pthread_mutex_unlock(&rpcObjMutex);
- tscError("failed to init connection to TDengine");
+ tscError("failed to init connection to server");
return -1;
}
@@ -158,8 +168,7 @@ void taos_init_imp(void) {
rpcInit();
scriptEnvPoolInit();
-
- tscDebug("starting to initialize TAOS client ...");
+ tscDebug("starting to initialize client ...");
tscDebug("Local End Point is:%s", tsLocalEp);
}
diff --git a/src/client/src/tscUtil.c b/src/client/src/tscUtil.c
index c8a6425c91ad91ac38887309e607a1b8fddfe18e..5986a886ad47fa14abba8328c3c3a2f9b38d75e5 100644
--- a/src/client/src/tscUtil.c
+++ b/src/client/src/tscUtil.c
@@ -2132,10 +2132,10 @@ void tscCloseTscObj(void *param) {
}
bool tscIsInsertData(char* sqlstr) {
- int32_t index = 0;
+ int32_t tsc_index = 0;
do {
- SStrToken t0 = tStrGetToken(sqlstr, &index, false);
+ SStrToken t0 = tStrGetToken(sqlstr, &tsc_index, false);
if (t0.type != TK_LP) {
return t0.type == TK_INSERT || t0.type == TK_IMPORT;
}
@@ -2202,12 +2202,12 @@ SInternalField* tscFieldInfoAppend(SFieldInfo* pFieldInfo, TAOS_FIELD* pField) {
return taosArrayPush(pFieldInfo->internalField, &info);
}
-SInternalField* tscFieldInfoInsert(SFieldInfo* pFieldInfo, int32_t index, TAOS_FIELD* field) {
+SInternalField* tscFieldInfoInsert(SFieldInfo* pFieldInfo, int32_t tsc_index, TAOS_FIELD* field) {
pFieldInfo->numOfOutput++;
struct SInternalField info = { .pExpr = NULL, .visible = true };
info.field = *field;
- return taosArrayInsert(pFieldInfo->internalField, index, &info);
+ return taosArrayInsert(pFieldInfo->internalField, tsc_index, &info);
}
void tscFieldInfoUpdateOffset(SQueryInfo* pQueryInfo) {
@@ -2222,18 +2222,18 @@ void tscFieldInfoUpdateOffset(SQueryInfo* pQueryInfo) {
}
}
-SInternalField* tscFieldInfoGetInternalField(SFieldInfo* pFieldInfo, int32_t index) {
- assert(index < pFieldInfo->numOfOutput);
- return TARRAY_GET_ELEM(pFieldInfo->internalField, index);
+SInternalField* tscFieldInfoGetInternalField(SFieldInfo* pFieldInfo, int32_t tsc_index) {
+ assert(tsc_index < pFieldInfo->numOfOutput);
+ return TARRAY_GET_ELEM(pFieldInfo->internalField, tsc_index);
}
-TAOS_FIELD* tscFieldInfoGetField(SFieldInfo* pFieldInfo, int32_t index) {
- assert(index < pFieldInfo->numOfOutput);
- return &((SInternalField*)TARRAY_GET_ELEM(pFieldInfo->internalField, index))->field;
+TAOS_FIELD* tscFieldInfoGetField(SFieldInfo* pFieldInfo, int32_t tsc_index) {
+ assert(tsc_index < pFieldInfo->numOfOutput);
+ return &((SInternalField*)TARRAY_GET_ELEM(pFieldInfo->internalField, tsc_index))->field;
}
-int16_t tscFieldInfoGetOffset(SQueryInfo* pQueryInfo, int32_t index) {
- SInternalField* pInfo = tscFieldInfoGetInternalField(&pQueryInfo->fieldsInfo, index);
+int16_t tscFieldInfoGetOffset(SQueryInfo* pQueryInfo, int32_t tsc_index) {
+ SInternalField* pInfo = tscFieldInfoGetInternalField(&pQueryInfo->fieldsInfo, tsc_index);
assert(pInfo != NULL && pInfo->pExpr->pExpr == NULL);
return pInfo->pExpr->base.offset;
@@ -2402,7 +2402,7 @@ SExprInfo* tscExprCreate(STableMetaInfo* pTableMetaInfo, int16_t functionId, SCo
SSqlExpr* p = &pExpr->base;
p->functionId = functionId;
- // set the correct columnIndex index
+ // set the correct columnIndex tsc_index
if (pColIndex->columnIndex == TSDB_TBNAME_COLUMN_INDEX) {
SSchema* s = tGetTbnameColumnSchema();
p->colInfo.colId = TSDB_TBNAME_COLUMN_INDEX;
@@ -2449,16 +2449,16 @@ SExprInfo* tscExprCreate(STableMetaInfo* pTableMetaInfo, int16_t functionId, SCo
return pExpr;
}
-SExprInfo* tscExprInsert(SQueryInfo* pQueryInfo, int32_t index, int16_t functionId, SColumnIndex* pColIndex, int16_t type,
+SExprInfo* tscExprInsert(SQueryInfo* pQueryInfo, int32_t tsc_index, int16_t functionId, SColumnIndex* pColIndex, int16_t type,
int16_t size, int16_t resColId, int16_t interSize, bool isTagCol) {
int32_t num = (int32_t)taosArrayGetSize(pQueryInfo->exprList);
- if (index == num) {
+ if (tsc_index == num) {
return tscExprAppend(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);
+ taosArrayInsert(pQueryInfo->exprList, tsc_index, &pExpr);
return pExpr;
}
@@ -2470,10 +2470,10 @@ SExprInfo* tscExprAppend(SQueryInfo* pQueryInfo, int16_t functionId, SColumnInde
return pExpr;
}
-SExprInfo* tscExprUpdate(SQueryInfo* pQueryInfo, int32_t index, int16_t functionId, int16_t srcColumnIndex,
+SExprInfo* tscExprUpdate(SQueryInfo* pQueryInfo, int32_t tsc_index, int16_t functionId, int16_t srcColumnIndex,
int16_t type, int16_t size) {
STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
- SExprInfo* pExpr = tscExprGet(pQueryInfo, index);
+ SExprInfo* pExpr = tscExprGet(pQueryInfo, tsc_index);
if (pExpr == NULL) {
return NULL;
}
@@ -2490,8 +2490,8 @@ SExprInfo* tscExprUpdate(SQueryInfo* pQueryInfo, int32_t index, int16_t function
return pExpr;
}
-bool tscMultiRoundQuery(SQueryInfo* pQueryInfo, int32_t index) {
- if (!UTIL_TABLE_IS_SUPER_TABLE(pQueryInfo->pTableMetaInfo[index])) {
+bool tscMultiRoundQuery(SQueryInfo* pQueryInfo, int32_t tsc_index) {
+ if (!UTIL_TABLE_IS_SUPER_TABLE(pQueryInfo->pTableMetaInfo[tsc_index])) {
return false;
}
@@ -2522,8 +2522,8 @@ void tscExprAddParams(SSqlExpr* pExpr, char* argument, int32_t type, int32_t byt
assert(pExpr->numOfParams <= 3);
}
-SExprInfo* tscExprGet(SQueryInfo* pQueryInfo, int32_t index) {
- return taosArrayGetP(pQueryInfo->exprList, index);
+SExprInfo* tscExprGet(SQueryInfo* pQueryInfo, int32_t tsc_index) {
+ return taosArrayGetP(pQueryInfo->exprList, tsc_index);
}
/*
@@ -3045,8 +3045,8 @@ void tscGetSrcColumnInfo(SSrcColumnInfo* pColInfo, SQueryInfo* pQueryInfo) {
if (TSDB_COL_IS_TAG(pExpr->base.colInfo.flag)) {
SSchema* pTagSchema = tscGetTableTagSchema(pTableMetaInfo->pTableMeta);
- int16_t index = pExpr->base.colInfo.colIndex;
- pColInfo[i].type = (index != -1) ? pTagSchema[index].type : TSDB_DATA_TYPE_BINARY;
+ int16_t tsc_index = pExpr->base.colInfo.colIndex;
+ pColInfo[i].type = (tsc_index != -1) ? pTagSchema[tsc_index].type : TSDB_DATA_TYPE_BINARY;
} else {
pColInfo[i].type = pSchema[pExpr->base.colInfo.colIndex].type;
}
@@ -3126,7 +3126,7 @@ SQueryInfo* tscGetQueryInfoS(SSqlCmd* pCmd) {
return pQueryInfo;
}
-STableMetaInfo* tscGetTableMetaInfoByUid(SQueryInfo* pQueryInfo, uint64_t uid, int32_t* index) {
+STableMetaInfo* tscGetTableMetaInfoByUid(SQueryInfo* pQueryInfo, uint64_t uid, int32_t* tsc_index) {
int32_t k = -1;
for (int32_t i = 0; i < pQueryInfo->numOfTables; ++i) {
@@ -3136,8 +3136,8 @@ STableMetaInfo* tscGetTableMetaInfoByUid(SQueryInfo* pQueryInfo, uint64_t uid, i
}
}
- if (index != NULL) {
- *index = k;
+ if (tsc_index != NULL) {
+ *tsc_index = k;
}
assert(k != -1);
@@ -3255,6 +3255,7 @@ int32_t tscQueryInfoCopy(SQueryInfo* pQueryInfo, const SQueryInfo* pSrc) {
pQueryInfo->sessionWindow = pSrc->sessionWindow;
pQueryInfo->pTableMetaInfo = NULL;
pQueryInfo->multigroupResult = pSrc->multigroupResult;
+ pQueryInfo->stateWindow = pSrc->stateWindow;
pQueryInfo->bufLen = pSrc->bufLen;
pQueryInfo->orderProjectQuery = pSrc->orderProjectQuery;
@@ -3347,15 +3348,15 @@ void tscFreeVgroupTableInfo(SArray* pVgroupTables) {
taosArrayDestroy(pVgroupTables);
}
-void tscRemoveVgroupTableGroup(SArray* pVgroupTable, int32_t index) {
- assert(pVgroupTable != NULL && index >= 0);
+void tscRemoveVgroupTableGroup(SArray* pVgroupTable, int32_t tsc_index) {
+ assert(pVgroupTable != NULL && tsc_index >= 0);
size_t size = taosArrayGetSize(pVgroupTable);
- assert(size > index);
+ assert(size > tsc_index);
- SVgroupTableInfo* pInfo = taosArrayGet(pVgroupTable, index);
+ SVgroupTableInfo* pInfo = taosArrayGet(pVgroupTable, tsc_index);
taosArrayDestroy(pInfo->itemList);
- taosArrayRemove(pVgroupTable, index);
+ taosArrayRemove(pVgroupTable, tsc_index);
}
void tscVgroupTableCopy(SVgroupTableInfo* info, SVgroupTableInfo* pInfo) {
@@ -3825,15 +3826,15 @@ static void tscSubqueryRetrieveCallback(void* param, TAOS_RES* tres, int code) {
SSqlObj* pParentSql = ps->pParentSql;
SSqlObj* pSql = tres;
- int32_t index = ps->subqueryIndex;
- bool ret = subAndCheckDone(pSql, pParentSql, index);
+ int32_t tsc_index = ps->subqueryIndex;
+ bool ret = subAndCheckDone(pSql, pParentSql, tsc_index);
// TODO refactor
tfree(ps);
pSql->param = NULL;
if (!ret) {
- tscDebug("0x%"PRIx64" sub:0x%"PRIx64" orderOfSub:%d completed, not all subquery finished", pParentSql->self, pSql->self, index);
+ tscDebug("0x%"PRIx64" sub:0x%"PRIx64" orderOfSub:%d completed, not all subquery finished", pParentSql->self, pSql->self, tsc_index);
return;
}
@@ -3854,13 +3855,13 @@ static void tscSubqueryCompleteCallback(void* param, TAOS_RES* tres, int code) {
if (pSql->res.code != TSDB_CODE_SUCCESS) {
SSqlObj* pParentSql = ps->pParentSql;
- int32_t index = ps->subqueryIndex;
- bool ret = subAndCheckDone(pSql, pParentSql, index);
+ int32_t tsc_index = ps->subqueryIndex;
+ bool ret = subAndCheckDone(pSql, pParentSql, tsc_index);
tscFreeRetrieveSup(&pSql->param);
if (!ret) {
- tscDebug("0x%"PRIx64" sub:0x%"PRIx64" orderOfSub:%d completed, not all subquery finished", pParentSql->self, pSql->self, index);
+ tscDebug("0x%"PRIx64" sub:0x%"PRIx64" orderOfSub:%d completed, not all subquery finished", pParentSql->self, pSql->self, tsc_index);
return;
}
@@ -4605,7 +4606,7 @@ int32_t createProjectionExpr(SQueryInfo* pQueryInfo, STableMetaInfo* pTableMetaI
}
}
- pse->colInfo.flag = TSDB_COL_NORMAL;
+ pse->colInfo.flag = pSource->base.colInfo.flag; //TSDB_COL_NORMAL;
pse->resType = pSource->base.resType;
pse->resBytes = pSource->base.resBytes;
strncpy(pse->colInfo.name, pSource->base.aliasName, tListLen(pse->colInfo.name));
diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c
index bce9474b6d4fb9f783947ba2e27382d8c1d46429..cba61b9317bba4a9b41d51c3a95cfac52e0b0281 100644
--- a/src/common/src/tdataformat.c
+++ b/src/common/src/tdataformat.c
@@ -304,14 +304,14 @@ bool isNEleNull(SDataCol *pCol, int nEle) {
return true;
}
-static FORCE_INLINE void dataColSetNullAt(SDataCol *pCol, int index) {
+static FORCE_INLINE void dataColSetNullAt(SDataCol *pCol, int utl_index) {
if (IS_VAR_DATA_TYPE(pCol->type)) {
- pCol->dataOff[index] = pCol->len;
+ pCol->dataOff[utl_index] = pCol->len;
char *ptr = POINTER_SHIFT(pCol->pData, pCol->len);
setVardataNull(ptr, pCol->type);
pCol->len += varDataTLen(ptr);
} else {
- setNull(POINTER_SHIFT(pCol->pData, TYPE_BYTES[pCol->type] * index), pCol->type, pCol->bytes);
+ setNull(POINTER_SHIFT(pCol->pData, TYPE_BYTES[pCol->type] * utl_index), pCol->type, pCol->bytes);
pCol->len += TYPE_BYTES[pCol->type];
}
}
diff --git a/src/common/src/tglobal.c b/src/common/src/tglobal.c
index 3a338bb232dda37908610cfc2e643133e5e3b79e..fbc21bdedfb6cf62755be6be5bebd8d77b03d78f 100644
--- a/src/common/src/tglobal.c
+++ b/src/common/src/tglobal.c
@@ -75,7 +75,7 @@ int32_t tsMaxBinaryDisplayWidth = 30;
* -1: all data are not compressed
* other values: if the message payload size is greater than the tsCompressMsgSize, the message will be compressed.
*/
-int32_t tsCompressMsgSize = -1;
+int32_t tsCompressMsgSize = 512 * 1024;
// client
int32_t tsMaxSQLStringLen = TSDB_MAX_ALLOWED_SQL_LEN;
@@ -376,10 +376,10 @@ bool taosCfgDynamicOptions(char *msg) {
return false;
}
-void taosAddDataDir(int index, char *v1, int level, int primary) {
- tstrncpy(tsDiskCfg[index].dir, v1, TSDB_FILENAME_LEN);
- tsDiskCfg[index].level = level;
- tsDiskCfg[index].primary = primary;
+void taosAddDataDir(int utl_index, char *v1, int level, int primary) {
+ tstrncpy(tsDiskCfg[utl_index].dir, v1, TSDB_FILENAME_LEN);
+ tsDiskCfg[utl_index].level = level;
+ tsDiskCfg[utl_index].primary = primary;
uTrace("dataDir:%s, level:%d primary:%d is configured", v1, level, primary);
}
diff --git a/src/common/src/tname.c b/src/common/src/tname.c
index 5da48b2e9ac9e8bdaf5158ae780379c913275780..8dcecf650bcf60f4388cc49a40aa4dd365c71ff7 100644
--- a/src/common/src/tname.c
+++ b/src/common/src/tname.c
@@ -338,29 +338,29 @@ void tNameAssign(SName* dst, const SName* src) {
memcpy(dst, src, sizeof(SName));
}
-int32_t tNameSetDbName(SName* dst, const char* acct, SStrToken* dbToken) {
- assert(dst != NULL && dbToken != NULL && acct != NULL);
+int32_t tNameSetDbName(SName* dst, const char* utl_acct, SStrToken* dbToken) {
+ assert(dst != NULL && dbToken != NULL && utl_acct != NULL);
// too long account id or too long db name
- if (strlen(acct) >= tListLen(dst->acctId) || dbToken->n >= tListLen(dst->dbname)) {
+ if (strlen(utl_acct) >= tListLen(dst->acctId) || dbToken->n >= tListLen(dst->dbname)) {
return -1;
}
dst->type = TSDB_DB_NAME_T;
- tstrncpy(dst->acctId, acct, tListLen(dst->acctId));
+ tstrncpy(dst->acctId, utl_acct, tListLen(dst->acctId));
tstrncpy(dst->dbname, dbToken->z, dbToken->n + 1);
return 0;
}
-int32_t tNameSetAcctId(SName* dst, const char* acct) {
- assert(dst != NULL && acct != NULL);
+int32_t tNameSetAcctId(SName* dst, const char* utl_acct) {
+ assert(dst != NULL && utl_acct != NULL);
// too long account id or too long db name
- if (strlen(acct) >= tListLen(dst->acctId)) {
+ if (strlen(utl_acct) >= tListLen(dst->acctId)) {
return -1;
}
- tstrncpy(dst->acctId, acct, tListLen(dst->acctId));
+ tstrncpy(dst->acctId, utl_acct, tListLen(dst->acctId));
assert(strlen(dst->acctId) > 0);
diff --git a/src/common/src/ttypes.c b/src/common/src/ttypes.c
index ee940531e6672e1c9b30a6db037d62bc8eac922b..89a86514b5a3c00f37125ef7739601fdbf0ea8f4 100644
--- a/src/common/src/ttypes.c
+++ b/src/common/src/ttypes.c
@@ -258,8 +258,8 @@ static void getStatics_u64(const void *pData, int32_t numOfRow, int64_t *min, in
static void getStatics_f(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max,
int64_t *sum, int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
float *data = (float *)pData;
- float fmin = FLT_MAX;
- float fmax = -FLT_MAX;
+ float utl_fmin = FLT_MAX;
+ float utl_fmax = -FLT_MAX;
double dsum = 0;
*minIndex = 0;
*maxIndex = 0;
@@ -275,20 +275,20 @@ static void getStatics_f(const void *pData, int32_t numOfRow, int64_t *min, int6
float fv = GET_FLOAT_VAL((const char*)&(data[i]));
dsum += fv;
- if (fmin > fv) {
- fmin = fv;
+ if (utl_fmin > fv) {
+ utl_fmin = fv;
*minIndex = i;
}
- if (fmax < fv) {
- fmax = fv;
+ if (utl_fmax < fv) {
+ utl_fmax = fv;
*maxIndex = i;
}
}
SET_DOUBLE_VAL(sum, dsum);
- SET_DOUBLE_VAL(max, fmax);
- SET_DOUBLE_VAL(min, fmin);
+ SET_DOUBLE_VAL(max, utl_fmax);
+ SET_DOUBLE_VAL(min, utl_fmin);
}
static void getStatics_d(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max,
diff --git a/src/dnode/src/dnodeCheck.c b/src/dnode/src/dnodeCheck.c
index 87baff30673afc68eb23a00bef279433a422ba67..5612a1f74206045bd3e6c9c4dbd4c7cfff26c668 100644
--- a/src/dnode/src/dnodeCheck.c
+++ b/src/dnode/src/dnodeCheck.c
@@ -229,12 +229,12 @@ static void dnodeAllocCheckItem() {
}
void dnodeCleanupCheck() {
- for (ECheckItemType index = 0; index < TSDB_CHECK_ITEM_MAX; ++index) {
- if (tsCheckItem[index].enable && tsCheckItem[index].stopFp) {
- (*tsCheckItem[index].stopFp)();
+ for (ECheckItemType dnd_index = 0; dnd_index < TSDB_CHECK_ITEM_MAX; ++dnd_index) {
+ if (tsCheckItem[dnd_index].enable && tsCheckItem[dnd_index].stopFp) {
+ (*tsCheckItem[dnd_index].stopFp)();
}
- if (tsCheckItem[index].cleanUpFp) {
- (*tsCheckItem[index].cleanUpFp)();
+ if (tsCheckItem[dnd_index].cleanUpFp) {
+ (*tsCheckItem[dnd_index].cleanUpFp)();
}
}
}
@@ -242,19 +242,19 @@ void dnodeCleanupCheck() {
int32_t dnodeInitCheck() {
dnodeAllocCheckItem();
- for (ECheckItemType index = 0; index < TSDB_CHECK_ITEM_MAX; ++index) {
- if (tsCheckItem[index].initFp) {
- if ((*tsCheckItem[index].initFp)() != 0) {
- dError("failed to init check item:%s", tsCheckItem[index].name);
+ for (ECheckItemType dnd_index = 0; dnd_index < TSDB_CHECK_ITEM_MAX; ++dnd_index) {
+ if (tsCheckItem[dnd_index].initFp) {
+ if ((*tsCheckItem[dnd_index].initFp)() != 0) {
+ dError("failed to init check item:%s", tsCheckItem[dnd_index].name);
return -1;
}
}
}
- for (ECheckItemType index = 0; index < TSDB_CHECK_ITEM_MAX; ++index) {
- if (tsCheckItem[index].enable && tsCheckItem[index].startFp) {
- if ((*tsCheckItem[index].startFp)() != 0) {
- dError("failed to check item:%s", tsCheckItem[index].name);
+ for (ECheckItemType dnd_index = 0; dnd_index < TSDB_CHECK_ITEM_MAX; ++dnd_index) {
+ if (tsCheckItem[dnd_index].enable && tsCheckItem[dnd_index].startFp) {
+ if ((*tsCheckItem[dnd_index].startFp)() != 0) {
+ dError("failed to check item:%s", tsCheckItem[dnd_index].name);
exit(-1);
}
}
diff --git a/src/dnode/src/dnodePeer.c b/src/dnode/src/dnodePeer.c
index 08269c0bf6141974366936660bee326682cd90f5..c2bc619fc6b5b347d1e39cfe713451f7e726ddc9 100644
--- a/src/dnode/src/dnodePeer.c
+++ b/src/dnode/src/dnodePeer.c
@@ -56,17 +56,17 @@ int32_t dnodeInitServer() {
dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_GRANT] = dnodeDispatchToMPeerQueue;
dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_STATUS] = dnodeDispatchToMPeerQueue;
- SRpcInit rpcInit;
- memset(&rpcInit, 0, sizeof(rpcInit));
- rpcInit.localPort = tsDnodeDnodePort;
- rpcInit.label = "DND-S";
- rpcInit.numOfThreads = 1;
- rpcInit.cfp = dnodeProcessReqMsgFromDnode;
- rpcInit.sessions = TSDB_MAX_VNODES << 4;
- rpcInit.connType = TAOS_CONN_SERVER;
- rpcInit.idleTime = tsShellActivityTimer * 1000;
-
- tsServerRpc = rpcOpen(&rpcInit);
+ SRpcInit dnd_rpcInit;
+ memset(&dnd_rpcInit, 0, sizeof(dnd_rpcInit));
+ dnd_rpcInit.localPort = tsDnodeDnodePort;
+ dnd_rpcInit.label = "DND-S";
+ dnd_rpcInit.numOfThreads = 1;
+ dnd_rpcInit.cfp = dnodeProcessReqMsgFromDnode;
+ dnd_rpcInit.sessions = TSDB_MAX_VNODES << 4;
+ dnd_rpcInit.connType = TAOS_CONN_SERVER;
+ dnd_rpcInit.idleTime = tsShellActivityTimer * 1000;
+
+ tsServerRpc = rpcOpen(&dnd_rpcInit);
if (tsServerRpc == NULL) {
dError("failed to init inter-dnodes RPC server");
return -1;
@@ -123,19 +123,19 @@ static void dnodeProcessReqMsgFromDnode(SRpcMsg *pMsg, SRpcEpSet *pEpSet) {
int32_t dnodeInitClient() {
char secret[TSDB_KEY_LEN] = "secret";
- SRpcInit rpcInit;
- memset(&rpcInit, 0, sizeof(rpcInit));
- rpcInit.label = "DND-C";
- rpcInit.numOfThreads = 1;
- rpcInit.cfp = dnodeProcessRspFromDnode;
- rpcInit.sessions = TSDB_MAX_VNODES << 4;
- rpcInit.connType = TAOS_CONN_CLIENT;
- rpcInit.idleTime = tsShellActivityTimer * 1000;
- rpcInit.user = "t";
- rpcInit.ckey = "key";
- rpcInit.secret = secret;
-
- tsClientRpc = rpcOpen(&rpcInit);
+ SRpcInit dnd_rpcInit;
+ memset(&dnd_rpcInit, 0, sizeof(dnd_rpcInit));
+ dnd_rpcInit.label = "DND-C";
+ dnd_rpcInit.numOfThreads = 1;
+ dnd_rpcInit.cfp = dnodeProcessRspFromDnode;
+ dnd_rpcInit.sessions = TSDB_MAX_VNODES << 4;
+ dnd_rpcInit.connType = TAOS_CONN_CLIENT;
+ dnd_rpcInit.idleTime = tsShellActivityTimer * 1000;
+ dnd_rpcInit.user = "t";
+ dnd_rpcInit.ckey = "key";
+ dnd_rpcInit.secret = secret;
+
+ tsClientRpc = rpcOpen(&dnd_rpcInit);
if (tsClientRpc == NULL) {
dError("failed to init mnode rpc client");
return -1;
diff --git a/src/dnode/src/dnodeShell.c b/src/dnode/src/dnodeShell.c
index 5606681f0f931070e9cbf21d6b98b0d2eb51bdfa..37f53f731a92f352049e081c8ecedee32f5a3400 100644
--- a/src/dnode/src/dnodeShell.c
+++ b/src/dnode/src/dnodeShell.c
@@ -83,18 +83,18 @@ int32_t dnodeInitShell() {
numOfThreads = 1;
}
- SRpcInit rpcInit;
- memset(&rpcInit, 0, sizeof(rpcInit));
- rpcInit.localPort = tsDnodeShellPort;
- rpcInit.label = "SHELL";
- rpcInit.numOfThreads = numOfThreads;
- rpcInit.cfp = dnodeProcessMsgFromShell;
- rpcInit.sessions = tsMaxShellConns;
- rpcInit.connType = TAOS_CONN_SERVER;
- rpcInit.idleTime = tsShellActivityTimer * 1000;
- rpcInit.afp = dnodeRetrieveUserAuthInfo;
-
- tsShellRpc = rpcOpen(&rpcInit);
+ SRpcInit dnd_rpcInit;
+ memset(&dnd_rpcInit, 0, sizeof(dnd_rpcInit));
+ dnd_rpcInit.localPort = tsDnodeShellPort;
+ dnd_rpcInit.label = "SHELL";
+ dnd_rpcInit.numOfThreads = numOfThreads;
+ dnd_rpcInit.cfp = dnodeProcessMsgFromShell;
+ dnd_rpcInit.sessions = tsMaxShellConns;
+ dnd_rpcInit.connType = TAOS_CONN_SERVER;
+ dnd_rpcInit.idleTime = tsShellActivityTimer * 1000;
+ dnd_rpcInit.afp = dnodeRetrieveUserAuthInfo;
+
+ tsShellRpc = rpcOpen(&dnd_rpcInit);
if (tsShellRpc == NULL) {
dError("failed to init shell rpc server");
return -1;
diff --git a/src/inc/taosdef.h b/src/inc/taosdef.h
index 8fd6fd29ed7875e7b17ecf627755259ebe3fe163..5a030cb6006ab3d31566dc4ed3ede8996b514e7f 100644
--- a/src/inc/taosdef.h
+++ b/src/inc/taosdef.h
@@ -79,12 +79,17 @@ extern const int32_t TYPE_BYTES[15];
#define TSDB_DATA_NULL_STR_L "null"
#define TSDB_DEFAULT_USER "root"
+
#ifdef _TD_POWER_
#define TSDB_DEFAULT_PASS "powerdb"
#elif (_TD_TQ_ == true)
#define TSDB_DEFAULT_PASS "tqueue"
#elif (_TD_PRO_ == true)
#define TSDB_DEFAULT_PASS "prodb"
+#elif (_TD_KH_ == true)
+#define TSDB_DEFAULT_PASS "khroot"
+#elif (_TD_JH_ == true)
+#define TSDB_DEFAULT_PASS "jhdata"
#else
#define TSDB_DEFAULT_PASS "taosdata"
#endif
diff --git a/src/kit/shell/CMakeLists.txt b/src/kit/shell/CMakeLists.txt
index d0edde83898321c8eac76c4ffc527be0c6b1b6f8..3d112415e5d80327b1529604ac0443b6628af2ef 100644
--- a/src/kit/shell/CMakeLists.txt
+++ b/src/kit/shell/CMakeLists.txt
@@ -36,8 +36,14 @@ ELSEIF (TD_WINDOWS)
IF (TD_POWER)
SET_TARGET_PROPERTIES(shell PROPERTIES OUTPUT_NAME power)
+ ELSEIF (TD_TQ)
+ SET_TARGET_PROPERTIES(shell PROPERTIES OUTPUT_NAME tq)
ELSEIF (TD_PRO)
SET_TARGET_PROPERTIES(shell PROPERTIES OUTPUT_NAME prodbc)
+ ELSEIF (TD_KH)
+ SET_TARGET_PROPERTIES(shell PROPERTIES OUTPUT_NAME khclient)
+ ELSEIF (TD_JH)
+ SET_TARGET_PROPERTIES(shell PROPERTIES OUTPUT_NAME jh_taos)
ELSE ()
SET_TARGET_PROPERTIES(shell PROPERTIES OUTPUT_NAME taos)
ENDIF ()
diff --git a/src/kit/shell/inc/shell.h b/src/kit/shell/inc/shell.h
index 03ccfe2d576df76407bc7a22cf17d884dd2bad51..9c5794278c5bd9545fb6260e4f8442d8c9e8cad9 100644
--- a/src/kit/shell/inc/shell.h
+++ b/src/kit/shell/inc/shell.h
@@ -28,8 +28,16 @@
#define MAX_HISTORY_SIZE 1000
#define MAX_COMMAND_SIZE 1048586
-#ifdef _TD_PRO_
+#ifdef _TD_POWER_
+ #define HISTORY_FILE ".power_history"
+#elif (_TD_TQ_ == true)
+ #define HISTORY_FILE ".tq_history"
+#elif (_TD_PRO_ == true)
#define HISTORY_FILE ".prodb_history"
+#elif (_TD_KH_ == true)
+ #define HISTORY_FILE ".kh_history"
+#elif (_TD_JH_ == true)
+ #define HISTORY_FILE ".jh_taos_history"
#else
#define HISTORY_FILE ".taos_history"
#endif
diff --git a/src/kit/shell/src/shellEngine.c b/src/kit/shell/src/shellEngine.c
index ffd966cb236f37e815efaf70226d57db24a15cf1..26dc24bd1a0173c585fe8b951eb0b3f5154c8814 100644
--- a/src/kit/shell/src/shellEngine.c
+++ b/src/kit/shell/src/shellEngine.c
@@ -34,28 +34,37 @@
char CLIENT_VERSION[] = "Welcome to the PowerDB shell from %s, Client Version:%s\n"
"Copyright (c) 2020 by PowerDB, Inc. All rights reserved.\n\n";
char PROMPT_HEADER[] = "power> ";
-
char CONTINUE_PROMPT[] = " -> ";
int prompt_size = 7;
#elif (_TD_TQ_ == true)
char CLIENT_VERSION[] = "Welcome to the TQ shell from %s, Client Version:%s\n"
"Copyright (c) 2020 by TQ, Inc. All rights reserved.\n\n";
char PROMPT_HEADER[] = "tq> ";
-
-char CONTINUE_PROMPT[] = " -> ";
+char CONTINUE_PROMPT[] = " -> ";
int prompt_size = 4;
#elif (_TD_PRO_ == true)
char CLIENT_VERSION[] = "Welcome to the ProDB shell from %s, Client Version:%s\n"
"Copyright (c) 2020 by Hanatech, Inc. All rights reserved.\n\n";
char PROMPT_HEADER[] = "ProDB> ";
-
char CONTINUE_PROMPT[] = " -> ";
int prompt_size = 7;
+#elif (_TD_KH_ == true)
+char CLIENT_VERSION[] = "Welcome to the KingHistorian shell from %s, Client Version:%s\n"
+ "Copyright (c) 2021 by Wellintech, Inc. All rights reserved.\n\n";
+char PROMPT_HEADER[] = "khclient> ";
+
+char CONTINUE_PROMPT[] = " -> ";
+int prompt_size = 10;
+#elif (_TD_JH_ == true)
+char CLIENT_VERSION[] = "Welcome to the jh_iot shell from %s, Client Version:%s\n"
+ "Copyright (c) 2021 by jinheng, Inc. All rights reserved.\n\n";
+char PROMPT_HEADER[] = "jh_taos> ";
+char CONTINUE_PROMPT[] = " -> ";
+int prompt_size = 9;
#else
char CLIENT_VERSION[] = "Welcome to the TDengine shell from %s, Client Version:%s\n"
"Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.\n\n";
char PROMPT_HEADER[] = "taos> ";
-
char CONTINUE_PROMPT[] = " -> ";
int prompt_size = 6;
#endif
@@ -111,7 +120,11 @@ TAOS *shellInit(SShellArguments *_args) {
}
if (con == NULL) {
+#ifdef _TD_KH_
+ printf("kh connect failed, reason: %s.\n\n", tstrerror(terrno));
+#else
printf("taos connect failed, reason: %s.\n\n", tstrerror(terrno));
+#endif
fflush(stdout);
return con;
}
@@ -262,7 +275,7 @@ int32_t shellRunCommand(TAOS* con, char* command) {
}
if (c == '\\') {
- if (quote != 0 && (*command == '_' || *command == '\\')) {
+ if (quote != 0 && (*command == '_' || *command == '%' || *command == '\\')) {
//DO nothing
} else {
esc = true;
diff --git a/src/kit/shell/src/shellImport.c b/src/kit/shell/src/shellImport.c
index b3a07b257cbfdd639d6834e7981fb10e89e43512..9d3a99bb4bb731ad9e89ed01b2839eebea7d4c7b 100644
--- a/src/kit/shell/src/shellImport.c
+++ b/src/kit/shell/src/shellImport.c
@@ -93,8 +93,8 @@ static void shellCheckTablesSQLFile(const char *directoryName)
{
sprintf(shellTablesSQLFile, "%s/tables.sql", directoryName);
- struct stat fstat;
- if (stat(shellTablesSQLFile, &fstat) < 0) {
+ struct stat kit_fstat;
+ if (stat(shellTablesSQLFile, &kit_fstat) < 0) {
shellTablesSQLFile[0] = 0;
}
}
diff --git a/src/kit/shell/src/shellWindows.c b/src/kit/shell/src/shellWindows.c
index de8f6ad4aa31634f9ba3e4098f250a7fe7cb30d8..05614bb22211553d6597b8535a0ec1c8904b4fb7 100644
--- a/src/kit/shell/src/shellWindows.c
+++ b/src/kit/shell/src/shellWindows.c
@@ -311,6 +311,20 @@ void *shellLoopQuery(void *arg) {
return NULL;
}
-void get_history_path(char *history) { sprintf(history, "C:/TDengine/%s", HISTORY_FILE); }
+void get_history_path(char *history) {
+#ifdef _TD_POWER_
+ sprintf(history, "C:/PowerDB/%s", HISTORY_FILE);
+#elif (_TD_TQ_ == true)
+ sprintf(history, "C:/TQueue/%s", HISTORY_FILE);
+#elif (_TD_PRO_ == true)
+ sprintf(history, "C:/ProDB/%s", HISTORY_FILE);
+#elif (_TD_KH_ == true)
+ sprintf(history, "C:/KingHistorian/%s", HISTORY_FILE);
+#elif (_TD_JH_ == true)
+ sprintf(history, "C:/jh_iot/%s", HISTORY_FILE);
+#else
+ sprintf(history, "C:/TDengine/%s", HISTORY_FILE);
+#endif
+}
void exitShell() { exit(EXIT_SUCCESS); }
diff --git a/src/kit/taosdemo/taosdemo.c b/src/kit/taosdemo/taosdemo.c
index 92b848b7edbbbdb759c653ca8a4aebe326991795..279c955d1fea3d8ff75f7de3545f08cf0d92d0bc 100644
--- a/src/kit/taosdemo/taosdemo.c
+++ b/src/kit/taosdemo/taosdemo.c
@@ -633,6 +633,8 @@ SArguments g_args = {
"tqueue", // password
#elif (_TD_PRO_ == true)
"prodb", // password
+#elif (_TD_KH_ == true)
+ "khroot", // password
#else
"taosdata", // password
#endif
@@ -766,27 +768,10 @@ static void printHelp() {
"The meta file to the execution procedure.");
printf("%s%s%s%s\n", indent, "-u, --user=USER", "\t\t",
"The user name to use when connecting to the server.");
-#ifdef _TD_POWER_
- printf("%s%s%s%s\n", indent, "-p, --password", "\t\t",
- "The password to use when connecting to the server. By default is 'powerdb'");
- printf("%s%s%s%s\n", indent, "-c, --config-dir=CONFIG_DIR", "\t",
- "Configuration directory. By default is '/etc/power/'.");
-#elif (_TD_TQ_ == true)
- printf("%s%s%s%s\n", indent, "-p, --password", "\t\t",
- "The password to use when connecting to the server. By default is 'tqueue'");
- printf("%s%s%s%s\n", indent, "-c, --config-dir=CONFIG_DIR", "\t",
- "Configuration directory. By default is '/etc/tq/'.");
-#elif (_TD_PRO_ == true)
- printf("%s%s%s%s\n", indent, "-p, --password", "\t\t",
- "The password to use when connecting to the server. By default is 'prodb'");
- printf("%s%s%s%s\n", indent, "-c, --config-dir=CONFIG_DIR", "\t",
- "Configuration directory. By default is '/etc/ProDB/'.");
-#else
printf("%s%s%s%s\n", indent, "-p, --password", "\t\t",
"The password to use when connecting to the server.");
printf("%s%s%s%s\n", indent, "-c, --config-dir=CONFIG_DIR", "\t",
"Configuration directory.");
-#endif
printf("%s%s%s%s\n", indent, "-h, --host=HOST", "\t\t",
"TDengine server FQDN to connect. The default host is localhost.");
printf("%s%s%s%s\n", indent, "-P, --port=PORT", "\t\t",
@@ -1656,7 +1641,7 @@ static void parse_args(int argc, char *argv[], SArguments *arguments) {
arguments->data_type[1] = TSDB_DATA_TYPE_NULL;
} else {
// more than one col
- int index = 0;
+ int tdm_index = 0;
g_dupstr = strdup(dataType);
char *running = g_dupstr;
char *token = strsep(&running, ",");
@@ -1681,45 +1666,45 @@ static void parse_args(int argc, char *argv[], SArguments *arguments) {
}
if (0 == strcasecmp(token, "INT")) {
- arguments->data_type[index] = TSDB_DATA_TYPE_INT;
+ arguments->data_type[tdm_index] = TSDB_DATA_TYPE_INT;
} else if (0 == strcasecmp(token, "FLOAT")) {
- arguments->data_type[index] = TSDB_DATA_TYPE_FLOAT;
+ arguments->data_type[tdm_index] = TSDB_DATA_TYPE_FLOAT;
} else if (0 == strcasecmp(token, "SMALLINT")) {
- arguments->data_type[index] = TSDB_DATA_TYPE_SMALLINT;
+ arguments->data_type[tdm_index] = TSDB_DATA_TYPE_SMALLINT;
} else if (0 == strcasecmp(token, "BIGINT")) {
- arguments->data_type[index] = TSDB_DATA_TYPE_BIGINT;
+ arguments->data_type[tdm_index] = TSDB_DATA_TYPE_BIGINT;
} else if (0 == strcasecmp(token, "DOUBLE")) {
- arguments->data_type[index] = TSDB_DATA_TYPE_DOUBLE;
+ arguments->data_type[tdm_index] = TSDB_DATA_TYPE_DOUBLE;
} else if (0 == strcasecmp(token, "TINYINT")) {
- arguments->data_type[index] = TSDB_DATA_TYPE_TINYINT;
+ arguments->data_type[tdm_index] = TSDB_DATA_TYPE_TINYINT;
} else if (1 == regexMatch(token, "^BINARY(\\([1-9][0-9]*\\))?$", REG_ICASE |
REG_EXTENDED)) {
- arguments->data_type[index] = TSDB_DATA_TYPE_BINARY;
+ arguments->data_type[tdm_index] = TSDB_DATA_TYPE_BINARY;
} else if (1 == regexMatch(token, "^NCHAR(\\([1-9][0-9]*\\))?$", REG_ICASE |
REG_EXTENDED)) {
- arguments->data_type[index] = TSDB_DATA_TYPE_NCHAR;
+ arguments->data_type[tdm_index] = TSDB_DATA_TYPE_NCHAR;
} else if (0 == strcasecmp(token, "BOOL")) {
- arguments->data_type[index] = TSDB_DATA_TYPE_BOOL;
+ arguments->data_type[tdm_index] = TSDB_DATA_TYPE_BOOL;
} else if (0 == strcasecmp(token, "TIMESTAMP")) {
- arguments->data_type[index] = TSDB_DATA_TYPE_TIMESTAMP;
+ arguments->data_type[tdm_index] = TSDB_DATA_TYPE_TIMESTAMP;
} else if (0 == strcasecmp(token, "UTINYINT")) {
- arguments->data_type[index] = TSDB_DATA_TYPE_UTINYINT;
+ arguments->data_type[tdm_index] = TSDB_DATA_TYPE_UTINYINT;
} else if (0 == strcasecmp(token, "USMALLINT")) {
- arguments->data_type[index] = TSDB_DATA_TYPE_USMALLINT;
+ arguments->data_type[tdm_index] = TSDB_DATA_TYPE_USMALLINT;
} else if (0 == strcasecmp(token, "UINT")) {
- arguments->data_type[index] = TSDB_DATA_TYPE_UINT;
+ arguments->data_type[tdm_index] = TSDB_DATA_TYPE_UINT;
} else if (0 == strcasecmp(token, "UBIGINT")) {
- arguments->data_type[index] = TSDB_DATA_TYPE_UBIGINT;
+ arguments->data_type[tdm_index] = TSDB_DATA_TYPE_UBIGINT;
} else {
- arguments->data_type[index] = TSDB_DATA_TYPE_NULL;
+ arguments->data_type[tdm_index] = TSDB_DATA_TYPE_NULL;
}
- arguments->dataType[index] = token;
- index ++;
+ arguments->dataType[tdm_index] = token;
+ tdm_index ++;
token = strsep(&running, ",");
- if (index >= MAX_NUM_COLUMNS) break;
+ if (tdm_index >= MAX_NUM_COLUMNS) break;
}
- arguments->dataType[index] = NULL;
- arguments->data_type[index] = TSDB_DATA_TYPE_NULL;
+ arguments->dataType[tdm_index] = NULL;
+ arguments->data_type[tdm_index] = TSDB_DATA_TYPE_NULL;
}
} else if ((0 == strncmp(argv[i], "-w", strlen("-w")))
|| (0 == strncmp(argv[i], "--binwidth", strlen("--binwidth")))) {
@@ -3310,7 +3295,7 @@ static int getDbFromServer(TAOS * taos, SDbInfo** dbInfos) {
}
static void printfDbInfoForQueryToFile(
- char* filename, SDbInfo* dbInfos, int index) {
+ char* filename, SDbInfo* dbInfos, int tdm_index) {
if (filename[0] == 0)
return;
@@ -3321,7 +3306,7 @@ static void printfDbInfoForQueryToFile(
return;
}
- fprintf(fp, "================ database[%d] ================\n", index);
+ fprintf(fp, "================ database[%d] ================\n", tdm_index);
fprintf(fp, "name: %s\n", dbInfos->name);
fprintf(fp, "created_time: %s\n", dbInfos->create_time);
fprintf(fp, "ntables: %"PRId64"\n", dbInfos->ntables);
@@ -4907,7 +4892,7 @@ static bool getColumnAndTagTypeFromInsertJsonFile(
}
int count = 1;
- int index = 0;
+ int tdm_index = 0;
StrColumn columnCase;
//superTbls->columnCount = columnSize;
@@ -4950,42 +4935,48 @@ static bool getColumnAndTagTypeFromInsertJsonFile(
}
for (int n = 0; n < count; ++n) {
- tstrncpy(superTbls->columns[index].dataType,
+ tstrncpy(superTbls->columns[tdm_index].dataType,
columnCase.dataType,
min(DATATYPE_BUFF_LEN, strlen(columnCase.dataType) + 1));
- superTbls->columns[index].dataLen = columnCase.dataLen;
- index++;
+ superTbls->columns[tdm_index].dataLen = columnCase.dataLen;
+ tdm_index++;
}
}
- if ((index + 1 /* ts */) > MAX_NUM_COLUMNS) {
+ if ((tdm_index + 1 /* ts */) > MAX_NUM_COLUMNS) {
errorPrint("failed to read json, column size overflow, allowed max column size is %d\n",
MAX_NUM_COLUMNS);
goto PARSE_OVER;
}
- superTbls->columnCount = index;
+ superTbls->columnCount = tdm_index;
for (int c = 0; c < superTbls->columnCount; c++) {
if (0 == strncasecmp(superTbls->columns[c].dataType,
"INT", strlen("INT"))) {
superTbls->columns[c].data_type = TSDB_DATA_TYPE_INT;
+ superTbls->columns[c].dataLen = sizeof(int);
} else if (0 == strncasecmp(superTbls->columns[c].dataType,
"TINYINT", strlen("TINYINT"))) {
superTbls->columns[c].data_type = TSDB_DATA_TYPE_TINYINT;
+ superTbls->columns[c].dataLen = sizeof(char);
} else if (0 == strncasecmp(superTbls->columns[c].dataType,
"SMALLINT", strlen("SMALLINT"))) {
superTbls->columns[c].data_type = TSDB_DATA_TYPE_SMALLINT;
+ superTbls->columns[c].dataLen = sizeof(int16_t);
} else if (0 == strncasecmp(superTbls->columns[c].dataType,
"BIGINT", strlen("BIGINT"))) {
superTbls->columns[c].data_type = TSDB_DATA_TYPE_BIGINT;
+ superTbls->columns[c].dataLen = sizeof(int64_t);
} else if (0 == strncasecmp(superTbls->columns[c].dataType,
"FLOAT", strlen("FLOAT"))) {
superTbls->columns[c].data_type = TSDB_DATA_TYPE_FLOAT;
+ superTbls->columns[c].dataLen = sizeof(float);
} else if (0 == strncasecmp(superTbls->columns[c].dataType,
"DOUBLE", strlen("DOUBLE"))) {
superTbls->columns[c].data_type = TSDB_DATA_TYPE_DOUBLE;
+ superTbls->columns[c].dataLen = sizeof(double);
} else if (0 == strncasecmp(superTbls->columns[c].dataType,
"BINARY", strlen("BINARY"))) {
superTbls->columns[c].data_type = TSDB_DATA_TYPE_BINARY;
@@ -4995,28 +4986,34 @@ static bool getColumnAndTagTypeFromInsertJsonFile(
} else if (0 == strncasecmp(superTbls->columns[c].dataType,
"BOOL", strlen("BOOL"))) {
superTbls->columns[c].data_type = TSDB_DATA_TYPE_BOOL;
+ superTbls->columns[c].dataLen = sizeof(char);
} else if (0 == strncasecmp(superTbls->columns[c].dataType,
"TIMESTAMP", strlen("TIMESTAMP"))) {
superTbls->columns[c].data_type = TSDB_DATA_TYPE_TIMESTAMP;
+ superTbls->columns[c].dataLen = sizeof(int64_t);
} else if (0 == strncasecmp(superTbls->columns[c].dataType,
"UTINYINT", strlen("UTINYINT"))) {
superTbls->columns[c].data_type = TSDB_DATA_TYPE_UTINYINT;
+ superTbls->columns[c].dataLen = sizeof(char);
} else if (0 == strncasecmp(superTbls->columns[c].dataType,
"USMALLINT", strlen("USMALLINT"))) {
superTbls->columns[c].data_type = TSDB_DATA_TYPE_USMALLINT;
+ superTbls->columns[c].dataLen = sizeof(uint16_t);
} else if (0 == strncasecmp(superTbls->columns[c].dataType,
"UINT", strlen("UINT"))) {
superTbls->columns[c].data_type = TSDB_DATA_TYPE_UINT;
+ superTbls->columns[c].dataLen = sizeof(uint32_t);
} else if (0 == strncasecmp(superTbls->columns[c].dataType,
"UBIGINT", strlen("UBIGINT"))) {
superTbls->columns[c].data_type = TSDB_DATA_TYPE_UBIGINT;
+ superTbls->columns[c].dataLen = sizeof(uint64_t);
} else {
superTbls->columns[c].data_type = TSDB_DATA_TYPE_NULL;
}
}
count = 1;
- index = 0;
+ tdm_index = 0;
// tags
cJSON *tags = cJSON_GetObjectItem(stbInfo, "tags");
if (!tags || tags->type != cJSON_Array) {
@@ -5069,20 +5066,20 @@ static bool getColumnAndTagTypeFromInsertJsonFile(
}
for (int n = 0; n < count; ++n) {
- tstrncpy(superTbls->tags[index].dataType, columnCase.dataType,
+ tstrncpy(superTbls->tags[tdm_index].dataType, columnCase.dataType,
min(DATATYPE_BUFF_LEN, strlen(columnCase.dataType) + 1));
- superTbls->tags[index].dataLen = columnCase.dataLen;
- index++;
+ superTbls->tags[tdm_index].dataLen = columnCase.dataLen;
+ tdm_index++;
}
}
- if (index > TSDB_MAX_TAGS) {
+ if (tdm_index > TSDB_MAX_TAGS) {
errorPrint("failed to read json, tags size overflow, allowed max tag count is %d\n",
TSDB_MAX_TAGS);
goto PARSE_OVER;
}
- superTbls->tagCount = index;
+ superTbls->tagCount = tdm_index;
for (int t = 0; t < superTbls->tagCount; t++) {
if (0 == strncasecmp(superTbls->tags[t].dataType,
@@ -5511,10 +5508,10 @@ static bool getMetaFromInsertJsonFile(cJSON* root) {
goto PARSE_OVER;
}
- cJSON* fsync= cJSON_GetObjectItem(dbinfo, "fsync");
- if (fsync && fsync->type == cJSON_Number) {
- g_Dbs.db[i].dbCfg.fsync = fsync->valueint;
- } else if (!fsync) {
+ cJSON* kit_fsync= cJSON_GetObjectItem(dbinfo, "fsync");
+ if (kit_fsync && kit_fsync->type == cJSON_Number) {
+ g_Dbs.db[i].dbCfg.fsync = kit_fsync->valueint;
+ } else if (!kit_fsync) {
g_Dbs.db[i].dbCfg.fsync = -1;
} else {
errorPrint("%s", "failed to read json, fsync input mistake\n");
@@ -7421,7 +7418,7 @@ static int64_t generateInterlaceDataWithoutStb(
}
static int32_t prepareStmtBindArrayByType(
- TAOS_BIND *bind,
+ TAOS_BIND *kit_bind,
char data_type, int32_t dataLen,
int32_t timePrec,
char *value)
@@ -7448,20 +7445,20 @@ static int32_t prepareStmtBindArrayByType(
}
char *bind_binary;
- bind->buffer_type = TSDB_DATA_TYPE_BINARY;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_BINARY;
if (value) {
bind_binary = calloc(1, strlen(value) + 1);
strncpy(bind_binary, value, strlen(value));
- bind->buffer_length = strlen(bind_binary);
+ kit_bind->buffer_length = strlen(bind_binary);
} else {
bind_binary = calloc(1, dataLen + 1);
rand_string(bind_binary, dataLen);
- bind->buffer_length = dataLen;
+ kit_bind->buffer_length = dataLen;
}
- bind->length = &bind->buffer_length;
- bind->buffer = bind_binary;
- bind->is_null = NULL;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->buffer = bind_binary;
+ kit_bind->is_null = NULL;
break;
case TSDB_DATA_TYPE_NCHAR:
@@ -7472,7 +7469,7 @@ static int32_t prepareStmtBindArrayByType(
}
char *bind_nchar;
- bind->buffer_type = TSDB_DATA_TYPE_NCHAR;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_NCHAR;
if (value) {
bind_nchar = calloc(1, strlen(value) + 1);
strncpy(bind_nchar, value, strlen(value));
@@ -7481,10 +7478,10 @@ static int32_t prepareStmtBindArrayByType(
rand_string(bind_nchar, dataLen);
}
- bind->buffer_length = strlen(bind_nchar);
- bind->buffer = bind_nchar;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_length = strlen(bind_nchar);
+ kit_bind->buffer = bind_nchar;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
break;
case TSDB_DATA_TYPE_INT:
@@ -7496,11 +7493,11 @@ static int32_t prepareStmtBindArrayByType(
} else {
*bind_int = rand_int();
}
- bind->buffer_type = TSDB_DATA_TYPE_INT;
- bind->buffer_length = sizeof(int32_t);
- bind->buffer = bind_int;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_INT;
+ kit_bind->buffer_length = sizeof(int32_t);
+ kit_bind->buffer = bind_int;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
break;
case TSDB_DATA_TYPE_UINT:
@@ -7512,11 +7509,11 @@ static int32_t prepareStmtBindArrayByType(
} else {
*bind_uint = rand_int();
}
- bind->buffer_type = TSDB_DATA_TYPE_UINT;
- bind->buffer_length = sizeof(uint32_t);
- bind->buffer = bind_uint;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_UINT;
+ kit_bind->buffer_length = sizeof(uint32_t);
+ kit_bind->buffer = bind_uint;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
break;
case TSDB_DATA_TYPE_BIGINT:
@@ -7528,11 +7525,11 @@ static int32_t prepareStmtBindArrayByType(
} else {
*bind_bigint = rand_bigint();
}
- bind->buffer_type = TSDB_DATA_TYPE_BIGINT;
- bind->buffer_length = sizeof(int64_t);
- bind->buffer = bind_bigint;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_BIGINT;
+ kit_bind->buffer_length = sizeof(int64_t);
+ kit_bind->buffer = bind_bigint;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
break;
case TSDB_DATA_TYPE_UBIGINT:
@@ -7544,11 +7541,11 @@ static int32_t prepareStmtBindArrayByType(
} else {
*bind_ubigint = rand_bigint();
}
- bind->buffer_type = TSDB_DATA_TYPE_UBIGINT;
- bind->buffer_length = sizeof(uint64_t);
- bind->buffer = bind_ubigint;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_UBIGINT;
+ kit_bind->buffer_length = sizeof(uint64_t);
+ kit_bind->buffer = bind_ubigint;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
break;
case TSDB_DATA_TYPE_FLOAT:
@@ -7560,11 +7557,11 @@ static int32_t prepareStmtBindArrayByType(
} else {
*bind_float = rand_float();
}
- bind->buffer_type = TSDB_DATA_TYPE_FLOAT;
- bind->buffer_length = sizeof(float);
- bind->buffer = bind_float;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_FLOAT;
+ kit_bind->buffer_length = sizeof(float);
+ kit_bind->buffer = bind_float;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
break;
case TSDB_DATA_TYPE_DOUBLE:
@@ -7576,11 +7573,11 @@ static int32_t prepareStmtBindArrayByType(
} else {
*bind_double = rand_double();
}
- bind->buffer_type = TSDB_DATA_TYPE_DOUBLE;
- bind->buffer_length = sizeof(double);
- bind->buffer = bind_double;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_DOUBLE;
+ kit_bind->buffer_length = sizeof(double);
+ kit_bind->buffer = bind_double;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
break;
case TSDB_DATA_TYPE_SMALLINT:
@@ -7592,11 +7589,11 @@ static int32_t prepareStmtBindArrayByType(
} else {
*bind_smallint = rand_smallint();
}
- bind->buffer_type = TSDB_DATA_TYPE_SMALLINT;
- bind->buffer_length = sizeof(int16_t);
- bind->buffer = bind_smallint;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_SMALLINT;
+ kit_bind->buffer_length = sizeof(int16_t);
+ kit_bind->buffer = bind_smallint;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
break;
case TSDB_DATA_TYPE_USMALLINT:
@@ -7608,11 +7605,11 @@ static int32_t prepareStmtBindArrayByType(
} else {
*bind_usmallint = rand_smallint();
}
- bind->buffer_type = TSDB_DATA_TYPE_SMALLINT;
- bind->buffer_length = sizeof(uint16_t);
- bind->buffer = bind_usmallint;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_SMALLINT;
+ kit_bind->buffer_length = sizeof(uint16_t);
+ kit_bind->buffer = bind_usmallint;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
break;
case TSDB_DATA_TYPE_TINYINT:
@@ -7624,11 +7621,11 @@ static int32_t prepareStmtBindArrayByType(
} else {
*bind_tinyint = rand_tinyint();
}
- bind->buffer_type = TSDB_DATA_TYPE_TINYINT;
- bind->buffer_length = sizeof(int8_t);
- bind->buffer = bind_tinyint;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_TINYINT;
+ kit_bind->buffer_length = sizeof(int8_t);
+ kit_bind->buffer = bind_tinyint;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
break;
case TSDB_DATA_TYPE_UTINYINT:
@@ -7640,11 +7637,11 @@ static int32_t prepareStmtBindArrayByType(
} else {
*bind_utinyint = rand_tinyint();
}
- bind->buffer_type = TSDB_DATA_TYPE_UTINYINT;
- bind->buffer_length = sizeof(uint8_t);
- bind->buffer = bind_utinyint;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_UTINYINT;
+ kit_bind->buffer_length = sizeof(uint8_t);
+ kit_bind->buffer = bind_utinyint;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
break;
case TSDB_DATA_TYPE_BOOL:
@@ -7660,11 +7657,11 @@ static int32_t prepareStmtBindArrayByType(
} else {
*bind_bool = rand_bool();
}
- bind->buffer_type = TSDB_DATA_TYPE_BOOL;
- bind->buffer_length = sizeof(int8_t);
- bind->buffer = bind_bool;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_BOOL;
+ kit_bind->buffer_length = sizeof(int8_t);
+ kit_bind->buffer = bind_bool;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
break;
case TSDB_DATA_TYPE_TIMESTAMP:
@@ -7695,11 +7692,11 @@ static int32_t prepareStmtBindArrayByType(
} else {
*bind_ts2 = rand_bigint();
}
- bind->buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
- bind->buffer_length = sizeof(int64_t);
- bind->buffer = bind_ts2;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
+ kit_bind->buffer_length = sizeof(int64_t);
+ kit_bind->buffer = bind_ts2;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
break;
case TSDB_DATA_TYPE_NULL:
@@ -7714,7 +7711,7 @@ static int32_t prepareStmtBindArrayByType(
}
static int32_t prepareStmtBindArrayByTypeForRand(
- TAOS_BIND *bind,
+ TAOS_BIND *kit_bind,
char data_type, int32_t dataLen,
int32_t timePrec,
char **ptr,
@@ -7743,20 +7740,20 @@ static int32_t prepareStmtBindArrayByTypeForRand(
}
char *bind_binary = (char *)*ptr;
- bind->buffer_type = TSDB_DATA_TYPE_BINARY;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_BINARY;
if (value) {
strncpy(bind_binary, value, strlen(value));
- bind->buffer_length = strlen(bind_binary);
+ kit_bind->buffer_length = strlen(bind_binary);
} else {
rand_string(bind_binary, dataLen);
- bind->buffer_length = dataLen;
+ kit_bind->buffer_length = dataLen;
}
- bind->length = &bind->buffer_length;
- bind->buffer = bind_binary;
- bind->is_null = NULL;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->buffer = bind_binary;
+ kit_bind->is_null = NULL;
- *ptr += bind->buffer_length;
+ *ptr += kit_bind->buffer_length;
break;
case TSDB_DATA_TYPE_NCHAR:
@@ -7767,19 +7764,19 @@ static int32_t prepareStmtBindArrayByTypeForRand(
}
char *bind_nchar = (char *)*ptr;
- bind->buffer_type = TSDB_DATA_TYPE_NCHAR;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_NCHAR;
if (value) {
strncpy(bind_nchar, value, strlen(value));
} else {
rand_string(bind_nchar, dataLen);
}
- bind->buffer_length = strlen(bind_nchar);
- bind->buffer = bind_nchar;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_length = strlen(bind_nchar);
+ kit_bind->buffer = bind_nchar;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
- *ptr += bind->buffer_length;
+ *ptr += kit_bind->buffer_length;
break;
case TSDB_DATA_TYPE_INT:
@@ -7790,13 +7787,13 @@ static int32_t prepareStmtBindArrayByTypeForRand(
} else {
*bind_int = rand_int();
}
- bind->buffer_type = TSDB_DATA_TYPE_INT;
- bind->buffer_length = sizeof(int32_t);
- bind->buffer = bind_int;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_INT;
+ kit_bind->buffer_length = sizeof(int32_t);
+ kit_bind->buffer = bind_int;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
- *ptr += bind->buffer_length;
+ *ptr += kit_bind->buffer_length;
break;
case TSDB_DATA_TYPE_UINT:
@@ -7807,13 +7804,13 @@ static int32_t prepareStmtBindArrayByTypeForRand(
} else {
*bind_uint = rand_int();
}
- bind->buffer_type = TSDB_DATA_TYPE_UINT;
- bind->buffer_length = sizeof(uint32_t);
- bind->buffer = bind_uint;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_UINT;
+ kit_bind->buffer_length = sizeof(uint32_t);
+ kit_bind->buffer = bind_uint;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
- *ptr += bind->buffer_length;
+ *ptr += kit_bind->buffer_length;
break;
case TSDB_DATA_TYPE_BIGINT:
@@ -7824,13 +7821,13 @@ static int32_t prepareStmtBindArrayByTypeForRand(
} else {
*bind_bigint = rand_bigint();
}
- bind->buffer_type = TSDB_DATA_TYPE_BIGINT;
- bind->buffer_length = sizeof(int64_t);
- bind->buffer = bind_bigint;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_BIGINT;
+ kit_bind->buffer_length = sizeof(int64_t);
+ kit_bind->buffer = bind_bigint;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
- *ptr += bind->buffer_length;
+ *ptr += kit_bind->buffer_length;
break;
case TSDB_DATA_TYPE_UBIGINT:
@@ -7841,13 +7838,13 @@ static int32_t prepareStmtBindArrayByTypeForRand(
} else {
*bind_ubigint = rand_bigint();
}
- bind->buffer_type = TSDB_DATA_TYPE_UBIGINT;
- bind->buffer_length = sizeof(uint64_t);
- bind->buffer = bind_ubigint;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_UBIGINT;
+ kit_bind->buffer_length = sizeof(uint64_t);
+ kit_bind->buffer = bind_ubigint;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
- *ptr += bind->buffer_length;
+ *ptr += kit_bind->buffer_length;
break;
case TSDB_DATA_TYPE_FLOAT:
@@ -7858,13 +7855,13 @@ static int32_t prepareStmtBindArrayByTypeForRand(
} else {
*bind_float = rand_float();
}
- bind->buffer_type = TSDB_DATA_TYPE_FLOAT;
- bind->buffer_length = sizeof(float);
- bind->buffer = bind_float;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_FLOAT;
+ kit_bind->buffer_length = sizeof(float);
+ kit_bind->buffer = bind_float;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
- *ptr += bind->buffer_length;
+ *ptr += kit_bind->buffer_length;
break;
case TSDB_DATA_TYPE_DOUBLE:
@@ -7875,13 +7872,13 @@ static int32_t prepareStmtBindArrayByTypeForRand(
} else {
*bind_double = rand_double();
}
- bind->buffer_type = TSDB_DATA_TYPE_DOUBLE;
- bind->buffer_length = sizeof(double);
- bind->buffer = bind_double;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_DOUBLE;
+ kit_bind->buffer_length = sizeof(double);
+ kit_bind->buffer = bind_double;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
- *ptr += bind->buffer_length;
+ *ptr += kit_bind->buffer_length;
break;
case TSDB_DATA_TYPE_SMALLINT:
@@ -7892,13 +7889,13 @@ static int32_t prepareStmtBindArrayByTypeForRand(
} else {
*bind_smallint = rand_smallint();
}
- bind->buffer_type = TSDB_DATA_TYPE_SMALLINT;
- bind->buffer_length = sizeof(int16_t);
- bind->buffer = bind_smallint;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_SMALLINT;
+ kit_bind->buffer_length = sizeof(int16_t);
+ kit_bind->buffer = bind_smallint;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
- *ptr += bind->buffer_length;
+ *ptr += kit_bind->buffer_length;
break;
case TSDB_DATA_TYPE_USMALLINT:
@@ -7909,13 +7906,13 @@ static int32_t prepareStmtBindArrayByTypeForRand(
} else {
*bind_usmallint = rand_smallint();
}
- bind->buffer_type = TSDB_DATA_TYPE_USMALLINT;
- bind->buffer_length = sizeof(uint16_t);
- bind->buffer = bind_usmallint;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_USMALLINT;
+ kit_bind->buffer_length = sizeof(uint16_t);
+ kit_bind->buffer = bind_usmallint;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
- *ptr += bind->buffer_length;
+ *ptr += kit_bind->buffer_length;
break;
case TSDB_DATA_TYPE_TINYINT:
@@ -7926,13 +7923,13 @@ static int32_t prepareStmtBindArrayByTypeForRand(
} else {
*bind_tinyint = rand_tinyint();
}
- bind->buffer_type = TSDB_DATA_TYPE_TINYINT;
- bind->buffer_length = sizeof(int8_t);
- bind->buffer = bind_tinyint;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_TINYINT;
+ kit_bind->buffer_length = sizeof(int8_t);
+ kit_bind->buffer = bind_tinyint;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
- *ptr += bind->buffer_length;
+ *ptr += kit_bind->buffer_length;
break;
case TSDB_DATA_TYPE_UTINYINT:
@@ -7943,13 +7940,13 @@ static int32_t prepareStmtBindArrayByTypeForRand(
} else {
*bind_utinyint = rand_tinyint();
}
- bind->buffer_type = TSDB_DATA_TYPE_UTINYINT;
- bind->buffer_length = sizeof(uint8_t);
- bind->buffer = bind_utinyint;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_UTINYINT;
+ kit_bind->buffer_length = sizeof(uint8_t);
+ kit_bind->buffer = bind_utinyint;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
- *ptr += bind->buffer_length;
+ *ptr += kit_bind->buffer_length;
break;
case TSDB_DATA_TYPE_BOOL:
@@ -7964,13 +7961,13 @@ static int32_t prepareStmtBindArrayByTypeForRand(
} else {
*bind_bool = rand_bool();
}
- bind->buffer_type = TSDB_DATA_TYPE_BOOL;
- bind->buffer_length = sizeof(int8_t);
- bind->buffer = bind_bool;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_BOOL;
+ kit_bind->buffer_length = sizeof(int8_t);
+ kit_bind->buffer = bind_bool;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
- *ptr += bind->buffer_length;
+ *ptr += kit_bind->buffer_length;
break;
case TSDB_DATA_TYPE_TIMESTAMP:
@@ -7999,13 +7996,13 @@ static int32_t prepareStmtBindArrayByTypeForRand(
} else {
*bind_ts2 = rand_bigint();
}
- bind->buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
- bind->buffer_length = sizeof(int64_t);
- bind->buffer = bind_ts2;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
+ kit_bind->buffer_length = sizeof(int64_t);
+ kit_bind->buffer = bind_ts2;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
- *ptr += bind->buffer_length;
+ *ptr += kit_bind->buffer_length;
break;
default:
@@ -8045,11 +8042,11 @@ static int32_t prepareStmtWithoutStb(
for (k = 0; k < batch;) {
/* columnCount + 1 (ts) */
- TAOS_BIND *bind = (TAOS_BIND *)(bindArray + 0);
+ TAOS_BIND *kit_bind = (TAOS_BIND *)(bindArray + 0);
int64_t *bind_ts = pThreadInfo->bind_ts;
- bind->buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
if (g_args.disorderRatio) {
*bind_ts = startTime + getTSRandTail(
@@ -8059,16 +8056,16 @@ static int32_t prepareStmtWithoutStb(
} else {
*bind_ts = startTime + g_args.timestamp_step * k;
}
- bind->buffer_length = sizeof(int64_t);
- bind->buffer = bind_ts;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_length = sizeof(int64_t);
+ kit_bind->buffer = bind_ts;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
for (int i = 0; i < g_args.columnCount; i ++) {
- bind = (TAOS_BIND *)((char *)bindArray
+ kit_bind = (TAOS_BIND *)((char *)bindArray
+ (sizeof(TAOS_BIND) * (i + 1)));
if ( -1 == prepareStmtBindArrayByType(
- bind,
+ kit_bind,
data_type[i],
g_args.binwidth,
pThreadInfo->time_precision,
@@ -8132,15 +8129,15 @@ static int32_t prepareStbStmtBindRand(
memset(data, 0, MAX_DATA_SIZE);
char *ptr = data;
- TAOS_BIND *bind;
+ TAOS_BIND *kit_bind;
for (int i = 0; i < stbInfo->columnCount + 1; i ++) {
- bind = (TAOS_BIND *)((char *)bindArray + (sizeof(TAOS_BIND) * i));
+ kit_bind = (TAOS_BIND *)((char *)bindArray + (sizeof(TAOS_BIND) * i));
if (i == 0) {
int64_t *bind_ts = ts;
- bind->buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
if (stbInfo->disorderRatio) {
*bind_ts = startTime + getTSRandTail(
stbInfo->timeStampStep, recSeq,
@@ -8149,14 +8146,14 @@ static int32_t prepareStbStmtBindRand(
} else {
*bind_ts = startTime + stbInfo->timeStampStep * recSeq;
}
- bind->buffer_length = sizeof(int64_t);
- bind->buffer = bind_ts;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_length = sizeof(int64_t);
+ kit_bind->buffer = bind_ts;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
- ptr += bind->buffer_length;
+ ptr += kit_bind->buffer_length;
} else if ( -1 == prepareStmtBindArrayByTypeForRand(
- bind,
+ kit_bind,
stbInfo->columns[i-1].data_type,
stbInfo->columns[i-1].dataLen,
timePrec,
@@ -8570,7 +8567,7 @@ static int parseSamplefileToStmtBatch(
case TSDB_DATA_TYPE_BINARY:
case TSDB_DATA_TYPE_NCHAR:
tmpP = calloc(1, MAX_SAMPLES *
- (((stbInfo)?stbInfo->columns[c].dataLen:g_args.binwidth)));
+ (((stbInfo)?stbInfo->columns[c].dataLen:g_args.binwidth) + 1));
assert(tmpP);
*(uintptr_t*)(sampleBindBatchArray+ sizeof(uintptr_t*)*c) = (uintptr_t)tmpP;
break;
@@ -8602,22 +8599,22 @@ static int parseSamplefileToStmtBatch(
+ lenOfOneRow * i + cursor;
int lengthOfRest = strlen(restStr);
- int index = 0;
- for (index = 0; index < lengthOfRest; index ++) {
- if (restStr[index] == ',') {
+ int tdm_index = 0;
+ for (tdm_index = 0; tdm_index < lengthOfRest; tdm_index ++) {
+ if (restStr[tdm_index] == ',') {
break;
}
}
- char *tmpStr = calloc(1, index + 1);
+ char *tmpStr = calloc(1, tdm_index + 1);
if (NULL == tmpStr) {
errorPrint2("%s() LN%d, Failed to allocate %d bind buffer\n",
- __func__, __LINE__, index + 1);
+ __func__, __LINE__, tdm_index + 1);
return -1;
}
- strncpy(tmpStr, restStr, index);
- cursor += index + 1; // skip ',' too
+ strncpy(tmpStr, restStr, tdm_index);
+ cursor += tdm_index + 1; // skip ',' too
char *tmpP;
switch(data_type) {
@@ -8756,18 +8753,18 @@ static int parseSampleToStmt(
return -1;
}
- TAOS_BIND *bind;
+ TAOS_BIND *kit_bind;
int cursor = 0;
for (int c = 0; c < columnCount + 1; c++) {
- bind = (TAOS_BIND *)((char *)bindArray + (sizeof(TAOS_BIND) * c));
+ kit_bind = (TAOS_BIND *)((char *)bindArray + (sizeof(TAOS_BIND) * c));
if (c == 0) {
- bind->buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
- bind->buffer_length = sizeof(int64_t);
- bind->buffer = NULL; //bind_ts;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
+ kit_bind->buffer_length = sizeof(int64_t);
+ kit_bind->buffer = NULL; //bind_ts;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
} else {
char data_type = (stbInfo)?
stbInfo->columns[c-1].data_type:
@@ -8779,25 +8776,25 @@ static int parseSampleToStmt(
+ lenOfOneRow * i + cursor;
int lengthOfRest = strlen(restStr);
- int index = 0;
- for (index = 0; index < lengthOfRest; index ++) {
- if (restStr[index] == ',') {
+ int tdm_index = 0;
+ for (tdm_index = 0; tdm_index < lengthOfRest; tdm_index ++) {
+ if (restStr[tdm_index] == ',') {
break;
}
}
- char *bindBuffer = calloc(1, index + 1);
+ char *bindBuffer = calloc(1, tdm_index + 1);
if (bindBuffer == NULL) {
errorPrint2("%s() LN%d, Failed to allocate %d bind buffer\n",
- __func__, __LINE__, index + 1);
+ __func__, __LINE__, tdm_index + 1);
return -1;
}
- strncpy(bindBuffer, restStr, index);
- cursor += index + 1; // skip ',' too
+ strncpy(bindBuffer, restStr, tdm_index);
+ cursor += tdm_index + 1; // skip ',' too
if (-1 == prepareStmtBindArrayByType(
- bind,
+ kit_bind,
data_type,
dataLen,
timePrec,
@@ -8841,13 +8838,13 @@ static int32_t prepareStbStmtBindStartTime(
char *bindArray, SSuperTable *stbInfo,
int64_t startTime, int32_t recSeq)
{
- TAOS_BIND *bind;
+ TAOS_BIND *kit_bind;
- bind = (TAOS_BIND *)bindArray;
+ kit_bind = (TAOS_BIND *)bindArray;
int64_t *bind_ts = ts;
- bind->buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
+ kit_bind->buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
if (stbInfo->disorderRatio) {
*bind_ts = startTime + getTSRandTail(
stbInfo->timeStampStep, recSeq,
@@ -8860,10 +8857,10 @@ static int32_t prepareStbStmtBindStartTime(
verbosePrint("%s() LN%d, tableName: %s, bind_ts=%"PRId64"\n",
__func__, __LINE__, tableName, *bind_ts);
- bind->buffer_length = sizeof(int64_t);
- bind->buffer = bind_ts;
- bind->length = &bind->buffer_length;
- bind->is_null = NULL;
+ kit_bind->buffer_length = sizeof(int64_t);
+ kit_bind->buffer = bind_ts;
+ kit_bind->length = &kit_bind->buffer_length;
+ kit_bind->is_null = NULL;
return 0;
}
@@ -10647,9 +10644,9 @@ static void startMultiThreadInsertData(int threads, char* db_name,
pThreadInfo->stbInfo->columnCount:
g_args.columnCount;
for (int c = 1; c < columnCount + 1; c++) {
- TAOS_BIND *bind = (TAOS_BIND *)((char *)tmp + (sizeof(TAOS_BIND) * c));
- if (bind)
- tmfree(bind->buffer);
+ TAOS_BIND *kit_bind = (TAOS_BIND *)((char *)tmp + (sizeof(TAOS_BIND) * c));
+ if (kit_bind)
+ tmfree(kit_bind->buffer);
}
tmfree((char *)tmp);
}
@@ -12031,7 +12028,35 @@ static void setParaFromArg() {
tstrncpy(g_Dbs.db[0].superTbls[0].columns[i].dataType,
type, min(DATATYPE_BUFF_LEN, strlen(type) + 1));
} else {
- g_Dbs.db[0].superTbls[0].columns[i].dataLen = g_args.binwidth;
+ switch (g_Dbs.db[0].superTbls[0].columns[i].data_type){
+ case TSDB_DATA_TYPE_BOOL:
+ case TSDB_DATA_TYPE_UTINYINT:
+ case TSDB_DATA_TYPE_TINYINT:
+ g_Dbs.db[0].superTbls[0].columns[i].dataLen = sizeof(char);
+ break;
+ case TSDB_DATA_TYPE_SMALLINT:
+ case TSDB_DATA_TYPE_USMALLINT:
+ g_Dbs.db[0].superTbls[0].columns[i].dataLen = sizeof(int16_t);
+ break;
+ case TSDB_DATA_TYPE_INT:
+ case TSDB_DATA_TYPE_UINT:
+ g_Dbs.db[0].superTbls[0].columns[i].dataLen = sizeof(int32_t);
+ break;
+ case TSDB_DATA_TYPE_TIMESTAMP:
+ case TSDB_DATA_TYPE_BIGINT:
+ case TSDB_DATA_TYPE_UBIGINT:
+ g_Dbs.db[0].superTbls[0].columns[i].dataLen = sizeof(int64_t);
+ break;
+ case TSDB_DATA_TYPE_FLOAT:
+ g_Dbs.db[0].superTbls[0].columns[i].dataLen = sizeof(float);
+ break;
+ case TSDB_DATA_TYPE_DOUBLE:
+ g_Dbs.db[0].superTbls[0].columns[i].dataLen = sizeof(double);
+ break;
+ default:
+ g_Dbs.db[0].superTbls[0].columns[i].dataLen = g_args.binwidth;
+ break;
+ }
tstrncpy(g_Dbs.db[0].superTbls[0].columns[i].dataType,
dataType[i], min(DATATYPE_BUFF_LEN, strlen(dataType[i]) + 1));
}
diff --git a/src/kit/taosdump/taosdump.c b/src/kit/taosdump/taosdump.c
index 84233bd36b6d598c894dba41ee71ff554621190d..24b3686529bfef65a1526dc7fdb2755fb91b7368 100644
--- a/src/kit/taosdump/taosdump.c
+++ b/src/kit/taosdump/taosdump.c
@@ -252,22 +252,14 @@ static struct argp_option options[] = {
// connection option
{"host", 'h', "HOST", 0, "Server host dumping data from. Default is localhost.", 0},
{"user", 'u', "USER", 0, "User name used to connect to server. Default is root.", 0},
-#ifdef _TD_POWER_
- {"password", 'p', 0, 0, "User password to connect to server. Default is powerdb.", 0},
-#else
{"password", 'p', 0, 0, "User password to connect to server. Default is taosdata.", 0},
-#endif
{"port", 'P', "PORT", 0, "Port to connect", 0},
{"mysqlFlag", 'q', "MYSQLFLAG", 0, "mysqlFlag, Default is 0", 0},
// input/output file
{"outpath", 'o', "OUTPATH", 0, "Output file path.", 1},
{"inpath", 'i', "INPATH", 0, "Input file path.", 1},
{"resultFile", 'r', "RESULTFILE", 0, "DumpOut/In Result file path and name.", 1},
-#ifdef _TD_POWER_
- {"config-dir", 'c', "CONFIG_DIR", 0, "Configure directory. Default is /etc/power/taos.cfg.", 1},
-#else
{"config-dir", 'c', "CONFIG_DIR", 0, "Configure directory. Default is /etc/taos/taos.cfg.", 1},
-#endif
{"encode", 'e', "ENCODE", 0, "Input file encoding.", 1},
// dump unit options
{"all-databases", 'A', 0, 0, "Dump all databases.", 2},
@@ -364,6 +356,12 @@ struct arguments g_args = {
"root",
#ifdef _TD_POWER_
"powerdb",
+#elif (_TD_TQ_ == true)
+ "tqueue",
+#elif (_TD_PRO_ == true)
+ "prodb",
+#elif (_TD_KH_ == true)
+ "khroot",
#else
"taosdata",
#endif
diff --git a/src/mnode/src/mnodeCluster.c b/src/mnode/src/mnodeCluster.c
index 553e8446ab449cb3eab8bcc3c15bef8715fe978a..d883daff81d27daa38572fb7fed09add8e56f618 100644
--- a/src/mnode/src/mnodeCluster.c
+++ b/src/mnode/src/mnodeCluster.c
@@ -145,8 +145,8 @@ static int32_t mnodeCreateCluster() {
SClusterObj *pCluster = malloc(sizeof(SClusterObj));
memset(pCluster, 0, sizeof(SClusterObj));
pCluster->createdTime = taosGetTimestampMs();
- bool getuid = taosGetSystemUid(pCluster->uid);
- if (!getuid) {
+ bool mnd_getuid = taosGetSystemUid(pCluster->uid);
+ if (!mnd_getuid) {
strcpy(pCluster->uid, "tdengine2.0");
mError("failed to get uid from system, set to default val %s", pCluster->uid);
} else {
diff --git a/src/mnode/src/mnodeMnode.c b/src/mnode/src/mnodeMnode.c
index bccad221574d49f770bebb61822609c2138f258e..e3051cea81408e58832f7287dda5ec4abba38faf 100644
--- a/src/mnode/src/mnodeMnode.c
+++ b/src/mnode/src/mnodeMnode.c
@@ -209,7 +209,7 @@ void mnodeUpdateMnodeEpSet(SMInfos *pMinfos) {
mInfos = *pMinfos;
} else {
mInfo("vgId:1, update mnodes epSet, numOfMnodes:%d", mnodeGetMnodesNum());
- int32_t index = 0;
+ int32_t mnd_index = 0;
void * pIter = NULL;
while (1) {
SMnodeObj *pMnode = NULL;
@@ -219,10 +219,10 @@ void mnodeUpdateMnodeEpSet(SMInfos *pMinfos) {
SDnodeObj *pDnode = mnodeGetDnode(pMnode->mnodeId);
if (pDnode != NULL) {
set = true;
- mInfos.mnodeInfos[index].mnodeId = pMnode->mnodeId;
- strcpy(mInfos.mnodeInfos[index].mnodeEp, pDnode->dnodeEp);
- if (pMnode->role == TAOS_SYNC_ROLE_MASTER) mInfos.inUse = index;
- index++;
+ mInfos.mnodeInfos[mnd_index].mnodeId = pMnode->mnodeId;
+ strcpy(mInfos.mnodeInfos[mnd_index].mnodeEp, pDnode->dnodeEp);
+ if (pMnode->role == TAOS_SYNC_ROLE_MASTER) mInfos.inUse = mnd_index;
+ mnd_index++;
} else {
set = false;
}
@@ -231,7 +231,7 @@ void mnodeUpdateMnodeEpSet(SMInfos *pMinfos) {
mnodeDecMnodeRef(pMnode);
}
- mInfos.mnodeNum = index;
+ mInfos.mnodeNum = mnd_index;
if (mInfos.mnodeNum < sdbGetReplicaNum()) {
set = false;
mDebug("vgId:1, mnodes info not synced, current:%d syncCfgNum:%d", mInfos.mnodeNum, sdbGetReplicaNum());
@@ -250,23 +250,23 @@ void mnodeUpdateMnodeEpSet(SMInfos *pMinfos) {
tsMEpForPeer.numOfEps = tsMInfos.mnodeNum;
mInfo("vgId:1, mnodes epSet is set, num:%d inUse:%d", tsMInfos.mnodeNum, tsMInfos.inUse);
- for (int index = 0; index < mInfos.mnodeNum; ++index) {
- SMInfo *pInfo = &tsMInfos.mnodeInfos[index];
- taosGetFqdnPortFromEp(pInfo->mnodeEp, tsMEpForShell.fqdn[index], &tsMEpForShell.port[index]);
- taosGetFqdnPortFromEp(pInfo->mnodeEp, tsMEpForPeer.fqdn[index], &tsMEpForPeer.port[index]);
- tsMEpForPeer.port[index] = tsMEpForPeer.port[index] + TSDB_PORT_DNODEDNODE;
+ for (int mnd_index = 0; mnd_index < mInfos.mnodeNum; ++mnd_index) {
+ SMInfo *pInfo = &tsMInfos.mnodeInfos[mnd_index];
+ taosGetFqdnPortFromEp(pInfo->mnodeEp, tsMEpForShell.fqdn[mnd_index], &tsMEpForShell.port[mnd_index]);
+ taosGetFqdnPortFromEp(pInfo->mnodeEp, tsMEpForPeer.fqdn[mnd_index], &tsMEpForPeer.port[mnd_index]);
+ tsMEpForPeer.port[mnd_index] = tsMEpForPeer.port[mnd_index] + TSDB_PORT_DNODEDNODE;
- mInfo("vgId:1, mnode:%d, fqdn:%s shell:%u peer:%u", pInfo->mnodeId, tsMEpForShell.fqdn[index],
- tsMEpForShell.port[index], tsMEpForPeer.port[index]);
+ mInfo("vgId:1, mnode:%d, fqdn:%s shell:%u peer:%u", pInfo->mnodeId, tsMEpForShell.fqdn[mnd_index],
+ tsMEpForShell.port[mnd_index], tsMEpForPeer.port[mnd_index]);
- tsMEpForShell.port[index] = htons(tsMEpForShell.port[index]);
- tsMEpForPeer.port[index] = htons(tsMEpForPeer.port[index]);
+ tsMEpForShell.port[mnd_index] = htons(tsMEpForShell.port[mnd_index]);
+ tsMEpForPeer.port[mnd_index] = htons(tsMEpForPeer.port[mnd_index]);
pInfo->mnodeId = htonl(pInfo->mnodeId);
}
} else {
mInfo("vgId:1, mnodes epSet not set, num:%d inUse:%d", tsMInfos.mnodeNum, tsMInfos.inUse);
- for (int index = 0; index < tsMInfos.mnodeNum; ++index) {
- mInfo("vgId:1, index:%d, ep:%s:%u", index, tsMEpForShell.fqdn[index], htons(tsMEpForShell.port[index]));
+ for (int mnd_index = 0; mnd_index < tsMInfos.mnodeNum; ++mnd_index) {
+ mInfo("vgId:1, index:%d, ep:%s:%u", mnd_index, tsMEpForShell.fqdn[mnd_index], htons(tsMEpForShell.port[mnd_index]));
}
}
diff --git a/src/mnode/src/mnodeSdb.c b/src/mnode/src/mnodeSdb.c
index 7644f4d7339251037fbe244b17e5af1fa9af0484..661bcc4679dada055a68693dbf3043fd62f05282 100644
--- a/src/mnode/src/mnodeSdb.c
+++ b/src/mnode/src/mnodeSdb.c
@@ -330,7 +330,7 @@ int32_t sdbUpdateSync(void *pMnodes) {
mDebug("vgId:1, update sync config, pMnodes:%p", pMnodes);
SSyncCfg syncCfg = {0};
- int32_t index = 0;
+ int32_t mnd_index = 0;
if (pMinfos == NULL) {
mDebug("vgId:1, mInfos not input, use mInfos in sdb, numOfMnodes:%d", syncCfg.replica);
@@ -341,29 +341,29 @@ int32_t sdbUpdateSync(void *pMnodes) {
pIter = mnodeGetNextMnode(pIter, &pMnode);
if (pMnode == NULL) break;
- syncCfg.nodeInfo[index].nodeId = pMnode->mnodeId;
+ syncCfg.nodeInfo[mnd_index].nodeId = pMnode->mnodeId;
SDnodeObj *pDnode = mnodeGetDnode(pMnode->mnodeId);
if (pDnode != NULL) {
- syncCfg.nodeInfo[index].nodePort = pDnode->dnodePort + TSDB_PORT_SYNC;
- tstrncpy(syncCfg.nodeInfo[index].nodeFqdn, pDnode->dnodeFqdn, TSDB_FQDN_LEN);
- index++;
+ syncCfg.nodeInfo[mnd_index].nodePort = pDnode->dnodePort + TSDB_PORT_SYNC;
+ tstrncpy(syncCfg.nodeInfo[mnd_index].nodeFqdn, pDnode->dnodeFqdn, TSDB_FQDN_LEN);
+ mnd_index++;
}
mnodeDecDnodeRef(pDnode);
mnodeDecMnodeRef(pMnode);
}
- syncCfg.replica = index;
+ syncCfg.replica = mnd_index;
} else {
mDebug("vgId:1, mInfos input, numOfMnodes:%d", pMinfos->mnodeNum);
- for (index = 0; index < pMinfos->mnodeNum; ++index) {
- SMInfo *node = &pMinfos->mnodeInfos[index];
- syncCfg.nodeInfo[index].nodeId = node->mnodeId;
- taosGetFqdnPortFromEp(node->mnodeEp, syncCfg.nodeInfo[index].nodeFqdn, &syncCfg.nodeInfo[index].nodePort);
- syncCfg.nodeInfo[index].nodePort += TSDB_PORT_SYNC;
+ for (mnd_index = 0; mnd_index < pMinfos->mnodeNum; ++mnd_index) {
+ SMInfo *node = &pMinfos->mnodeInfos[mnd_index];
+ syncCfg.nodeInfo[mnd_index].nodeId = node->mnodeId;
+ taosGetFqdnPortFromEp(node->mnodeEp, syncCfg.nodeInfo[mnd_index].nodeFqdn, &syncCfg.nodeInfo[mnd_index].nodePort);
+ syncCfg.nodeInfo[mnd_index].nodePort += TSDB_PORT_SYNC;
}
- syncCfg.replica = index;
+ syncCfg.replica = mnd_index;
mnodeUpdateMnodeEpSet(pMnodes);
}
diff --git a/src/mnode/src/mnodeShow.c b/src/mnode/src/mnodeShow.c
index 570f5c344b624eea1f23fd13f11bfc6e230c61d5..98a41c7a60818a68c8aac0e27abf357b1f82303d 100644
--- a/src/mnode/src/mnodeShow.c
+++ b/src/mnode/src/mnodeShow.c
@@ -121,7 +121,7 @@ static int32_t mnodeProcessShowMsg(SMnodeMsg *pMsg) {
}
if (!tsMnodeShowMetaFp[pShowMsg->type] || !tsMnodeShowRetrieveFp[pShowMsg->type]) {
- mError("show type:%s is not support", mnodeGetShowType(pShowMsg->type));
+ mWarn("show type:%s is not support", mnodeGetShowType(pShowMsg->type));
return TSDB_CODE_COM_OPS_NOT_SUPPORT;
}
diff --git a/src/os/CMakeLists.txt b/src/os/CMakeLists.txt
index a64c9d79dd6af511448ad0f9b186f6e50d59c728..bb04a2c6b3d2bbaafef830658eff065ee71b10d1 100644
--- a/src/os/CMakeLists.txt
+++ b/src/os/CMakeLists.txt
@@ -10,5 +10,6 @@ ELSEIF (TD_WINDOWS)
ENDIF ()
ADD_SUBDIRECTORY(src/detail)
-ADD_SUBDIRECTORY(tests)
-
+IF (NOT TD_NINGSI_60)
+ ADD_SUBDIRECTORY(tests)
+ENDIF ()
diff --git a/src/os/src/detail/osDir.c b/src/os/src/detail/osDir.c
index c467c64872d4b660af5cebb19b017f1528b55055..8f06fb1da2fb90a07511c520e89a9ce1f4fdb92a 100644
--- a/src/os/src/detail/osDir.c
+++ b/src/os/src/detail/osDir.c
@@ -45,8 +45,8 @@ void taosRemoveDir(char *rootDir) {
uInfo("dir:%s is removed", rootDir);
}
-bool taosDirExist(const char* dirname) {
- return access(dirname, F_OK) == 0;
+bool taosDirExist(const char* os_dirname) {
+ return access(os_dirname, F_OK) == 0;
}
int taosMkDir(const char *path, mode_t mode) {
diff --git a/src/os/src/detail/osFile.c b/src/os/src/detail/osFile.c
index cc12968c72eef5b3970ca68cf660de502b402e1e..d47020cf21df5ea78dbcc4cb54fa72d070d7d112 100644
--- a/src/os/src/detail/osFile.c
+++ b/src/os/src/detail/osFile.c
@@ -43,9 +43,9 @@ void taosGetTmpfilePath(const char *fileNamePrefix, char *dstPath) {
strcat(tmpPath, "-%d-%s");
}
- char rand[8] = {0};
- taosRandStr(rand, tListLen(rand) - 1);
- snprintf(dstPath, PATH_MAX, tmpPath, getpid(), rand);
+ char os_rand[8] = {0};
+ taosRandStr(os_rand, tListLen(os_rand) - 1);
+ snprintf(dstPath, PATH_MAX, tmpPath, getpid(), os_rand);
}
#else
@@ -68,11 +68,11 @@ void taosGetTmpfilePath(const char *fileNamePrefix, char *dstPath) {
strcat(tmpPath, "-%d-%s");
}
- char rand[32] = {0};
+ char os_rand[32] = {0};
- sprintf(rand, "%" PRIu64, atomic_add_fetch_64(&seqId, 1));
+ sprintf(os_rand, "%" PRIu64, atomic_add_fetch_64(&seqId, 1));
- snprintf(dstPath, PATH_MAX, tmpPath, getpid(), rand);
+ snprintf(dstPath, PATH_MAX, tmpPath, getpid(), os_rand);
}
#endif
diff --git a/src/os/src/detail/osTime.c b/src/os/src/detail/osTime.c
index 034ebc28fc51a23893b6cefb9792359c832cd8b0..7b2b157314b612fbd8f0a6f1d4879c322ce6cc4c 100644
--- a/src/os/src/detail/osTime.c
+++ b/src/os/src/detail/osTime.c
@@ -82,23 +82,23 @@ void deltaToUtcInitOnce() {
}
static int64_t parseFraction(char* str, char** end, int32_t timePrec);
-static int32_t parseTimeWithTz(char* timestr, int64_t* time, int32_t timePrec);
-static int32_t parseLocaltime(char* timestr, int64_t* time, int32_t timePrec);
-static int32_t parseLocaltimeWithDst(char* timestr, int64_t* time, int32_t timePrec);
+static int32_t parseTimeWithTz(char* timestr, int64_t* os_time, int32_t timePrec);
+static int32_t parseLocaltime(char* timestr, int64_t* os_time, int32_t timePrec);
+static int32_t parseLocaltimeWithDst(char* timestr, int64_t* os_time, int32_t timePrec);
-static int32_t (*parseLocaltimeFp[]) (char* timestr, int64_t* time, int32_t timePrec) = {
+static int32_t (*parseLocaltimeFp[]) (char* timestr, int64_t* os_time, int32_t timePrec) = {
parseLocaltime,
parseLocaltimeWithDst
};
int32_t taosGetTimestampSec() { return (int32_t)time(NULL); }
-int32_t taosParseTime(char* timestr, int64_t* time, int32_t len, int32_t timePrec, int8_t day_light) {
+int32_t taosParseTime(char* timestr, int64_t* os_time, int32_t len, int32_t timePrec, int8_t day_light) {
/* parse datatime string in with tz */
if (strnchr(timestr, 'T', len, false) != NULL) {
- return parseTimeWithTz(timestr, time, timePrec);
+ return parseTimeWithTz(timestr, os_time, timePrec);
} else {
- return (*parseLocaltimeFp[day_light])(timestr, time, timePrec);
+ return (*parseLocaltimeFp[day_light])(timestr, os_time, timePrec);
}
}
@@ -213,7 +213,7 @@ int32_t parseTimezone(char* str, int64_t* tzOffset) {
* 2013-04-12T15:52:01+0800
* 2013-04-12T15:52:01.123+0800
*/
-int32_t parseTimeWithTz(char* timestr, int64_t* time, int32_t timePrec) {
+int32_t parseTimeWithTz(char* timestr, int64_t* os_time, int32_t timePrec) {
int64_t factor = (timePrec == TSDB_TIME_PRECISION_MILLI) ? 1000 :
(timePrec == TSDB_TIME_PRECISION_MICRO ? 1000000 : 1000000000);
@@ -238,14 +238,14 @@ int32_t parseTimeWithTz(char* timestr, int64_t* time, int32_t timePrec) {
if (str[0] == 'Z' || str[0] == 'z') {
/* utc time, no millisecond, return directly*/
- *time = seconds * factor;
+ *os_time = seconds * factor;
} else if (str[0] == '.') {
str += 1;
if ((fraction = parseFraction(str, &str, timePrec)) < 0) {
return -1;
}
- *time = seconds * factor + fraction;
+ *os_time = seconds * factor + fraction;
char seg = str[0];
if (seg != 'Z' && seg != 'z' && seg != '+' && seg != '-') {
@@ -256,18 +256,18 @@ int32_t parseTimeWithTz(char* timestr, int64_t* time, int32_t timePrec) {
return -1;
}
- *time += tzOffset * factor;
+ *os_time += tzOffset * factor;
}
} else if (str[0] == '+' || str[0] == '-') {
- *time = seconds * factor + fraction;
+ *os_time = seconds * factor + fraction;
// parse the timezone
if (parseTimezone(str, &tzOffset) == -1) {
return -1;
}
- *time += tzOffset * factor;
+ *os_time += tzOffset * factor;
} else {
return -1;
}
@@ -275,8 +275,8 @@ int32_t parseTimeWithTz(char* timestr, int64_t* time, int32_t timePrec) {
return 0;
}
-int32_t parseLocaltime(char* timestr, int64_t* time, int32_t timePrec) {
- *time = 0;
+int32_t parseLocaltime(char* timestr, int64_t* os_time, int32_t timePrec) {
+ *os_time = 0;
struct tm tm = {0};
char* str = strptime(timestr, "%Y-%m-%d %H:%M:%S", &tm);
@@ -303,13 +303,13 @@ int32_t parseLocaltime(char* timestr, int64_t* time, int32_t timePrec) {
int64_t factor = (timePrec == TSDB_TIME_PRECISION_MILLI) ? 1000 :
(timePrec == TSDB_TIME_PRECISION_MICRO ? 1000000 : 1000000000);
- *time = factor * seconds + fraction;
+ *os_time = factor * seconds + fraction;
return 0;
}
-int32_t parseLocaltimeWithDst(char* timestr, int64_t* time, int32_t timePrec) {
- *time = 0;
+int32_t parseLocaltimeWithDst(char* timestr, int64_t* os_time, int32_t timePrec) {
+ *os_time = 0;
struct tm tm = {0};
tm.tm_isdst = -1;
@@ -332,73 +332,99 @@ int32_t parseLocaltimeWithDst(char* timestr, int64_t* time, int32_t timePrec) {
int64_t factor = (timePrec == TSDB_TIME_PRECISION_MILLI) ? 1000 :
(timePrec == TSDB_TIME_PRECISION_MICRO ? 1000000 : 1000000000);
- *time = factor * seconds + fraction;
+ *os_time = factor * seconds + fraction;
return 0;
}
-int64_t convertTimePrecision(int64_t time, int32_t fromPrecision, int32_t toPrecision) {
+int64_t convertTimePrecision(int64_t os_time, int32_t fromPrecision, int32_t toPrecision) {
assert(fromPrecision == TSDB_TIME_PRECISION_MILLI ||
fromPrecision == TSDB_TIME_PRECISION_MICRO ||
fromPrecision == TSDB_TIME_PRECISION_NANO);
assert(toPrecision == TSDB_TIME_PRECISION_MILLI ||
toPrecision == TSDB_TIME_PRECISION_MICRO ||
toPrecision == TSDB_TIME_PRECISION_NANO);
+ double tempResult = (double)os_time;
switch(fromPrecision) {
case TSDB_TIME_PRECISION_MILLI: {
switch (toPrecision) {
case TSDB_TIME_PRECISION_MILLI:
- return time;
+ return os_time;
case TSDB_TIME_PRECISION_MICRO:
- return time * 1000;
+ tempResult *= 1000;
+ os_time *= 1000;
+ goto end_;
case TSDB_TIME_PRECISION_NANO:
- return time * 1000000;
+ tempResult *= 1000000;
+ os_time *= 1000000;
+ goto end_;
}
} // end from milli
case TSDB_TIME_PRECISION_MICRO: {
switch (toPrecision) {
case TSDB_TIME_PRECISION_MILLI:
- return time / 1000;
+ return os_time / 1000;
case TSDB_TIME_PRECISION_MICRO:
- return time;
+ return os_time;
case TSDB_TIME_PRECISION_NANO:
- return time * 1000;
+ tempResult *= 1000;
+ os_time *= 1000;
+ goto end_;
}
} //end from micro
case TSDB_TIME_PRECISION_NANO: {
switch (toPrecision) {
case TSDB_TIME_PRECISION_MILLI:
- return time / 1000000;
+ return os_time / 1000000;
case TSDB_TIME_PRECISION_MICRO:
- return time / 1000;
+ return os_time / 1000;
case TSDB_TIME_PRECISION_NANO:
- return time;
+ return os_time;
}
} //end from nano
default: {
assert(0);
- return time; // only to pass windows compilation
+ return os_time; // only to pass windows compilation
}
} //end switch fromPrecision
+end_:
+ if (tempResult >= (double)INT64_MAX) return INT64_MAX;
+ if (tempResult <= (double)INT64_MIN) return INT64_MIN + 1; // INT64_MIN means NULL
+ return os_time;
}
static int32_t getDuration(int64_t val, char unit, int64_t* result, int32_t timePrecision) {
switch (unit) {
- case 's':
+ case 's':{
+ double temp = ((double)val) * MILLISECOND_PER_SECOND;
+ if (temp >= (double)INT64_MAX || temp <= (double)INT64_MIN) return -1;
(*result) = convertTimePrecision(val * MILLISECOND_PER_SECOND, TSDB_TIME_PRECISION_MILLI, timePrecision);
break;
- case 'm':
+ }
+ case 'm':{
+ double temp = ((double)val) * MILLISECOND_PER_MINUTE;
+ if (temp >= (double)INT64_MAX || temp <= (double)INT64_MIN) return -1;
(*result) = convertTimePrecision(val * MILLISECOND_PER_MINUTE, TSDB_TIME_PRECISION_MILLI, timePrecision);
break;
- case 'h':
+ }
+ case 'h':{
+ double temp = ((double)val) * MILLISECOND_PER_HOUR;
+ if (temp >= (double)INT64_MAX || temp <= (double)INT64_MIN) return -1;
(*result) = convertTimePrecision(val * MILLISECOND_PER_HOUR, TSDB_TIME_PRECISION_MILLI, timePrecision);
break;
- case 'd':
+ }
+ case 'd': {
+ double temp = ((double)val) * MILLISECOND_PER_DAY;
+ if (temp >= (double)INT64_MAX || temp <= (double)INT64_MIN) return -1;
(*result) = convertTimePrecision(val * MILLISECOND_PER_DAY, TSDB_TIME_PRECISION_MILLI, timePrecision);
break;
- case 'w':
+ }
+ case 'w': {
+ double temp = ((double)val) * MILLISECOND_PER_WEEK;
+ if (temp >= (double)INT64_MAX || temp <= (double)INT64_MIN) return -1;
(*result) = convertTimePrecision(val * MILLISECOND_PER_WEEK, TSDB_TIME_PRECISION_MILLI, timePrecision);
break;
+ }
case 'a':
(*result) = convertTimePrecision(val, TSDB_TIME_PRECISION_MILLI, timePrecision);
break;
diff --git a/src/os/src/linux/linuxEnv.c b/src/os/src/linux/linuxEnv.c
index 35ca64d79f8b7a883014fd6ca980300ede22d6e2..84c873202b685e690252890e347632e096a4b39e 100644
--- a/src/os/src/linux/linuxEnv.c
+++ b/src/os/src/linux/linuxEnv.c
@@ -39,6 +39,20 @@ void osInit() {
strcpy(tsDataDir, "/var/lib/ProDB");
strcpy(tsLogDir, "/var/log/ProDB");
strcpy(tsScriptDir, "/etc/ProDB");
+#elif (_TD_KH_ == true)
+ if (configDir[0] == 0) {
+ strcpy(configDir, "/etc/kinghistorian");
+ }
+ strcpy(tsDataDir, "/var/lib/kinghistorian");
+ strcpy(tsLogDir, "/var/log/kinghistorian");
+ strcpy(tsScriptDir, "/etc/kinghistorian");
+#elif (_TD_JH_ == true)
+ if (configDir[0] == 0) {
+ strcpy(configDir, "/etc/jh_taos");
+ }
+ strcpy(tsDataDir, "/var/lib/jh_taos");
+ strcpy(tsLogDir, "/var/log/jh_taos");
+ strcpy(tsScriptDir, "/etc/jh_taos");
#else
if (configDir[0] == 0) {
strcpy(configDir, "/etc/taos");
diff --git a/src/os/src/linux/osSystem.c b/src/os/src/linux/osSystem.c
index a82149dccb1f71e6fbdc2b62d066f04ff52c251d..a5f681d1b2226351f8dad134256e76274de7103c 100644
--- a/src/os/src/linux/osSystem.c
+++ b/src/os/src/linux/osSystem.c
@@ -33,9 +33,9 @@ void* taosLoadDll(const char *filename) {
void* taosLoadSym(void* handle, char* name) {
void* sym = dlsym(handle, name);
- char* error = NULL;
+ char* os_error = NULL;
- if ((error = dlerror()) != NULL) {
+ if ((os_error = dlerror()) != NULL) {
uWarn("load sym:%s failed, error:%s", name, dlerror());
return NULL;
}
diff --git a/src/os/src/windows/wEnv.c b/src/os/src/windows/wEnv.c
index 6f46bb43c75ff2c9735fc53a11bce585c1c213f6..6e087c9b29d7468b7c5a4e82c0f69b38f2c01223 100644
--- a/src/os/src/windows/wEnv.c
+++ b/src/os/src/windows/wEnv.c
@@ -33,12 +33,12 @@ void osInit() {
strcpy(tsScriptDir, "C:/PowerDB/script");
#elif (_TD_TQ_ == true)
if (configDir[0] == 0) {
- strcpy(configDir, "C:/TQ/cfg");
+ strcpy(configDir, "C:/TQueue/cfg");
}
- strcpy(tsVnodeDir, "C:/TQ/data");
- strcpy(tsDataDir, "C:/TQ/data");
- strcpy(tsLogDir, "C:/TQ/log");
- strcpy(tsScriptDir, "C:/TQ/script");
+ strcpy(tsVnodeDir, "C:/TQueue/data");
+ strcpy(tsDataDir, "C:/TQueue/data");
+ strcpy(tsLogDir, "C:/TQueue/log");
+ strcpy(tsScriptDir, "C:/TQueue/script");
#elif (_TD_PRO_ == true)
if (configDir[0] == 0) {
strcpy(configDir, "C:/ProDB/cfg");
@@ -47,6 +47,22 @@ void osInit() {
strcpy(tsDataDir, "C:/ProDB/data");
strcpy(tsLogDir, "C:/ProDB/log");
strcpy(tsScriptDir, "C:/ProDB/script");
+#elif (_TD_KH_ == true)
+ if (configDir[0] == 0) {
+ strcpy(configDir, "C:/KingHistorian/cfg");
+ }
+ strcpy(tsVnodeDir, "C:/KingHistorian/data");
+ strcpy(tsDataDir, "C:/KingHistorian/data");
+ strcpy(tsLogDir, "C:/KingHistorian/log");
+ strcpy(tsScriptDir, "C:/KingHistorian/script");
+#elif (_TD_JH_ == true)
+ if (configDir[0] == 0) {
+ strcpy(configDir, "C:/jh_iot/cfg");
+ }
+ strcpy(tsVnodeDir, "C:/jh_iot/data");
+ strcpy(tsDataDir, "C:/jh_iot/data");
+ strcpy(tsLogDir, "C:/jh_iot/log");
+ strcpy(tsScriptDir, "C:/jh_iot/script");
#else
if (configDir[0] == 0) {
strcpy(configDir, "C:/TDengine/cfg");
diff --git a/src/os/src/windows/wString.c b/src/os/src/windows/wString.c
index 96a604ae6e3bfb2088a376894c7083a9514ae67f..67afa90121ad64ea5f4387e0ddcc7f0574cfd38f 100644
--- a/src/os/src/windows/wString.c
+++ b/src/os/src/windows/wString.c
@@ -61,14 +61,14 @@ char *getpass(const char *prefix) {
memset(passwd, 0, TSDB_KEY_LEN);
printf("%s", prefix);
- int32_t index = 0;
+ int32_t os_index = 0;
char ch;
- while (index < TSDB_KEY_LEN) {
+ while (os_index < TSDB_KEY_LEN) {
ch = getch();
if (ch == '\n' || ch == '\r') {
break;
} else {
- passwd[index++] = ch;
+ passwd[os_index++] = ch;
}
}
diff --git a/src/plugins/http/inc/httpInt.h b/src/plugins/http/inc/httpInt.h
index bf8efd2831e19480615be291d409d53207bb8f63..af0f4c579557d1bd919847ef858af8dc1616bb6f 100644
--- a/src/plugins/http/inc/httpInt.h
+++ b/src/plugins/http/inc/httpInt.h
@@ -147,7 +147,7 @@ typedef struct HttpContext {
int32_t state;
uint8_t reqType;
uint8_t parsed;
- uint8_t error;
+ bool error;
char ipstr[22];
char user[TSDB_USER_LEN]; // parsed from auth token or login message
char pass[HTTP_PASSWORD_LEN];
diff --git a/src/plugins/http/src/httpContext.c b/src/plugins/http/src/httpContext.c
index f26a4b4c8bdda05f801075b70c1b762882adfd27..4922d98ee492c94e56604d5823e87e4704ddf8e3 100644
--- a/src/plugins/http/src/httpContext.c
+++ b/src/plugins/http/src/httpContext.c
@@ -120,6 +120,7 @@ HttpContext *httpCreateContext(SOCKET fd) {
pContext->lastAccessTime = taosGetTimestampSec();
pContext->state = HTTP_CONTEXT_STATE_READY;
pContext->parser = httpCreateParser(pContext);
+ pContext->error = false;
TSDB_CACHE_PTR_TYPE handleVal = (TSDB_CACHE_PTR_TYPE)pContext;
HttpContext **ppContext = taosCachePut(tsHttpServer.contextCache, &handleVal, sizeof(TSDB_CACHE_PTR_TYPE), &pContext,
diff --git a/src/plugins/http/src/httpResp.c b/src/plugins/http/src/httpResp.c
index 1d05b455cb5c66e4f492140e1f337210da04caef..4065f881d1e8a8023e3adacfceaf243de60eebdc 100644
--- a/src/plugins/http/src/httpResp.c
+++ b/src/plugins/http/src/httpResp.c
@@ -52,8 +52,14 @@ static void httpSendErrorRespImp(HttpContext *pContext, int32_t httpCode, char *
int8_t httpVersion = 0;
int8_t keepAlive = 0;
+
if (pContext->parser != NULL) {
httpVersion = pContext->parser->httpVersion;
+ }
+
+ if (pContext->error == true) {
+ keepAlive = HTTP_KEEPALIVE_DISABLE;
+ } else if (pContext->parser != NULL) {
keepAlive = pContext->parser->keepAlive;
}
diff --git a/src/plugins/http/src/httpServer.c b/src/plugins/http/src/httpServer.c
index 13a0835c3960333c6d12aa443025de5fb95d565e..fff17a4194b222f5a61535cd8a0509450c17bcd2 100644
--- a/src/plugins/http/src/httpServer.c
+++ b/src/plugins/http/src/httpServer.c
@@ -53,7 +53,7 @@ static void httpStopThread(HttpThread *pThread) {
break;
}
} while (0);
- if (r) {
+ if (r && taosCheckPthreadValid(pThread->thread)) {
pthread_cancel(pThread->thread);
}
#else
@@ -63,15 +63,21 @@ static void httpStopThread(HttpThread *pThread) {
httpError("%s, failed to create eventfd, will call pthread_cancel instead, which may result in data corruption: %s",
pThread->label, strerror(errno));
pThread->stop = true;
- pthread_cancel(pThread->thread);
+ if (taosCheckPthreadValid(pThread->thread)) {
+ pthread_cancel(pThread->thread);
+ }
} else if (epoll_ctl(pThread->pollFd, EPOLL_CTL_ADD, fd, &event) < 0) {
httpError("%s, failed to call epoll_ctl, will call pthread_cancel instead, which may result in data corruption: %s",
pThread->label, strerror(errno));
- pthread_cancel(pThread->thread);
+ if (taosCheckPthreadValid(pThread->thread)) {
+ pthread_cancel(pThread->thread);
+ }
}
#endif // __APPLE__
- pthread_join(pThread->thread, NULL);
+ if (taosCheckPthreadValid(pThread->thread)) {
+ pthread_join(pThread->thread, NULL);
+ }
#ifdef __APPLE__
if (sv[0] != -1) {
diff --git a/src/plugins/http/src/httpUtil.c b/src/plugins/http/src/httpUtil.c
index f30ac7326eef20f4abf5558b288f16f6ee313b42..64893506ffe07f83cd38ca34aa70ede66a38632b 100644
--- a/src/plugins/http/src/httpUtil.c
+++ b/src/plugins/http/src/httpUtil.c
@@ -31,10 +31,10 @@ bool httpCheckUsedbSql(char *sql) {
}
bool httpCheckAlterSql(char *sql) {
- int32_t index = 0;
+ int32_t htp_index = 0;
do {
- SStrToken t0 = tStrGetToken(sql, &index, false);
+ SStrToken t0 = tStrGetToken(sql, &htp_index, false);
if (t0.type != TK_LP) {
return t0.type == TK_ALTER;
}
diff --git a/src/plugins/monitor/src/monMain.c b/src/plugins/monitor/src/monMain.c
index fea793fa860fd17ff30bcecae1436180bc6b34bf..5677fff71cc56197e9075c286d565d77ce3169c1 100644
--- a/src/plugins/monitor/src/monMain.c
+++ b/src/plugins/monitor/src/monMain.c
@@ -123,7 +123,11 @@ static void *monThreadFunc(void *param) {
if (tsMonitor.quiting) {
tsMonitor.state = MON_STATE_NOT_INIT;
+#ifdef _TD_KH_
+ monInfo("monitor thread will quit, for khserver is quiting");
+#else
monInfo("monitor thread will quit, for taosd is quiting");
+#endif
break;
} else {
taosGetDisk();
diff --git a/src/query/CMakeLists.txt b/src/query/CMakeLists.txt
index fd730adee56c3d5edddb943303f5b6b24d9f019c..548bfb3c4a7f2f27700bac55ca325b7469899c13 100644
--- a/src/query/CMakeLists.txt
+++ b/src/query/CMakeLists.txt
@@ -12,10 +12,14 @@ TARGET_LINK_LIBRARIES(query tsdb tutil lua)
IF (TD_LINUX)
TARGET_LINK_LIBRARIES(query m rt lua)
- ADD_SUBDIRECTORY(tests)
+ IF (NOT TD_NINGSI_60)
+ ADD_SUBDIRECTORY(tests)
+ ENDIF ()
ENDIF ()
IF (TD_DARWIN)
TARGET_LINK_LIBRARIES(query m lua)
- ADD_SUBDIRECTORY(tests)
+ IF (NOT TD_NINGSI_60)
+ ADD_SUBDIRECTORY(tests)
+ ENDIF ()
ENDIF ()
diff --git a/src/query/inc/qSqlparser.h b/src/query/inc/qSqlparser.h
index 7385aa9d3afeddb8d16b4187a83a4015f1950263..fe4aff1e452a2cadafd6763ad22193bc499ab07c 100644
--- a/src/query/inc/qSqlparser.h
+++ b/src/query/inc/qSqlparser.h
@@ -285,7 +285,7 @@ void *destroyRelationInfo(SRelationInfo* pFromInfo);
SRelationInfo *addSubqueryElem(SRelationInfo* pRelationInfo, SArray* pSub, SStrToken* pAlias);
// sql expr leaf node
-tSqlExpr *tSqlExprCreateIdValue(SStrToken *pToken, int32_t optrType);
+tSqlExpr *tSqlExprCreateIdValue(SSqlInfo* pInfo, SStrToken *pToken, int32_t optrType);
tSqlExpr *tSqlExprCreateFunction(SArray *pParam, SStrToken *pFuncToken, SStrToken *endToken, int32_t optType);
SArray *tStrTokenAppend(SArray *pList, SStrToken *pToken);
diff --git a/src/query/inc/sql.y b/src/query/inc/sql.y
index a7561874c2f165a179a81e8acfdf15aae8a2f977..086c03141df14c896c96012cc1208966947e1aa1 100644
--- a/src/query/inc/sql.y
+++ b/src/query/inc/sql.y
@@ -529,7 +529,7 @@ selcollist(A) ::= sclp(P) distinct(Z) expr(X) as(Y). {
}
selcollist(A) ::= sclp(P) STAR. {
- tSqlExpr *pNode = tSqlExprCreateIdValue(NULL, TK_ALL);
+ tSqlExpr *pNode = tSqlExprCreateIdValue(pInfo, NULL, TK_ALL);
A = tSqlExprListAppend(P, pNode, 0, 0);
}
@@ -710,23 +710,23 @@ where_opt(A) ::= WHERE expr(X). {A = X;}
expr(A) ::= LP(X) expr(Y) RP(Z). {A = Y; A->exprToken.z = X.z; A->exprToken.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);}
-expr(A) ::= ID(X) DOT STAR(Y). { X.n += (1+Y.n); A = tSqlExprCreateIdValue(&X, TK_ALL);}
-
-expr(A) ::= INTEGER(X). { A = tSqlExprCreateIdValue(&X, TK_INTEGER);}
-expr(A) ::= MINUS(X) INTEGER(Y). { X.n += Y.n; X.type = TK_INTEGER; A = tSqlExprCreateIdValue(&X, TK_INTEGER);}
-expr(A) ::= PLUS(X) INTEGER(Y). { X.n += Y.n; X.type = TK_INTEGER; A = tSqlExprCreateIdValue(&X, TK_INTEGER);}
-expr(A) ::= FLOAT(X). { A = tSqlExprCreateIdValue(&X, TK_FLOAT);}
-expr(A) ::= MINUS(X) FLOAT(Y). { X.n += Y.n; X.type = TK_FLOAT; A = tSqlExprCreateIdValue(&X, TK_FLOAT);}
-expr(A) ::= PLUS(X) FLOAT(Y). { X.n += Y.n; X.type = TK_FLOAT; A = tSqlExprCreateIdValue(&X, TK_FLOAT);}
-expr(A) ::= STRING(X). { A = tSqlExprCreateIdValue(&X, TK_STRING);}
-expr(A) ::= NOW(X). { A = tSqlExprCreateIdValue(&X, TK_NOW); }
-expr(A) ::= VARIABLE(X). { A = tSqlExprCreateIdValue(&X, TK_VARIABLE);}
-expr(A) ::= PLUS(X) VARIABLE(Y). { X.n += Y.n; X.type = TK_VARIABLE; A = tSqlExprCreateIdValue(&X, TK_VARIABLE);}
-expr(A) ::= MINUS(X) VARIABLE(Y). { X.n += Y.n; X.type = TK_VARIABLE; A = tSqlExprCreateIdValue(&X, TK_VARIABLE);}
-expr(A) ::= BOOL(X). { A = tSqlExprCreateIdValue(&X, TK_BOOL);}
-expr(A) ::= NULL(X). { A = tSqlExprCreateIdValue(&X, TK_NULL);}
+expr(A) ::= ID(X). { A = tSqlExprCreateIdValue(pInfo, &X, TK_ID);}
+expr(A) ::= ID(X) DOT ID(Y). { X.n += (1+Y.n); A = tSqlExprCreateIdValue(pInfo, &X, TK_ID);}
+expr(A) ::= ID(X) DOT STAR(Y). { X.n += (1+Y.n); A = tSqlExprCreateIdValue(pInfo, &X, TK_ALL);}
+
+expr(A) ::= INTEGER(X). { A = tSqlExprCreateIdValue(pInfo, &X, TK_INTEGER);}
+expr(A) ::= MINUS(X) INTEGER(Y). { X.n += Y.n; X.type = TK_INTEGER; A = tSqlExprCreateIdValue(pInfo, &X, TK_INTEGER);}
+expr(A) ::= PLUS(X) INTEGER(Y). { X.n += Y.n; X.type = TK_INTEGER; A = tSqlExprCreateIdValue(pInfo, &X, TK_INTEGER);}
+expr(A) ::= FLOAT(X). { A = tSqlExprCreateIdValue(pInfo, &X, TK_FLOAT);}
+expr(A) ::= MINUS(X) FLOAT(Y). { X.n += Y.n; X.type = TK_FLOAT; A = tSqlExprCreateIdValue(pInfo, &X, TK_FLOAT);}
+expr(A) ::= PLUS(X) FLOAT(Y). { X.n += Y.n; X.type = TK_FLOAT; A = tSqlExprCreateIdValue(pInfo, &X, TK_FLOAT);}
+expr(A) ::= STRING(X). { A = tSqlExprCreateIdValue(pInfo, &X, TK_STRING);}
+expr(A) ::= NOW(X). { A = tSqlExprCreateIdValue(pInfo, &X, TK_NOW); }
+expr(A) ::= VARIABLE(X). { A = tSqlExprCreateIdValue(pInfo, &X, TK_VARIABLE);}
+expr(A) ::= PLUS(X) VARIABLE(Y). { X.n += Y.n; X.type = TK_VARIABLE; A = tSqlExprCreateIdValue(pInfo, &X, TK_VARIABLE);}
+expr(A) ::= MINUS(X) VARIABLE(Y). { X.n += Y.n; X.type = TK_VARIABLE; A = tSqlExprCreateIdValue(pInfo, &X, TK_VARIABLE);}
+expr(A) ::= BOOL(X). { A = tSqlExprCreateIdValue(pInfo, &X, TK_BOOL);}
+expr(A) ::= NULL(X). { A = tSqlExprCreateIdValue(pInfo, &X, TK_NULL);}
// ordinary functions: min(x), max(x), top(k, 20)
expr(A) ::= ID(X) LP exprlist(Y) RP(E). { tStrTokenAppend(pInfo->funcs, &X); A = tSqlExprCreateFunction(Y, &X, &E, X.type); }
diff --git a/src/query/src/qAggMain.c b/src/query/src/qAggMain.c
index b7d64d63e9bfbacd34e59c42b33cc6c240442062..e849ca6726309277511220906083a8214efe29fa 100644
--- a/src/query/src/qAggMain.c
+++ b/src/query/src/qAggMain.c
@@ -895,14 +895,14 @@ static void minMax_function(SQLFunctionCtx *pCtx, char *pOutput, int32_t isMin,
}
void* tval = NULL;
- int16_t index = 0;
+ int16_t qry_index = 0;
if (isMin) {
tval = &pCtx->preAggVals.statis.min;
- index = pCtx->preAggVals.statis.minIndex;
+ qry_index = pCtx->preAggVals.statis.minIndex;
} else {
tval = &pCtx->preAggVals.statis.max;
- index = pCtx->preAggVals.statis.maxIndex;
+ qry_index = pCtx->preAggVals.statis.maxIndex;
}
TSKEY key = TSKEY_INITIAL_VAL;
@@ -913,12 +913,12 @@ static void minMax_function(SQLFunctionCtx *pCtx, char *pOutput, int32_t isMin,
*
* The following codes of 3 lines will be removed later.
*/
-// if (index < 0 || index >= pCtx->size + pCtx->startOffset) {
-// index = 0;
+// if (qry_index < 0 || qry_index >= pCtx->size + pCtx->startOffset) {
+// qry_index = 0;
// }
// the index is the original position, not the relative position
- key = pCtx->ptsList[index];
+ key = pCtx->ptsList[qry_index];
}
if (IS_SIGNED_NUMERIC_TYPE(pCtx->inputType)) {
@@ -1554,15 +1554,15 @@ static void first_function(SQLFunctionCtx *pCtx) {
SET_VAL(pCtx, notNullElems, 1);
}
-static void first_data_assign_impl(SQLFunctionCtx *pCtx, char *pData, int32_t index) {
+static void first_data_assign_impl(SQLFunctionCtx *pCtx, char *pData, int32_t qry_index) {
int64_t *timestamp = GET_TS_LIST(pCtx);
SFirstLastInfo *pInfo = (SFirstLastInfo *)(pCtx->pOutput + pCtx->inputBytes);
- if (pInfo->hasResult != DATA_SET_FLAG || timestamp[index] < pInfo->ts) {
+ if (pInfo->hasResult != DATA_SET_FLAG || timestamp[qry_index] < pInfo->ts) {
memcpy(pCtx->pOutput, pData, pCtx->inputBytes);
pInfo->hasResult = DATA_SET_FLAG;
- pInfo->ts = timestamp[index];
+ pInfo->ts = timestamp[qry_index];
DO_UPDATE_TAG_COLUMNS(pCtx, pInfo->ts);
}
@@ -1685,19 +1685,19 @@ static void last_function(SQLFunctionCtx *pCtx) {
SET_VAL(pCtx, notNullElems, 1);
}
-static void last_data_assign_impl(SQLFunctionCtx *pCtx, char *pData, int32_t index) {
+static void last_data_assign_impl(SQLFunctionCtx *pCtx, char *pData, int32_t qry_index) {
int64_t *timestamp = GET_TS_LIST(pCtx);
SFirstLastInfo *pInfo = (SFirstLastInfo *)(pCtx->pOutput + pCtx->inputBytes);
- if (pInfo->hasResult != DATA_SET_FLAG || pInfo->ts < timestamp[index]) {
+ if (pInfo->hasResult != DATA_SET_FLAG || pInfo->ts < timestamp[qry_index]) {
#if defined(_DEBUG_VIEW)
qDebug("assign index:%d, ts:%" PRId64 ", val:%d, ", index, timestamp[index], *(int32_t *)pData);
#endif
memcpy(pCtx->pOutput, pData, pCtx->inputBytes);
pInfo->hasResult = DATA_SET_FLAG;
- pInfo->ts = timestamp[index];
+ pInfo->ts = timestamp[qry_index];
DO_UPDATE_TAG_COLUMNS(pCtx, pInfo->ts);
}
@@ -2562,12 +2562,12 @@ static bool leastsquares_function_setup(SQLFunctionCtx *pCtx, SResultRowCellInfo
return true;
}
-#define LEASTSQR_CAL(p, x, y, index, step) \
+#define LEASTSQR_CAL(p, x, y, qry_index, step) \
do { \
(p)[0][0] += (double)(x) * (x); \
(p)[0][1] += (double)(x); \
- (p)[0][2] += (double)(x) * (y)[index]; \
- (p)[1][2] += (y)[index]; \
+ (p)[0][2] += (double)(x) * (y)[qry_index]; \
+ (p)[1][2] += (y)[qry_index]; \
(x) += step; \
} while (0)
@@ -2992,7 +2992,7 @@ static void deriv_function(SQLFunctionCtx *pCtx) {
} else { \
*(type *)(ctx)->pOutput = *(type *)(d) - (*(type *)(&(ctx)->param[1].i64)); \
*(type *)(&(ctx)->param[1].i64) = *(type *)(d); \
- *(int64_t *)(ctx)->ptsOutputBuf = GET_TS_DATA(ctx, index); \
+ *(int64_t *)(ctx)->ptsOutputBuf = GET_TS_DATA(ctx, qry_index); \
} \
} while (0);
@@ -3164,16 +3164,16 @@ static void diff_function(SQLFunctionCtx *pCtx) {
char *getArithColumnData(void *param, const char* name, int32_t colId) {
SArithmeticSupport *pSupport = (SArithmeticSupport *)param;
- int32_t index = -1;
+ int32_t qry_index = -1;
for (int32_t i = 0; i < pSupport->numOfCols; ++i) {
if (colId == pSupport->colList[i].colId) {
- index = i;
+ qry_index = i;
break;
}
}
- assert(index >= 0);
- return pSupport->data[index] + pSupport->offset * pSupport->colList[index].bytes;
+ assert(qry_index >= 0);
+ return pSupport->data[qry_index] + pSupport->offset * pSupport->colList[qry_index].bytes;
}
static void arithmetic_function(SQLFunctionCtx *pCtx) {
@@ -3381,14 +3381,14 @@ static double twa_get_area(SPoint1 s, SPoint1 e) {
return val;
}
-static int32_t twa_function_impl(SQLFunctionCtx* pCtx, int32_t index, int32_t size) {
+static int32_t twa_function_impl(SQLFunctionCtx* pCtx, int32_t qry_index, int32_t size) {
int32_t notNullElems = 0;
SResultRowCellInfo *pResInfo = GET_RES_INFO(pCtx);
STwaInfo *pInfo = GET_ROWCELL_INTERBUF(pResInfo);
TSKEY *tsList = GET_TS_LIST(pCtx);
- int32_t i = index;
+ int32_t i = qry_index;
int32_t step = GET_FORWARD_DIRECTION_FACTOR(pCtx->order);
SPoint1* last = &pInfo->p;
@@ -3399,7 +3399,7 @@ static int32_t twa_function_impl(SQLFunctionCtx* pCtx, int32_t index, int32_t si
assert(last->key == INT64_MIN);
last->key = tsList[i];
- GET_TYPED_DATA(last->val, double, pCtx->inputType, GET_INPUT_DATA(pCtx, index));
+ GET_TYPED_DATA(last->val, double, pCtx->inputType, GET_INPUT_DATA(pCtx, qry_index));
pInfo->dOutput += twa_get_area(pCtx->start, *last);
@@ -3409,7 +3409,7 @@ static int32_t twa_function_impl(SQLFunctionCtx* pCtx, int32_t index, int32_t si
i += step;
} else if (pInfo->p.key == INT64_MIN) {
last->key = tsList[i];
- GET_TYPED_DATA(last->val, double, pCtx->inputType, GET_INPUT_DATA(pCtx, index));
+ GET_TYPED_DATA(last->val, double, pCtx->inputType, GET_INPUT_DATA(pCtx, qry_index));
pInfo->hasResult = DATA_SET_FLAG;
pInfo->win.skey = last->key;
@@ -4246,7 +4246,7 @@ void generateBlockDistResult(STableBlockDist *pTableBlockDist, char* result) {
"5th=[%d], 10th=[%d], 20th=[%d], 30th=[%d], 40th=[%d], 50th=[%d]\n\t "
"60th=[%d], 70th=[%d], 80th=[%d], 90th=[%d], 95th=[%d], 99th=[%d]\n\t "
"Min=[%"PRId64"(Rows)] Max=[%"PRId64"(Rows)] Avg=[%"PRId64"(Rows)] Stddev=[%.2f] \n\t "
- "Rows=[%"PRIu64"], Blocks=[%"PRId64"], SmallBlocks=[%d], Size=[%.3f(Kb)] Comp=[%.2f]\n\t "
+ "Rows=[%"PRIu64"], Blocks=[%"PRId64"], SmallBlocks=[%d], Size=[%.3f(Kb)] Comp=[%.5g]\n\t "
"RowsInMem=[%d] \n\t",
percentiles[0], percentiles[1], percentiles[2], percentiles[3], percentiles[4], percentiles[5],
percentiles[6], percentiles[7], percentiles[8], percentiles[9], percentiles[10], percentiles[11],
diff --git a/src/query/src/qExecutor.c b/src/query/src/qExecutor.c
index 237d52b19eb8aadd625a47924f5670f024cac887..4d38cf149d61e877485448fbd482d303afa69832 100644
--- a/src/query/src/qExecutor.c
+++ b/src/query/src/qExecutor.c
@@ -478,8 +478,8 @@ static bool chkResultRowFromKey(SQueryRuntimeEnv *pRuntimeEnv, SResultRowInfo *p
existed = (pResultRowInfo->pResult[0] == (*p1));
} else { // check if current pResultRowInfo contains the existed pResultRow
SET_RES_EXT_WINDOW_KEY(pRuntimeEnv->keyBuf, pData, bytes, uid, pResultRowInfo);
- int64_t* index = taosHashGet(pRuntimeEnv->pResultRowListSet, pRuntimeEnv->keyBuf, GET_RES_EXT_WINDOW_KEY_LEN(bytes));
- if (index != NULL) {
+ int64_t* qry_index = taosHashGet(pRuntimeEnv->pResultRowListSet, pRuntimeEnv->keyBuf, GET_RES_EXT_WINDOW_KEY_LEN(bytes));
+ if (qry_index != NULL) {
existed = true;
} else {
existed = false;
@@ -517,9 +517,9 @@ static SResultRow* doSetResultOutBufByKey(SQueryRuntimeEnv* pRuntimeEnv, SResult
pResultRowInfo->curPos = 0;
} else { // check if current pResultRowInfo contains the existed pResultRow
SET_RES_EXT_WINDOW_KEY(pRuntimeEnv->keyBuf, pData, bytes, tid, pResultRowInfo);
- int64_t* index = taosHashGet(pRuntimeEnv->pResultRowListSet, pRuntimeEnv->keyBuf, GET_RES_EXT_WINDOW_KEY_LEN(bytes));
- if (index != NULL) {
- pResultRowInfo->curPos = (int32_t) *index;
+ int64_t* qry_index = taosHashGet(pRuntimeEnv->pResultRowListSet, pRuntimeEnv->keyBuf, GET_RES_EXT_WINDOW_KEY_LEN(bytes));
+ if (qry_index != NULL) {
+ pResultRowInfo->curPos = (int32_t) *qry_index;
existed = true;
} else {
existed = false;
@@ -555,9 +555,9 @@ static SResultRow* doSetResultOutBufByKey(SQueryRuntimeEnv* pRuntimeEnv, SResult
pResultRowInfo->curPos = pResultRowInfo->size;
pResultRowInfo->pResult[pResultRowInfo->size++] = pResult;
- int64_t index = pResultRowInfo->curPos;
+ int64_t qry_index = pResultRowInfo->curPos;
SET_RES_EXT_WINDOW_KEY(pRuntimeEnv->keyBuf, pData, bytes, tid, pResultRowInfo);
- taosHashPut(pRuntimeEnv->pResultRowListSet, pRuntimeEnv->keyBuf, GET_RES_EXT_WINDOW_KEY_LEN(bytes), &index, POINTER_BYTES);
+ taosHashPut(pRuntimeEnv->pResultRowListSet, pRuntimeEnv->keyBuf, GET_RES_EXT_WINDOW_KEY_LEN(bytes), &qry_index, POINTER_BYTES);
}
// too many time window in query
@@ -1166,8 +1166,8 @@ static TSKEY getStartTsKey(SQueryAttr* pQueryAttr, STimeWindow* win, const TSKEY
static void setArithParams(SArithmeticSupport* sas, SExprInfo *pExprInfo, SSDataBlock* pSDataBlock) {
sas->numOfCols = (int32_t) pSDataBlock->info.numOfCols;
sas->pExprInfo = pExprInfo;
- if (sas->colList != NULL) {
- return;
+ if (sas->colList) {
+ free(sas->colList); // free pre malloc memory
}
sas->colList = calloc(1, pSDataBlock->info.numOfCols*sizeof(SColumnInfo));
for(int32_t i = 0; i < sas->numOfCols; ++i) {
@@ -1175,6 +1175,9 @@ static void setArithParams(SArithmeticSupport* sas, SExprInfo *pExprInfo, SSData
sas->colList[i] = pColData->info;
}
+ if(sas->data) {
+ free(sas->data); // free pre malloc memory
+ }
sas->data = calloc(sas->numOfCols, POINTER_BYTES);
// set the input column data
@@ -1320,14 +1323,14 @@ void doTimeWindowInterpolation(SOperatorInfo* pOperator, SOptrBasicInfo* pInfo,
}
SColIndex * pColIndex = &pExpr[k].base.colInfo;
- int16_t index = pColIndex->colIndex;
- SColumnInfoData *pColInfo = taosArrayGet(pDataBlock, index);
+ int16_t qry_index = pColIndex->colIndex;
+ SColumnInfoData *pColInfo = taosArrayGet(pDataBlock, qry_index);
assert(pColInfo->info.colId == pColIndex->colId && curTs != windowKey);
double v1 = 0, v2 = 0, v = 0;
if (prevRowIndex == -1) {
- GET_TYPED_DATA(v1, double, pColInfo->info.type, (char *)pRuntimeEnv->prevRow[index]);
+ GET_TYPED_DATA(v1, double, pColInfo->info.type, (char *)pRuntimeEnv->prevRow[qry_index]);
} else {
GET_TYPED_DATA(v1, double, pColInfo->info.type, (char *)pColInfo->pData + prevRowIndex * pColInfo->info.bytes);
}
@@ -1344,7 +1347,7 @@ void doTimeWindowInterpolation(SOperatorInfo* pOperator, SOptrBasicInfo* pInfo,
if (pColInfo->info.type == TSDB_DATA_TYPE_BINARY || pColInfo->info.type == TSDB_DATA_TYPE_NCHAR) {
if (prevRowIndex == -1) {
- pCtx[k].start.ptr = (char *)pRuntimeEnv->prevRow[index];
+ pCtx[k].start.ptr = (char *)pRuntimeEnv->prevRow[qry_index];
} else {
pCtx[k].start.ptr = (char *)pColInfo->pData + prevRowIndex * pColInfo->info.bytes;
}
@@ -1710,9 +1713,6 @@ static void doHashGroupbyAgg(SOperatorInfo* pOperator, SGroupbyOperatorInfo *pIn
int32_t num = 0;
for (int32_t j = 0; j < pSDataBlock->info.rows; ++j) {
char* val = ((char*)pColInfoData->pData) + bytes * j;
- if (isNull(val, type)) {
- continue;
- }
// Compare with the previous row of this column, and do not set the output buffer again if they are identical.
if (pInfo->prevData == NULL) {
@@ -2779,16 +2779,16 @@ static bool doFilterByBlockStatistics(SQueryRuntimeEnv* pRuntimeEnv, SDataStatis
for (int32_t k = 0; k < pQueryAttr->numOfFilterCols; ++k) {
SSingleColumnFilterInfo *pFilterInfo = &pQueryAttr->pFilterInfo[k];
- int32_t index = -1;
+ int32_t qry_index = -1;
for(int32_t i = 0; i < pQueryAttr->numOfCols; ++i) {
if (pDataStatis[i].colId == pFilterInfo->info.colId) {
- index = i;
+ qry_index = i;
break;
}
}
// no statistics data, load the true data block
- if (index == -1) {
+ if (qry_index == -1) {
return true;
}
@@ -2798,7 +2798,7 @@ static bool doFilterByBlockStatistics(SQueryRuntimeEnv* pRuntimeEnv, SDataStatis
}
// all data in current column are NULL, no need to check its boundary value
- if (pDataStatis[index].numOfNull == numOfRows) {
+ if (pDataStatis[qry_index].numOfNull == numOfRows) {
// if isNULL query exists, load the null data column
for (int32_t j = 0; j < pFilterInfo->numOfFilters; ++j) {
@@ -2811,7 +2811,7 @@ static bool doFilterByBlockStatistics(SQueryRuntimeEnv* pRuntimeEnv, SDataStatis
continue;
}
- SDataStatis* pDataBlockst = &pDataStatis[index];
+ SDataStatis* pDataBlockst = &pDataStatis[qry_index];
if (pFilterInfo->info.type == TSDB_DATA_TYPE_FLOAT) {
float minval = (float)(*(double *)(&pDataBlockst->min));
@@ -4593,10 +4593,10 @@ void queryCostStatis(SQInfo *pQInfo) {
// TSKEY key = pTableQueryInfo->win.skey;
//
// pWindowResInfo->prevSKey = tw.skey;
-// int32_t index = pRuntimeEnv->resultRowInfo.curIndex;
+// int32_t qry_index = pRuntimeEnv->resultRowInfo.curIndex;
//
// int32_t numOfRes = tableApplyFunctionsOnBlock(pRuntimeEnv, pBlockInfo, NULL, binarySearchForKey, pDataBlock);
-// pRuntimeEnv->resultRowInfo.curIndex = index; // restore the window index
+// pRuntimeEnv->resultRowInfo.curIndex = qry_index; // restore the window index
//
// qDebug("QInfo:0x%"PRIx64" check data block, brange:%" PRId64 "-%" PRId64 ", numOfRows:%d, numOfRes:%d, lastKey:%" PRId64,
// GET_QID(pRuntimeEnv), pBlockInfo->window.skey, pBlockInfo->window.ekey, pBlockInfo->rows, numOfRes,
@@ -5325,15 +5325,15 @@ SArray* getOrderCheckColumns(SQueryAttr* pQuery) {
{
numOfCols = (int32_t) taosArrayGetSize(pOrderColumns);
for(int32_t i = 0; i < numOfCols; ++i) {
- SColIndex* index = taosArrayGet(pOrderColumns, i);
+ SColIndex* qry_index = taosArrayGet(pOrderColumns, i);
for(int32_t j = 0; j < pQuery->numOfOutput; ++j) {
SSqlExpr* pExpr = &pQuery->pExpr1[j].base;
int32_t functionId = pExpr->functionId;
- if (index->colId == pExpr->colInfo.colId &&
+ if (qry_index->colId == pExpr->colInfo.colId &&
(functionId == TSDB_FUNC_PRJ || functionId == TSDB_FUNC_TAG || functionId == TSDB_FUNC_TS)) {
- index->colIndex = j;
- index->colId = pExpr->resColId;
+ qry_index->colIndex = j;
+ qry_index->colId = pExpr->resColId;
}
}
}
@@ -5353,24 +5353,24 @@ SArray* getResultGroupCheckColumns(SQueryAttr* pQuery) {
}
for(int32_t i = 0; i < numOfCols; ++i) {
- SColIndex* index = taosArrayGet(pOrderColumns, i);
+ SColIndex* qry_index = taosArrayGet(pOrderColumns, i);
bool found = false;
for(int32_t j = 0; j < pQuery->numOfOutput; ++j) {
SSqlExpr* pExpr = &pQuery->pExpr1[j].base;
// TSDB_FUNC_TAG_DUMMY function needs to be ignored
- if (index->colId == pExpr->colInfo.colId &&
+ if (qry_index->colId == pExpr->colInfo.colId &&
((TSDB_COL_IS_TAG(pExpr->colInfo.flag) && ((pExpr->functionId == TSDB_FUNC_TAG) || (pExpr->functionId == TSDB_FUNC_TAGPRJ))) ||
(TSDB_COL_IS_NORMAL_COL(pExpr->colInfo.flag) && pExpr->functionId == TSDB_FUNC_PRJ))) {
- index->colIndex = j;
- index->colId = pExpr->resColId;
+ qry_index->colIndex = j;
+ qry_index->colId = pExpr->resColId;
found = true;
break;
}
}
- assert(found && index->colIndex >= 0 && index->colIndex < pQuery->numOfOutput);
+ assert(found && qry_index->colIndex >= 0 && qry_index->colIndex < pQuery->numOfOutput);
}
return pOrderColumns;
@@ -5423,8 +5423,8 @@ SOperatorInfo* createGlobalAggregateOperatorInfo(SQueryRuntimeEnv* pRuntimeEnv,
for(int32_t i = 0; i < numOfCols; ++i) {
pInfo->prevRow[i] = (char*)pInfo->prevRow + offset;
- SColIndex* index = taosArrayGet(pInfo->orderColumnList, i);
- offset += pExpr[index->colIndex].base.resBytes;
+ SColIndex* qry_index = taosArrayGet(pInfo->orderColumnList, i);
+ offset += pExpr[qry_index->colIndex].base.resBytes;
}
numOfCols = (pInfo->groupColumnList != NULL)? (int32_t)taosArrayGetSize(pInfo->groupColumnList):0;
@@ -5434,8 +5434,8 @@ SOperatorInfo* createGlobalAggregateOperatorInfo(SQueryRuntimeEnv* pRuntimeEnv,
for(int32_t i = 0; i < numOfCols; ++i) {
pInfo->currentGroupColData[i] = (char*)pInfo->currentGroupColData + offset;
- SColIndex* index = taosArrayGet(pInfo->groupColumnList, i);
- offset += pExpr[index->colIndex].base.resBytes;
+ SColIndex* qry_index = taosArrayGet(pInfo->groupColumnList, i);
+ offset += pExpr[qry_index->colIndex].base.resBytes;
}
initResultRowInfo(&pInfo->binfo.resultRowInfo, 8, TSDB_DATA_TYPE_INT);
@@ -5482,8 +5482,8 @@ SOperatorInfo *createMultiwaySortOperatorInfo(SQueryRuntimeEnv *pRuntimeEnv, SEx
for(int32_t i = 0; i < numOfCols; ++i) {
pInfo->prevRow[i] = (char*)pInfo->prevRow + offset;
- SColIndex* index = taosArrayGet(pInfo->orderColumnList, i);
- offset += pExpr[index->colIndex].base.colBytes;
+ SColIndex* qry_index = taosArrayGet(pInfo->orderColumnList, i);
+ offset += pExpr[qry_index->colIndex].base.colBytes;
}
}
@@ -5777,6 +5777,11 @@ static SSDataBlock* doProjectOperation(void* param, bool* newgroup) {
}
}
+ if (pOperator->status == OP_EXEC_DONE) {
+ *newgroup = false;
+ return NULL;
+ }
+
while(1) {
bool prevVal = *newgroup;
@@ -5789,7 +5794,7 @@ static SSDataBlock* doProjectOperation(void* param, bool* newgroup) {
//assert(*newgroup == false);
*newgroup = prevVal;
- setQueryStatus(pRuntimeEnv, QUERY_COMPLETED);
+ doSetOperatorCompleted(pOperator);
break;
}
@@ -7025,8 +7030,8 @@ SOperatorInfo* createSLimitOperatorInfo(SQueryRuntimeEnv* pRuntimeEnv, SOperator
for(int32_t i = 0; i < numOfCols; ++i) {
pInfo->prevRow[i] = (char*)pInfo->prevRow + offset;
- SColIndex* index = taosArrayGet(pInfo->orderColumnList, i);
- offset += pExpr[index->colIndex].base.resBytes;
+ SColIndex* qry_index = taosArrayGet(pInfo->orderColumnList, i);
+ offset += pExpr[qry_index->colIndex].base.resBytes;
}
pInfo->pRes = createOutputBuf(pExpr, numOfOutput, pRuntimeEnv->resultInfo.capacity);
@@ -8206,11 +8211,11 @@ int32_t createIndirectQueryFuncExprFromMsg(SQueryTableMsg* pQueryMsg, int32_t nu
type = TSDB_DATA_TYPE_DOUBLE;
bytes = tDataTypes[type].bytes;
} else {
- int32_t index = pExprs[i].base.colInfo.colIndex;
- assert(prevExpr[index].base.resColId == pExprs[i].base.colInfo.colId);
+ int32_t qry_index = pExprs[i].base.colInfo.colIndex;
+ assert(prevExpr[qry_index].base.resColId == pExprs[i].base.colInfo.colId);
- type = prevExpr[index].base.resType;
- bytes = prevExpr[index].base.resBytes;
+ type = prevExpr[qry_index].base.resType;
+ bytes = prevExpr[qry_index].base.resBytes;
}
int32_t param = (int32_t)pExprs[i].base.param[0].i64;
@@ -8541,7 +8546,7 @@ SQInfo* createQInfoImpl(SQueryTableMsg* pQueryMsg, SGroupbyExpr* pGroupbyExpr, S
SQueryRuntimeEnv* pRuntimeEnv = &pQInfo->runtimeEnv;
STimeWindow window = pQueryAttr->window;
- int32_t index = 0;
+ int32_t qry_index = 0;
for(int32_t i = 0; i < numOfGroups; ++i) {
SArray* pa = taosArrayGetP(pQueryAttr->tableGroupInfo.pGroupList, i);
@@ -8557,7 +8562,7 @@ SQInfo* createQInfoImpl(SQueryTableMsg* pQueryMsg, SGroupbyExpr* pGroupbyExpr, S
STableKeyInfo* info = taosArrayGet(pa, j);
window.skey = info->lastKey;
- void* buf = (char*) pQInfo->pBuf + index * sizeof(STableQueryInfo);
+ void* buf = (char*) pQInfo->pBuf + qry_index * sizeof(STableQueryInfo);
STableQueryInfo* item = createTableQueryInfo(pQueryAttr, info->pTable, pQueryAttr->groupbyColumn, window, buf);
if (item == NULL) {
goto _cleanup;
@@ -8568,7 +8573,7 @@ SQInfo* createQInfoImpl(SQueryTableMsg* pQueryMsg, SGroupbyExpr* pGroupbyExpr, S
STableId* id = TSDB_TABLEID(info->pTable);
taosHashPut(pRuntimeEnv->tableqinfoGroupInfo.map, &id->tid, sizeof(id->tid), &item, POINTER_BYTES);
- index += 1;
+ qry_index += 1;
}
}
diff --git a/src/query/src/qExtbuffer.c b/src/query/src/qExtbuffer.c
index 5152d172649eb91c20ce09c0bf369a5cc3c8de43..87c1d89e1e523bcbfde521a5226f789ffcd465c7 100644
--- a/src/query/src/qExtbuffer.c
+++ b/src/query/src/qExtbuffer.c
@@ -448,9 +448,9 @@ int32_t compare_a(tOrderDescriptor *pDescriptor, int32_t numOfRows1, int32_t s1,
int32_t compare_aRv(SSDataBlock* pBlock, SArray* colIndex, int32_t numOfCols, int32_t rowIndex, char** buffer, int32_t order) {
for (int32_t i = 0; i < numOfCols; ++i) {
SColIndex* pColIndex = taosArrayGet(colIndex, i);
- int32_t index = pColIndex->colIndex;
+ int32_t qry_index = pColIndex->colIndex;
- SColumnInfoData* pColInfo = taosArrayGet(pBlock->pDataBlock, index);
+ SColumnInfoData* pColInfo = taosArrayGet(pBlock->pDataBlock, qry_index);
assert(pColIndex->colId == pColInfo->info.colId);
char* data = pColInfo->pData + rowIndex * pColInfo->info.bytes;
@@ -1022,14 +1022,14 @@ void tColModelCompact(SColumnModel *pModel, tFilePage *inputBuffer, int32_t maxE
}
}
-SSchema* getColumnModelSchema(SColumnModel *pColumnModel, int32_t index) {
- assert(pColumnModel != NULL && index >= 0 && index < pColumnModel->numOfCols);
- return &pColumnModel->pFields[index].field;
+SSchema* getColumnModelSchema(SColumnModel *pColumnModel, int32_t qry_index) {
+ assert(pColumnModel != NULL && qry_index >= 0 && qry_index < pColumnModel->numOfCols);
+ return &pColumnModel->pFields[qry_index].field;
}
-int16_t getColumnModelOffset(SColumnModel *pColumnModel, int32_t index) {
- assert(pColumnModel != NULL && index >= 0 && index < pColumnModel->numOfCols);
- return pColumnModel->pFields[index].offset;
+int16_t getColumnModelOffset(SColumnModel *pColumnModel, int32_t qry_index) {
+ assert(pColumnModel != NULL && qry_index >= 0 && qry_index < pColumnModel->numOfCols);
+ return pColumnModel->pFields[qry_index].offset;
}
void tColModelErase(SColumnModel *pModel, tFilePage *inputBuffer, int32_t blockCapacity, int32_t s, int32_t e) {
@@ -1103,17 +1103,17 @@ void tOrderDescDestroy(tOrderDescriptor *pDesc) {
tfree(pDesc);
}
-void taoscQSort(void** pCols, SSchema* pSchema, int32_t numOfCols, int32_t numOfRows, int32_t index, __compar_fn_t compareFn) {
- assert(numOfRows > 0 && numOfCols > 0 && index >= 0 && index < numOfCols);
+void taoscQSort(void** pCols, SSchema* pSchema, int32_t numOfCols, int32_t numOfRows, int32_t qry_index, __compar_fn_t compareFn) {
+ assert(numOfRows > 0 && numOfCols > 0 && qry_index >= 0 && qry_index < numOfCols);
- int32_t bytes = pSchema[index].bytes;
+ int32_t bytes = pSchema[qry_index].bytes;
int32_t size = bytes + sizeof(int32_t);
char* buf = calloc(1, size * numOfRows);
for(int32_t i = 0; i < numOfRows; ++i) {
char* dest = buf + size * i;
- memcpy(dest, ((char*) pCols[index]) + bytes * i, bytes);
+ memcpy(dest, ((char*) pCols[qry_index]) + bytes * i, bytes);
*(int32_t*)(dest+bytes) = i;
}
@@ -1125,7 +1125,7 @@ void taoscQSort(void** pCols, SSchema* pSchema, int32_t numOfCols, int32_t numOf
for(int32_t i = 0; i < numOfCols; ++i) {
int32_t bytes1 = pSchema[i].bytes;
- if (i == index) {
+ if (i == qry_index) {
for(int32_t j = 0; j < numOfRows; ++j){
char* src = buf + (j * size);
char* dest = ((char*)pCols[i]) + (j * bytes1);
diff --git a/src/query/src/qFill.c b/src/query/src/qFill.c
index 144ca4dd794975a161d85c68e8058e3ca105d9c8..aee2d26b155cf5cdb3f62d6f6aba09318c611df1 100644
--- a/src/query/src/qFill.c
+++ b/src/query/src/qFill.c
@@ -63,8 +63,8 @@ static void doFillOneRowResult(SFillInfo* pFillInfo, void** data, char** srcData
int32_t step = GET_FORWARD_DIRECTION_FACTOR(pFillInfo->order);
// set the primary timestamp column value
- int32_t index = pFillInfo->numOfCurrent;
- char* val = elePtrAt(data[0], TSDB_KEYSIZE, index);
+ int32_t qry_index = pFillInfo->numOfCurrent;
+ char* val = elePtrAt(data[0], TSDB_KEYSIZE, qry_index);
*(TSKEY*) val = pFillInfo->currentKey;
// set the other values
@@ -78,11 +78,11 @@ static void doFillOneRowResult(SFillInfo* pFillInfo, void** data, char** srcData
continue;
}
- char* output = elePtrAt(data[i], pCol->col.bytes, index);
+ char* output = elePtrAt(data[i], pCol->col.bytes, qry_index);
assignVal(output, p + pCol->col.offset, pCol->col.bytes, pCol->col.type);
}
} else { // no prev value yet, set the value for NULL
- setNullValueForRow(pFillInfo, data, pFillInfo->numOfCols, index);
+ setNullValueForRow(pFillInfo, data, pFillInfo->numOfCols, qry_index);
}
} else if (pFillInfo->type == TSDB_FILL_NEXT) {
char* p = FILL_IS_ASC_FILL(pFillInfo)? next : prev;
@@ -94,11 +94,11 @@ static void doFillOneRowResult(SFillInfo* pFillInfo, void** data, char** srcData
continue;
}
- char* output = elePtrAt(data[i], pCol->col.bytes, index);
+ char* output = elePtrAt(data[i], pCol->col.bytes, qry_index);
assignVal(output, p + pCol->col.offset, pCol->col.bytes, pCol->col.type);
}
} else { // no prev value yet, set the value for NULL
- setNullValueForRow(pFillInfo, data, pFillInfo->numOfCols, index);
+ setNullValueForRow(pFillInfo, data, pFillInfo->numOfCols, qry_index);
}
} else if (pFillInfo->type == TSDB_FILL_LINEAR) {
// TODO : linear interpolation supports NULL value
@@ -112,7 +112,7 @@ static void doFillOneRowResult(SFillInfo* pFillInfo, void** data, char** srcData
int16_t type = pCol->col.type;
int16_t bytes = pCol->col.bytes;
- char *val1 = elePtrAt(data[i], pCol->col.bytes, index);
+ char *val1 = elePtrAt(data[i], pCol->col.bytes, qry_index);
if (type == TSDB_DATA_TYPE_BINARY|| type == TSDB_DATA_TYPE_NCHAR || type == TSDB_DATA_TYPE_BOOL) {
setNull(val1, pCol->col.type, bytes);
continue;
@@ -124,7 +124,7 @@ static void doFillOneRowResult(SFillInfo* pFillInfo, void** data, char** srcData
taosGetLinearInterpolationVal(&point, type, &point1, &point2, type);
}
} else {
- setNullValueForRow(pFillInfo, data, pFillInfo->numOfCols, index);
+ setNullValueForRow(pFillInfo, data, pFillInfo->numOfCols, qry_index);
}
} else { // fill the default value */
for (int32_t i = 1; i < pFillInfo->numOfCols; ++i) {
@@ -133,12 +133,12 @@ static void doFillOneRowResult(SFillInfo* pFillInfo, void** data, char** srcData
continue;
}
- char* val1 = elePtrAt(data[i], pCol->col.bytes, index);
+ char* val1 = elePtrAt(data[i], pCol->col.bytes, qry_index);
assignVal(val1, (char*)&pCol->fillVal.i, pCol->col.bytes, pCol->col.type);
}
}
- setTagsValue(pFillInfo, data, index);
+ setTagsValue(pFillInfo, data, qry_index);
pFillInfo->currentKey = taosTimeAdd(pFillInfo->currentKey, pFillInfo->interval.sliding * step, pFillInfo->interval.slidingUnit, pFillInfo->precision);
pFillInfo->numOfCurrent++;
}
@@ -301,11 +301,11 @@ static int32_t setTagColumnInfo(SFillInfo* pFillInfo, int32_t numOfCols, int32_t
numOfTags += 1;
bool exists = false;
- int32_t index = -1;
+ int32_t qry_index = -1;
for (int32_t j = 0; j < k; ++j) {
if (pFillInfo->pTags[j].col.colId == pColInfo->col.colId) {
exists = true;
- index = j;
+ qry_index = j;
break;
}
}
@@ -321,7 +321,7 @@ static int32_t setTagColumnInfo(SFillInfo* pFillInfo, int32_t numOfCols, int32_t
k += 1;
} else {
- pColInfo->tagIndex = index;
+ pColInfo->tagIndex = qry_index;
}
}
diff --git a/src/query/src/qHistogram.c b/src/query/src/qHistogram.c
index 8544224a647c0497677814ef448498bbf73fab04..aa8acccd5fe5c30b9771b333ca48a037ac9e6cbc 100644
--- a/src/query/src/qHistogram.c
+++ b/src/query/src/qHistogram.c
@@ -45,15 +45,15 @@
//}
//
////min heap
-// void tHeapAdjust(SHeapEntry* pEntry, int32_t index, int32_t len) {
+// void tHeapAdjust(SHeapEntry* pEntry, int32_t qry_index, int32_t len) {
// SHeapEntry* ptr = NULL;
//
// int32_t end = len - 1;
//
-// SHeapEntry p1 = pEntry[index];
-// int32_t next = index;
+// SHeapEntry p1 = pEntry[qry_index];
+// int32_t next = qry_index;
//
-// for(int32_t i=index; i<=(end-1)/2; ) {
+// for(int32_t i=qry_index; i<=(end-1)/2; ) {
// int32_t lc = (i<<1) + 1;
// int32_t rc = (i+1) << 1;
//
@@ -119,7 +119,7 @@
// }
//}
-static int32_t histogramCreateBin(SHistogramInfo* pHisto, int32_t index, double val);
+static int32_t histogramCreateBin(SHistogramInfo* pHisto, int32_t qry_index, double val);
SHistogramInfo* tHistogramCreate(int32_t numOfEntries) {
/* need one redundant slot */
@@ -390,39 +390,39 @@ static void histogramMergeImpl(SHistBin* pHistBin, int32_t* size) {
int32_t oldSize = *size;
double delta = DBL_MAX;
- int32_t index = -1;
+ int32_t qry_index = -1;
for (int32_t i = 1; i < oldSize; ++i) {
double d = pHistBin[i].val - pHistBin[i - 1].val;
if (d < delta) {
delta = d;
- index = i - 1;
+ qry_index = i - 1;
}
}
- SHistBin* s1 = &pHistBin[index];
- SHistBin* s2 = &pHistBin[index + 1];
+ SHistBin* s1 = &pHistBin[qry_index];
+ SHistBin* s2 = &pHistBin[qry_index + 1];
double newVal = (s1->val * s1->num + s2->val * s2->num) / (s1->num + s2->num);
s1->val = newVal;
s1->num = s1->num + s2->num;
- memmove(&pHistBin[index + 1], &pHistBin[index + 2], (oldSize - index - 2) * sizeof(SHistBin));
+ memmove(&pHistBin[qry_index + 1], &pHistBin[qry_index + 2], (oldSize - qry_index - 2) * sizeof(SHistBin));
(*size) -= 1;
#endif
}
/* optimize this procedure */
-int32_t histogramCreateBin(SHistogramInfo* pHisto, int32_t index, double val) {
+int32_t histogramCreateBin(SHistogramInfo* pHisto, int32_t qry_index, double val) {
#if defined(USE_ARRAYLIST)
- int32_t remain = pHisto->numOfEntries - index;
+ int32_t remain = pHisto->numOfEntries - qry_index;
if (remain > 0) {
- memmove(&pHisto->elems[index + 1], &pHisto->elems[index], sizeof(SHistBin) * remain);
+ memmove(&pHisto->elems[qry_index + 1], &pHisto->elems[qry_index], sizeof(SHistBin) * remain);
}
- assert(index >= 0 && index <= pHisto->maxEntries);
+ assert(qry_index >= 0 && qry_index <= pHisto->maxEntries);
- pHisto->elems[index].num = 1;
- pHisto->elems[index].val = val;
+ pHisto->elems[qry_index].num = 1;
+ pHisto->elems[qry_index].val = val;
pHisto->numOfEntries += 1;
/* we need to merge the slot */
diff --git a/src/query/src/qPercentile.c b/src/query/src/qPercentile.c
index 024ba77de13086b7ff8e32ab2c4c7340d8806b6b..58275a908976a6f36787d547f0085dc8bd33c4e4 100644
--- a/src/query/src/qPercentile.c
+++ b/src/query/src/qPercentile.c
@@ -122,54 +122,54 @@ int32_t tBucketIntHash(tMemBucket *pBucket, const void *value) {
int64_t v = 0;
GET_TYPED_DATA(v, int64_t, pBucket->type, value);
- int32_t index = -1;
+ int32_t qry_index = -1;
if (v > pBucket->range.i64MaxVal || v < pBucket->range.i64MinVal) {
- return index;
+ return qry_index;
}
// divide the value range into 1024 buckets
uint64_t span = pBucket->range.i64MaxVal - pBucket->range.i64MinVal;
if (span < pBucket->numOfSlots) {
int64_t delta = v - pBucket->range.i64MinVal;
- index = (delta % pBucket->numOfSlots);
+ qry_index = (delta % pBucket->numOfSlots);
} else {
double slotSpan = (double)span / pBucket->numOfSlots;
- index = (int32_t)(((double)v - pBucket->range.i64MinVal) / slotSpan);
- if (index == pBucket->numOfSlots) {
- index -= 1;
+ qry_index = (int32_t)(((double)v - pBucket->range.i64MinVal) / slotSpan);
+ if (qry_index == pBucket->numOfSlots) {
+ qry_index -= 1;
}
}
- assert(index >= 0 && index < pBucket->numOfSlots);
- return index;
+ assert(qry_index >= 0 && qry_index < pBucket->numOfSlots);
+ return qry_index;
}
int32_t tBucketUintHash(tMemBucket *pBucket, const void *value) {
int64_t v = 0;
GET_TYPED_DATA(v, uint64_t, pBucket->type, value);
- int32_t index = -1;
+ int32_t qry_index = -1;
if (v > pBucket->range.u64MaxVal || v < pBucket->range.u64MinVal) {
- return index;
+ return qry_index;
}
// divide the value range into 1024 buckets
uint64_t span = pBucket->range.u64MaxVal - pBucket->range.u64MinVal;
if (span < pBucket->numOfSlots) {
int64_t delta = v - pBucket->range.u64MinVal;
- index = (int32_t) (delta % pBucket->numOfSlots);
+ qry_index = (int32_t) (delta % pBucket->numOfSlots);
} else {
double slotSpan = (double)span / pBucket->numOfSlots;
- index = (int32_t)((v - pBucket->range.u64MinVal) / slotSpan);
+ qry_index = (int32_t)((v - pBucket->range.u64MinVal) / slotSpan);
if (v == pBucket->range.u64MaxVal) {
- index -= 1;
+ qry_index -= 1;
}
}
- assert(index >= 0 && index < pBucket->numOfSlots);
- return index;
+ assert(qry_index >= 0 && qry_index < pBucket->numOfSlots);
+ return qry_index;
}
int32_t tBucketDoubleHash(tMemBucket *pBucket, const void *value) {
@@ -180,27 +180,27 @@ int32_t tBucketDoubleHash(tMemBucket *pBucket, const void *value) {
v = GET_DOUBLE_VAL(value);
}
- int32_t index = -1;
+ int32_t qry_index = -1;
if (v > pBucket->range.dMaxVal || v < pBucket->range.dMinVal) {
- return index;
+ return qry_index;
}
// divide a range of [dMinVal, dMaxVal] into 1024 buckets
double span = pBucket->range.dMaxVal - pBucket->range.dMinVal;
if (span < pBucket->numOfSlots) {
int32_t delta = (int32_t)(v - pBucket->range.dMinVal);
- index = (delta % pBucket->numOfSlots);
+ qry_index = (delta % pBucket->numOfSlots);
} else {
double slotSpan = span / pBucket->numOfSlots;
- index = (int32_t)((v - pBucket->range.dMinVal) / slotSpan);
+ qry_index = (int32_t)((v - pBucket->range.dMinVal) / slotSpan);
if (v == pBucket->range.dMaxVal) {
- index -= 1;
+ qry_index -= 1;
}
}
- assert(index >= 0 && index < pBucket->numOfSlots);
- return index;
+ assert(qry_index >= 0 && qry_index < pBucket->numOfSlots);
+ return qry_index;
}
static __perc_hash_func_t getHashFunc(int32_t type) {
@@ -332,18 +332,18 @@ int32_t tMemBucketPut(tMemBucket *pBucket, const void *data, size_t size) {
for (int32_t i = 0; i < size; ++i) {
char *d = (char *) data + i * bytes;
- int32_t index = (pBucket->hashFunc)(pBucket, d);
- if (index < 0) {
+ int32_t qry_index = (pBucket->hashFunc)(pBucket, d);
+ if (qry_index < 0) {
continue;
}
count += 1;
- tMemBucketSlot *pSlot = &pBucket->pSlots[index];
+ tMemBucketSlot *pSlot = &pBucket->pSlots[qry_index];
tMemBucketUpdateBoundingBox(&pSlot->range, d, pBucket->type);
// ensure available memory pages to allocate
- int32_t groupId = getGroupId(pBucket->numOfSlots, index, pBucket->times);
+ int32_t groupId = getGroupId(pBucket->numOfSlots, qry_index, pBucket->times);
int32_t pageId = -1;
if (pSlot->info.data == NULL || pSlot->info.data->num >= pBucket->elemPerPage) {
@@ -387,7 +387,7 @@ static MinMaxEntry getMinMaxEntryOfNextSlotWithData(tMemBucket *pMemBucket, int3
return pMemBucket->pSlots[j].range;
}
-static bool isIdenticalData(tMemBucket *pMemBucket, int32_t index);
+static bool isIdenticalData(tMemBucket *pMemBucket, int32_t qry_index);
static double getIdenticalDataVal(tMemBucket* pMemBucket, int32_t slotIndex) {
assert(isIdenticalData(pMemBucket, slotIndex));
@@ -532,8 +532,8 @@ double getPercentile(tMemBucket *pMemBucket, double percent) {
/*
* check if data in one slot are all identical only need to compare with the bounding box
*/
-bool isIdenticalData(tMemBucket *pMemBucket, int32_t index) {
- tMemBucketSlot *pSeg = &pMemBucket->pSlots[index];
+bool isIdenticalData(tMemBucket *pMemBucket, int32_t qry_index) {
+ tMemBucketSlot *pSeg = &pMemBucket->pSlots[qry_index];
if (IS_FLOAT_TYPE(pMemBucket->type)) {
return fabs(pSeg->range.dMaxVal - pSeg->range.dMinVal) < DBL_EPSILON;
diff --git a/src/query/src/qPlan.c b/src/query/src/qPlan.c
index abfa20714b333754478e5c48b9265f839b05a4b1..e7d07fc251470ba99d9c1abbb8e18314ffc02319 100644
--- a/src/query/src/qPlan.c
+++ b/src/query/src/qPlan.c
@@ -126,9 +126,9 @@ static SQueryNode* doAddTableColumnNode(SQueryInfo* pQueryInfo, STableMetaInfo*
for (int32_t i = 0; i < numOfCols; ++i) {
SColumn* pCol = taosArrayGetP(tableCols, i);
- SColumnIndex index = {.tableIndex = 0, .columnIndex = pCol->columnIndex};
- STableMetaInfo* pTableMetaInfo1 = tscGetMetaInfo(pQueryInfo, index.tableIndex);
- SExprInfo* p = tscExprCreate(pTableMetaInfo1, TSDB_FUNC_PRJ, &index, pCol->info.type, pCol->info.bytes,
+ SColumnIndex qry_index = {.tableIndex = 0, .columnIndex = pCol->columnIndex};
+ STableMetaInfo* pTableMetaInfo1 = tscGetMetaInfo(pQueryInfo, qry_index.tableIndex);
+ SExprInfo* p = tscExprCreate(pTableMetaInfo1, TSDB_FUNC_PRJ, &qry_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));
diff --git a/src/query/src/qSqlParser.c b/src/query/src/qSqlParser.c
index 92b4620f407e726e2126b81c73d203c259ccfc36..40b1a8eff1e3c59053618aebb1faecf0208fa525 100644
--- a/src/query/src/qSqlParser.c
+++ b/src/query/src/qSqlParser.c
@@ -134,7 +134,7 @@ SArray *tStrTokenAppend(SArray *pList, SStrToken *pToken) {
return pList;
}
-tSqlExpr *tSqlExprCreateIdValue(SStrToken *pToken, int32_t optrType) {
+tSqlExpr *tSqlExprCreateIdValue(SSqlInfo* pInfo, SStrToken *pToken, int32_t optrType) {
tSqlExpr *pSqlExpr = calloc(1, sizeof(tSqlExpr));
if (pToken != NULL) {
@@ -169,6 +169,7 @@ tSqlExpr *tSqlExprCreateIdValue(SStrToken *pToken, int32_t optrType) {
char unit = 0;
int32_t ret = parseAbsoluteDuration(pToken->z, pToken->n, &pSqlExpr->value.i64, &unit, TSDB_TIME_PRECISION_NANO);
if (ret != TSDB_CODE_SUCCESS) {
+ snprintf(pInfo->msg, tListLen(pInfo->msg), "%s", pToken->z);
terrno = TSDB_CODE_TSC_SQL_SYNTAX_ERROR;
}
}
@@ -538,8 +539,8 @@ SArray *tVariantListAppend(SArray *pList, tVariant *pVar, uint8_t sortOrder) {
return pList;
}
-SArray *tVariantListInsert(SArray *pList, tVariant *pVar, uint8_t sortOrder, int32_t index) {
- if (pList == NULL || pVar == NULL || index >= taosArrayGetSize(pList)) {
+SArray *tVariantListInsert(SArray *pList, tVariant *pVar, uint8_t sortOrder, int32_t qry_index) {
+ if (pList == NULL || pVar == NULL || qry_index >= taosArrayGetSize(pList)) {
return tVariantListAppend(NULL, pVar, sortOrder);
}
@@ -548,7 +549,7 @@ SArray *tVariantListInsert(SArray *pList, tVariant *pVar, uint8_t sortOrder, int
item.pVar = *pVar;
item.sortOrder = sortOrder;
- taosArrayInsert(pList, index, &item);
+ taosArrayInsert(pList, qry_index, &item);
return pList;
}
@@ -559,7 +560,8 @@ SRelationInfo *setTableNameList(SRelationInfo* pRelationInfo, SStrToken *pName,
}
pRelationInfo->type = SQL_NODE_FROM_TABLELIST;
- SRelElementPair p = {.tableName = *pName};
+ SRelElementPair p;
+ p.tableName = *pName;
if (pAlias != NULL) {
p.aliasName = *pAlias;
} else {
@@ -598,7 +600,8 @@ SRelationInfo* addSubqueryElem(SRelationInfo* pRelationInfo, SArray* pSub, SStrT
pRelationInfo->type = SQL_NODE_FROM_SUBQUERY;
- SRelElementPair p = {.pSubquery = pSub};
+ SRelElementPair p;
+ p.pSubquery = pSub;
if (pAlias != NULL) {
p.aliasName = *pAlias;
} else {
diff --git a/src/query/src/qTsbuf.c b/src/query/src/qTsbuf.c
index 99572f6e9345b933434e3685ecb79750a04388fc..61101a90a35e9a6a69535e7d4948518bdd89a84d 100644
--- a/src/query/src/qTsbuf.c
+++ b/src/query/src/qTsbuf.c
@@ -5,7 +5,7 @@
#include "queryLog.h"
static int32_t getDataStartOffset();
-static void TSBufUpdateGroupInfo(STSBuf* pTSBuf, int32_t index, STSGroupBlockInfo* pBlockInfo);
+static void TSBufUpdateGroupInfo(STSBuf* pTSBuf, int32_t qry_index, STSGroupBlockInfo* pBlockInfo);
static STSBuf* allocResForTSBuf(STSBuf* pTSBuf);
static int32_t STSBufUpdateHeader(STSBuf* pTSBuf, STSBufFileHeader* pHeader);
@@ -796,7 +796,7 @@ int32_t tsBufMerge(STSBuf* pDestBuf, const STSBuf* pSrcBuf) {
return -1;
}
- // src can only have one vnode index
+ // src can only have one vnode qry_index
assert(pSrcBuf->numOfGroups == 1);
// there are data in buffer, flush to disk first
@@ -819,7 +819,7 @@ int32_t tsBufMerge(STSBuf* pDestBuf, const STSBuf* pSrcBuf) {
pDestBuf->pData = tmp;
}
- // directly copy the vnode index information
+ // directly copy the vnode qry_index information
memcpy(&pDestBuf->pData[oldSize], pSrcBuf->pData, (size_t)pSrcBuf->numOfGroups * sizeof(STSGroupBlockInfoEx));
// set the new offset value
@@ -1012,8 +1012,8 @@ static int32_t getDataStartOffset() {
}
// update prev vnode length info in file
-static void TSBufUpdateGroupInfo(STSBuf* pTSBuf, int32_t index, STSGroupBlockInfo* pBlockInfo) {
- int32_t offset = sizeof(STSBufFileHeader) + index * sizeof(STSGroupBlockInfo);
+static void TSBufUpdateGroupInfo(STSBuf* pTSBuf, int32_t qry_index, STSGroupBlockInfo* pBlockInfo) {
+ int32_t offset = sizeof(STSBufFileHeader) + qry_index * sizeof(STSGroupBlockInfo);
doUpdateGroupInfo(pTSBuf, offset, pBlockInfo);
}
diff --git a/src/query/src/qUtil.c b/src/query/src/qUtil.c
index a26697fb31b5772a2847584a5ea554907058ba4a..57c74c16dfc4761dcdd268468bad1b82e7ed019a 100644
--- a/src/query/src/qUtil.c
+++ b/src/query/src/qUtil.c
@@ -168,9 +168,9 @@ void clearResultRow(SQueryRuntimeEnv *pRuntimeEnv, SResultRow *pResultRow, int16
}
// TODO refactor: use macro
-SResultRowCellInfo* getResultCell(const SResultRow* pRow, int32_t index, int32_t* offset) {
- assert(index >= 0 && offset != NULL);
- return (SResultRowCellInfo*)((char*) pRow->pCellInfo + offset[index]);
+SResultRowCellInfo* getResultCell(const SResultRow* pRow, int32_t qry_index, int32_t* offset) {
+ assert(qry_index >= 0 && offset != NULL);
+ return (SResultRowCellInfo*)((char*) pRow->pCellInfo + offset[qry_index]);
}
size_t getResultRowSize(SQueryRuntimeEnv* pRuntimeEnv) {
diff --git a/src/rpc/src/rpcCache.c b/src/rpc/src/rpcCache.c
index 60a12c26b78626ed81cbc182d76c836c6ee74498..9784a8f354424974f04227f4137569132c6cc72c 100644
--- a/src/rpc/src/rpcCache.c
+++ b/src/rpc/src/rpcCache.c
@@ -49,7 +49,7 @@ static int rpcHashConn(void *handle, char *fqdn, uint16_t port, int8_t connType
static void rpcLockCache(int64_t *lockedBy);
static void rpcUnlockCache(int64_t *lockedBy);
static void rpcCleanConnCache(void *handle, void *tmrId);
-static void rpcRemoveExpiredNodes(SConnCache *pCache, SConnHash *pNode, int hash, uint64_t time);
+static void rpcRemoveExpiredNodes(SConnCache *pCache, SConnHash *pNode, int hash, uint64_t rpc_time);
void *rpcOpenConnCache(int maxSessions, void (*cleanFp)(void *), void *tmrCtrl, int64_t keepTimer) {
SConnHash **connHashList;
@@ -118,7 +118,7 @@ void rpcAddConnIntoCache(void *handle, void *data, char *fqdn, uint16_t port, in
SConnHash * pNode;
SConnCache *pCache;
- uint64_t time = taosGetTimestampMs();
+ uint64_t rpc_time = taosGetTimestampMs();
pCache = (SConnCache *)handle;
assert(pCache);
@@ -131,7 +131,7 @@ void rpcAddConnIntoCache(void *handle, void *data, char *fqdn, uint16_t port, in
pNode->connType = connType;
pNode->data = data;
pNode->prev = NULL;
- pNode->time = time;
+ pNode->time = rpc_time;
rpcLockCache(pCache->lockedBy+hash);
@@ -140,7 +140,7 @@ void rpcAddConnIntoCache(void *handle, void *data, char *fqdn, uint16_t port, in
pCache->connHashList[hash] = pNode;
pCache->count[hash]++;
- rpcRemoveExpiredNodes(pCache, pNode->next, hash, time);
+ rpcRemoveExpiredNodes(pCache, pNode->next, hash, rpc_time);
rpcUnlockCache(pCache->lockedBy+hash);
@@ -159,15 +159,15 @@ void *rpcGetConnFromCache(void *handle, char *fqdn, uint16_t port, int8_t connTy
pCache = (SConnCache *)handle;
assert(pCache);
- uint64_t time = taosGetTimestampMs();
+ uint64_t rpc_time = taosGetTimestampMs();
hash = rpcHashConn(pCache, fqdn, port, connType);
rpcLockCache(pCache->lockedBy+hash);
pNode = pCache->connHashList[hash];
while (pNode) {
- if (time >= pCache->keepTimer + pNode->time) {
- rpcRemoveExpiredNodes(pCache, pNode, hash, time);
+ if (rpc_time >= pCache->keepTimer + pNode->time) {
+ rpcRemoveExpiredNodes(pCache, pNode, hash, rpc_time);
pNode = NULL;
break;
}
@@ -178,7 +178,7 @@ void *rpcGetConnFromCache(void *handle, char *fqdn, uint16_t port, int8_t connTy
}
if (pNode) {
- rpcRemoveExpiredNodes(pCache, pNode->next, hash, time);
+ rpcRemoveExpiredNodes(pCache, pNode->next, hash, rpc_time);
if (pNode->prev) {
pNode->prev->next = pNode->next;
@@ -217,12 +217,12 @@ static void rpcCleanConnCache(void *handle, void *tmrId) {
if (pCache->pTimer != tmrId) return;
pthread_mutex_lock(&pCache->mutex);
- uint64_t time = taosGetTimestampMs();
+ uint64_t rpc_time = taosGetTimestampMs();
for (hash = 0; hash < pCache->maxSessions; ++hash) {
rpcLockCache(pCache->lockedBy+hash);
pNode = pCache->connHashList[hash];
- rpcRemoveExpiredNodes(pCache, pNode, hash, time);
+ rpcRemoveExpiredNodes(pCache, pNode, hash, rpc_time);
rpcUnlockCache(pCache->lockedBy+hash);
}
@@ -231,8 +231,8 @@ static void rpcCleanConnCache(void *handle, void *tmrId) {
pthread_mutex_unlock(&pCache->mutex);
}
-static void rpcRemoveExpiredNodes(SConnCache *pCache, SConnHash *pNode, int hash, uint64_t time) {
- if (pNode == NULL || (time < pCache->keepTimer + pNode->time) ) return;
+static void rpcRemoveExpiredNodes(SConnCache *pCache, SConnHash *pNode, int hash, uint64_t rpc_time) {
+ if (pNode == NULL || (rpc_time < pCache->keepTimer + pNode->time) ) return;
SConnHash *pPrev = pNode->prev, *pNext;
diff --git a/src/rpc/src/rpcTcp.c b/src/rpc/src/rpcTcp.c
index 25495182498f7c1a82f9f9459290e44f082f5eb2..29d9790e70ede047fcadb2a7bc4775366b2c3a3e 100644
--- a/src/rpc/src/rpcTcp.c
+++ b/src/rpc/src/rpcTcp.c
@@ -392,9 +392,9 @@ void taosCleanUpTcpClient(void *chandle) {
void *taosOpenTcpClientConnection(void *shandle, void *thandle, uint32_t ip, uint16_t port) {
SClientObj * pClientObj = shandle;
- int32_t index = atomic_load_32(&pClientObj->index) % pClientObj->numOfThreads;
- atomic_store_32(&pClientObj->index, index + 1);
- SThreadObj *pThreadObj = pClientObj->pThreadObj[index];
+ int32_t rpc_index = atomic_load_32(&pClientObj->index) % pClientObj->numOfThreads;
+ atomic_store_32(&pClientObj->index, rpc_index + 1);
+ SThreadObj *pThreadObj = pClientObj->pThreadObj[rpc_index];
SOCKET fd = taosOpenTcpClientSocket(ip, port, pThreadObj->ip);
#if defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32)
@@ -403,12 +403,12 @@ void *taosOpenTcpClientConnection(void *shandle, void *thandle, uint32_t ip, uin
if (fd <= 0) return NULL;
#endif
- struct sockaddr_in sin;
+ struct sockaddr_in rpc_sin;
uint16_t localPort = 0;
- unsigned int addrlen = sizeof(sin);
- if (getsockname(fd, (struct sockaddr *)&sin, &addrlen) == 0 &&
- sin.sin_family == AF_INET && addrlen == sizeof(sin)) {
- localPort = (uint16_t)ntohs(sin.sin_port);
+ unsigned int addrlen = sizeof(rpc_sin);
+ if (getsockname(fd, (struct sockaddr *)&rpc_sin, &addrlen) == 0 &&
+ rpc_sin.sin_family == AF_INET && addrlen == sizeof(rpc_sin)) {
+ localPort = (uint16_t)ntohs(rpc_sin.sin_port);
}
SFdObj *pFdObj = taosMallocFdObj(pThreadObj, fd);
diff --git a/src/rpc/src/rpcUdp.c b/src/rpc/src/rpcUdp.c
index 086a390cb8ea2a95f576cb1bff81dfc79769863a..a908059d5e94d1f3b9c0b9fdf7c5961b81e2c303 100644
--- a/src/rpc/src/rpcUdp.c
+++ b/src/rpc/src/rpcUdp.c
@@ -97,11 +97,11 @@ void *taosInitUdpConnection(uint32_t ip, uint16_t port, char *label, int threads
break;
}
- struct sockaddr_in sin;
- unsigned int addrlen = sizeof(sin);
- if (getsockname(pConn->fd, (struct sockaddr *)&sin, &addrlen) == 0 &&
- sin.sin_family == AF_INET && addrlen == sizeof(sin)) {
- pConn->localPort = (uint16_t)ntohs(sin.sin_port);
+ struct sockaddr_in rpc_sin;
+ unsigned int addrlen = sizeof(rpc_sin);
+ if (getsockname(pConn->fd, (struct sockaddr *)&rpc_sin, &addrlen) == 0 &&
+ rpc_sin.sin_family == AF_INET && addrlen == sizeof(rpc_sin)) {
+ pConn->localPort = (uint16_t)ntohs(rpc_sin.sin_port);
}
tstrncpy(pConn->label, label, sizeof(pConn->label));
diff --git a/src/rpc/test/rclient.c b/src/rpc/test/rclient.c
index 2f4433f1bb32e965de66a40d7d6ae36c6804a06c..1ef0b33f52dbe9b80431ca5c015cccd3ed56e7b4 100644
--- a/src/rpc/test/rclient.c
+++ b/src/rpc/test/rclient.c
@@ -70,7 +70,7 @@ static void *sendRequest(void *param) {
}
int main(int argc, char *argv[]) {
- SRpcInit rpcInit;
+ SRpcInit rpc_rpcInit;
SRpcEpSet epSet;
int msgSize = 128;
int numOfReqs = 0;
@@ -90,18 +90,18 @@ int main(int argc, char *argv[]) {
strcpy(epSet.fqdn[1], "192.168.0.1");
// client info
- memset(&rpcInit, 0, sizeof(rpcInit));
- rpcInit.localPort = 0;
- rpcInit.label = "APP";
- rpcInit.numOfThreads = 1;
- rpcInit.cfp = processResponse;
- rpcInit.sessions = 100;
- rpcInit.idleTime = tsShellActivityTimer*1000;
- rpcInit.user = "michael";
- rpcInit.secret = secret;
- rpcInit.ckey = "key";
- rpcInit.spi = 1;
- rpcInit.connType = TAOS_CONN_CLIENT;
+ memset(&rpc_rpcInit, 0, sizeof(rpc_rpcInit));
+ rpc_rpcInit.localPort = 0;
+ rpc_rpcInit.label = "APP";
+ rpc_rpcInit.numOfThreads = 1;
+ rpc_rpcInit.cfp = processResponse;
+ rpc_rpcInit.sessions = 100;
+ rpc_rpcInit.idleTime = tsShellActivityTimer*1000;
+ rpc_rpcInit.user = "michael";
+ rpc_rpcInit.secret = secret;
+ rpc_rpcInit.ckey = "key";
+ rpc_rpcInit.spi = 1;
+ rpc_rpcInit.connType = TAOS_CONN_CLIENT;
for (int i=1; ireplica; ++index) {
- const SNodeInfo *pNodeInfo = pCfg->nodeInfo + index;
- pNode->peerInfo[index] = syncAddPeer(pNode, pNodeInfo);
- if (pNode->peerInfo[index] == NULL) {
+ for (int32_t syn_index = 0; syn_index < pCfg->replica; ++syn_index) {
+ const SNodeInfo *pNodeInfo = pCfg->nodeInfo + syn_index;
+ pNode->peerInfo[syn_index] = syncAddPeer(pNode, pNodeInfo);
+ if (pNode->peerInfo[syn_index] == NULL) {
sError("vgId:%d, node:%d fqdn:%s port:%u is not configured, stop taosd", pNode->vgId, pNodeInfo->nodeId,
pNodeInfo->nodeFqdn, pNodeInfo->nodePort);
syncStop(pNode->rid);
@@ -210,7 +210,7 @@ int64_t syncStart(const SSyncInfo *pInfo) {
}
if ((strcmp(pNodeInfo->nodeFqdn, tsNodeFqdn) == 0) && (pNodeInfo->nodePort == tsSyncPort)) {
- pNode->selfIndex = index;
+ pNode->selfIndex = syn_index;
}
}
@@ -256,8 +256,8 @@ int64_t syncStart(const SSyncInfo *pInfo) {
}
syncStartCheckPeerConn(pNode->peerInfo[TAOS_SYNC_MAX_REPLICA]); // arb
- for (int32_t index = 0; index < pNode->replica; ++index) {
- syncStartCheckPeerConn(pNode->peerInfo[index]);
+ for (int32_t syn_index = 0; syn_index < pNode->replica; ++syn_index) {
+ syncStartCheckPeerConn(pNode->peerInfo[syn_index]);
}
return pNode->rid;
@@ -277,8 +277,8 @@ void syncStop(int64_t rid) {
if (pNode->pFwdTimer) taosTmrStop(pNode->pFwdTimer);
if (pNode->pRoleTimer) taosTmrStop(pNode->pRoleTimer);
- for (int32_t index = 0; index < pNode->replica; ++index) {
- pPeer = pNode->peerInfo[index];
+ for (int32_t syn_index = 0; syn_index < pNode->replica; ++syn_index) {
+ pPeer = pNode->peerInfo[syn_index];
if (pPeer) syncRemovePeer(pPeer);
}
@@ -303,8 +303,8 @@ int32_t syncReconfig(int64_t rid, const SSyncCfg *pNewCfg) {
pthread_mutex_lock(&pNode->mutex);
syncStopCheckPeerConn(pNode->peerInfo[TAOS_SYNC_MAX_REPLICA]); // arb
- for (int32_t index = 0; index < pNode->replica; ++index) {
- syncStopCheckPeerConn(pNode->peerInfo[index]);
+ for (int32_t syn_index = 0; syn_index < pNode->replica; ++syn_index) {
+ syncStopCheckPeerConn(pNode->peerInfo[syn_index]);
}
for (i = 0; i < pNode->replica; ++i) {
@@ -364,8 +364,8 @@ int32_t syncReconfig(int64_t rid, const SSyncCfg *pNewCfg) {
}
syncStartCheckPeerConn(pNode->peerInfo[TAOS_SYNC_MAX_REPLICA]); // arb
- for (int32_t index = 0; index < pNode->replica; ++index) {
- syncStartCheckPeerConn(pNode->peerInfo[index]);
+ for (int32_t syn_index = 0; syn_index < pNode->replica; ++syn_index) {
+ syncStartCheckPeerConn(pNode->peerInfo[syn_index]);
}
pthread_mutex_unlock(&pNode->mutex);
@@ -629,16 +629,16 @@ static SSyncPeer *syncAddPeer(SSyncNode *pNode, const SNodeInfo *pInfo) {
}
void syncBroadcastStatus(SSyncNode *pNode) {
- for (int32_t index = 0; index < pNode->replica; ++index) {
- if (index == pNode->selfIndex) continue;
- SSyncPeer *pPeer = pNode->peerInfo[index];
+ for (int32_t syn_index = 0; syn_index < pNode->replica; ++syn_index) {
+ if (syn_index == pNode->selfIndex) continue;
+ SSyncPeer *pPeer = pNode->peerInfo[syn_index];
syncSendPeersStatusMsgToPeer(pPeer, 1, SYNC_STATUS_BROADCAST, syncGenTranId());
}
}
static void syncResetFlowCtrl(SSyncNode *pNode) {
- for (int32_t index = 0; index < pNode->replica; ++index) {
- pNode->peerInfo[index]->numOfRetrieves = 0;
+ for (int32_t syn_index = 0; syn_index < pNode->replica; ++syn_index) {
+ pNode->peerInfo[syn_index]->numOfRetrieves = 0;
}
if (pNode->notifyFlowCtrlFp) {
@@ -649,7 +649,7 @@ static void syncResetFlowCtrl(SSyncNode *pNode) {
static void syncChooseMaster(SSyncNode *pNode) {
SSyncPeer *pPeer;
int32_t onlineNum = 0;
- int32_t index = -1;
+ int32_t syn_index = -1;
int32_t replica = pNode->replica;
for (int32_t i = 0; i < pNode->replica; ++i) {
@@ -660,13 +660,13 @@ static void syncChooseMaster(SSyncNode *pNode) {
if (onlineNum == pNode->replica) {
// if all peers are online, peer with highest version shall be master
- index = 0;
+ syn_index = 0;
for (int32_t i = 1; i < pNode->replica; ++i) {
- if (pNode->peerInfo[i]->version > pNode->peerInfo[index]->version) {
- index = i;
+ if (pNode->peerInfo[i]->version > pNode->peerInfo[syn_index]->version) {
+ syn_index = i;
}
}
- sDebug("vgId:%d, master:%s may be choosed, index:%d", pNode->vgId, pNode->peerInfo[index]->id, index);
+ sDebug("vgId:%d, master:%s may be choosed, index:%d", pNode->vgId, pNode->peerInfo[syn_index]->id, syn_index);
} else {
sDebug("vgId:%d, no master election since onlineNum:%d replica:%d", pNode->vgId, onlineNum, pNode->replica);
}
@@ -683,26 +683,26 @@ static void syncChooseMaster(SSyncNode *pNode) {
}
}
- if (index < 0 && onlineNum > replica / 2.0) {
+ if (syn_index < 0 && onlineNum > replica / 2.0) {
// over half of nodes are online
for (int32_t i = 0; i < pNode->replica; ++i) {
// slave with highest version shall be master
pPeer = pNode->peerInfo[i];
if (pPeer->role == TAOS_SYNC_ROLE_SLAVE || pPeer->role == TAOS_SYNC_ROLE_MASTER) {
- if (index < 0 || pPeer->version > pNode->peerInfo[index]->version) {
- index = i;
+ if (syn_index < 0 || pPeer->version > pNode->peerInfo[syn_index]->version) {
+ syn_index = i;
}
}
}
- if (index >= 0) {
+ if (syn_index >= 0) {
sDebug("vgId:%d, master:%s may be choosed, index:%d onlineNum(arb):%d replica:%d", pNode->vgId,
- pNode->peerInfo[index]->id, index, onlineNum, replica);
+ pNode->peerInfo[syn_index]->id, syn_index, onlineNum, replica);
}
}
- if (index >= 0) {
- if (index == pNode->selfIndex) {
+ if (syn_index >= 0) {
+ if (syn_index == pNode->selfIndex) {
sInfo("vgId:%d, start to work as master", pNode->vgId);
nodeRole = TAOS_SYNC_ROLE_MASTER;
@@ -712,7 +712,7 @@ static void syncChooseMaster(SSyncNode *pNode) {
syncResetFlowCtrl(pNode);
(*pNode->notifyRoleFp)(pNode->vgId, nodeRole);
} else {
- pPeer = pNode->peerInfo[index];
+ pPeer = pNode->peerInfo[syn_index];
sInfo("%s, it shall work as master", pPeer->id);
}
} else {
@@ -725,8 +725,8 @@ static SSyncPeer *syncCheckMaster(SSyncNode *pNode) {
int32_t masterIndex = -1;
int32_t replica = pNode->replica;
- for (int32_t index = 0; index < pNode->replica; ++index) {
- if (pNode->peerInfo[index]->role != TAOS_SYNC_ROLE_OFFLINE) {
+ for (int32_t syn_index = 0; syn_index < pNode->replica; ++syn_index) {
+ if (pNode->peerInfo[syn_index]->role != TAOS_SYNC_ROLE_OFFLINE) {
onlineNum++;
}
}
@@ -751,19 +751,19 @@ static SSyncPeer *syncCheckMaster(SSyncNode *pNode) {
(*pNode->notifyRoleFp)(pNode->vgId, nodeRole);
}
} else {
- for (int32_t index = 0; index < pNode->replica; ++index) {
- SSyncPeer *pTemp = pNode->peerInfo[index];
+ for (int32_t syn_index = 0; syn_index < pNode->replica; ++syn_index) {
+ SSyncPeer *pTemp = pNode->peerInfo[syn_index];
if (pTemp->role != TAOS_SYNC_ROLE_MASTER) continue;
if (masterIndex < 0) {
- masterIndex = index;
- sDebug("vgId:%d, peer:%s is master, index:%d", pNode->vgId, pTemp->id, index);
+ masterIndex = syn_index;
+ sDebug("vgId:%d, peer:%s is master, index:%d", pNode->vgId, pTemp->id, syn_index);
} else { // multiple masters, it shall not happen
if (masterIndex == pNode->selfIndex) {
sError("%s, peer is master, work as slave instead", pTemp->id);
nodeRole = TAOS_SYNC_ROLE_SLAVE;
(*pNode->notifyRoleFp)(pNode->vgId, nodeRole);
} else {
- sError("vgId:%d, peer:%s is master too, masterIndex:%d index:%d", pNode->vgId, pTemp->id, masterIndex, index);
+ sError("vgId:%d, peer:%s is master too, masterIndex:%d index:%d", pNode->vgId, pTemp->id, masterIndex, syn_index);
}
}
}
@@ -783,9 +783,9 @@ static int32_t syncValidateMaster(SSyncPeer *pPeer) {
(*pNode->notifyRoleFp)(pNode->vgId, nodeRole);
code = -1;
- for (int32_t index = 0; index < pNode->replica; ++index) {
- if (index == pNode->selfIndex) continue;
- syncRestartPeer(pNode->peerInfo[index]);
+ for (int32_t syn_index = 0; syn_index < pNode->replica; ++syn_index) {
+ if (syn_index == pNode->selfIndex) continue;
+ syncRestartPeer(pNode->peerInfo[syn_index]);
}
}
@@ -825,15 +825,15 @@ static void syncCheckRole(SSyncPeer *pPeer, SPeerStatus* peersStatus, int8_t new
} else {
// master not there, if all peer's state and version are consistent, choose the master
int32_t consistent = 0;
- int32_t index = 0;
+ int32_t syn_index = 0;
if (peersStatus != NULL) {
- for (index = 0; index < pNode->replica; ++index) {
- SSyncPeer *pTemp = pNode->peerInfo[index];
- if (pTemp->role != peersStatus[index].role) break;
- if ((pTemp->role != TAOS_SYNC_ROLE_OFFLINE) && (pTemp->version != peersStatus[index].version)) break;
+ for (syn_index = 0; syn_index < pNode->replica; ++syn_index) {
+ SSyncPeer *pTemp = pNode->peerInfo[syn_index];
+ if (pTemp->role != peersStatus[syn_index].role) break;
+ if ((pTemp->role != TAOS_SYNC_ROLE_OFFLINE) && (pTemp->version != peersStatus[syn_index].version)) break;
}
- if (index >= pNode->replica) consistent = 1;
+ if (syn_index >= pNode->replica) consistent = 1;
} else {
if (pNode->replica == 2) consistent = 1;
}
@@ -1331,7 +1331,7 @@ static void syncProcessBrokenLink(int64_t rid, int32_t closedByApp) {
static int32_t syncSaveFwdInfo(SSyncNode *pNode, uint64_t _version, void *mhandle) {
SSyncFwds *pSyncFwds = pNode->pSyncFwds;
- int64_t time = taosGetTimestampMs();
+ int64_t syn_time = taosGetTimestampMs();
if (pSyncFwds->fwds >= SYNC_MAX_FWDS) {
// pSyncFwds->first = (pSyncFwds->first + 1) % SYNC_MAX_FWDS;
@@ -1348,7 +1348,7 @@ static int32_t syncSaveFwdInfo(SSyncNode *pNode, uint64_t _version, void *mhandl
memset(pFwdInfo, 0, sizeof(SFwdInfo));
pFwdInfo->version = _version;
pFwdInfo->mhandle = mhandle;
- pFwdInfo->time = time;
+ pFwdInfo->time = syn_time;
pSyncFwds->fwds++;
sTrace("vgId:%d, fwd info is saved, hver:%" PRIu64 " fwds:%d ", pNode->vgId, _version, pSyncFwds->fwds);
@@ -1400,10 +1400,10 @@ static void syncMonitorNodeRole(void *param, void *tmrId) {
SSyncNode *pNode = syncAcquireNode(rid);
if (pNode == NULL) return;
- for (int32_t index = 0; index < pNode->replica; index++) {
- if (index == pNode->selfIndex) continue;
+ for (int32_t syn_index = 0; syn_index < pNode->replica; syn_index++) {
+ if (syn_index == pNode->selfIndex) continue;
- SSyncPeer *pPeer = pNode->peerInfo[index];
+ SSyncPeer *pPeer = pNode->peerInfo[syn_index];
if (/*pPeer->role > TAOS_SYNC_ROLE_UNSYNCED && */ nodeRole > TAOS_SYNC_ROLE_UNSYNCED) continue;
if (/*pPeer->sstatus > TAOS_SYNC_STATUS_INIT || */ nodeSStatus > TAOS_SYNC_STATUS_INIT) continue;
@@ -1425,16 +1425,16 @@ static void syncMonitorFwdInfos(void *param, void *tmrId) {
SSyncFwds *pSyncFwds = pNode->pSyncFwds;
if (pSyncFwds) {
- int64_t time = taosGetTimestampMs();
+ int64_t syn_time = taosGetTimestampMs();
if (pSyncFwds->fwds > 0) {
pthread_mutex_lock(&pNode->mutex);
for (int32_t i = 0; i < pSyncFwds->fwds; ++i) {
SFwdInfo *pFwdInfo = pSyncFwds->fwdInfo + (pSyncFwds->first + i) % SYNC_MAX_FWDS;
- if (ABS(time - pFwdInfo->time) < 10000) break;
+ if (ABS(syn_time - pFwdInfo->time) < 10000) break;
sDebug("vgId:%d, forward info expired, hver:%" PRIu64 " curtime:%" PRIu64 " savetime:%" PRIu64, pNode->vgId,
- pFwdInfo->version, time, pFwdInfo->time);
+ pFwdInfo->version, syn_time, pFwdInfo->time);
syncProcessFwdAck(pNode, pFwdInfo, TSDB_CODE_SYN_CONFIRM_EXPIRED);
}
diff --git a/src/sync/src/syncRetrieve.c b/src/sync/src/syncRetrieve.c
index 623d6e3cc0c20ef3c69b4ebfb6752616c1ff56b0..864f4c369644eccb21f96531dfda1daf51b401ad 100644
--- a/src/sync/src/syncRetrieve.c
+++ b/src/sync/src/syncRetrieve.c
@@ -228,7 +228,7 @@ static int64_t syncRetrieveLastWal(SSyncPeer *pPeer, char *name, uint64_t fversi
return code;
}
-static int64_t syncProcessLastWal(SSyncPeer *pPeer, char *wname, int64_t index) {
+static int64_t syncProcessLastWal(SSyncPeer *pPeer, char *wname, int64_t syn_index) {
SSyncNode *pNode = pPeer->pSyncNode;
int32_t once = 0; // last WAL has once ever been processed
int64_t offset = 0;
@@ -290,12 +290,12 @@ static int64_t syncRetrieveWal(SSyncPeer *pPeer) {
char wname[TSDB_FILENAME_LEN * 2];
int32_t size;
int64_t code = -1;
- int64_t index = 0;
+ int64_t syn_index = 0;
while (1) {
// retrieve wal info
wname[0] = 0;
- code = (*pNode->getWalInfoFp)(pNode->vgId, wname, &index);
+ code = (*pNode->getWalInfoFp)(pNode->vgId, wname, &syn_index);
if (code < 0) {
sError("%s, failed to get wal info since:%s, code:0x%" PRIx64, pPeer->id, strerror(errno), code);
break;
@@ -308,7 +308,7 @@ static int64_t syncRetrieveWal(SSyncPeer *pPeer) {
}
if (code == 0) { // last wal
- code = syncProcessLastWal(pPeer, wname, index);
+ code = syncProcessLastWal(pPeer, wname, syn_index);
sInfo("%s, last wal processed, code:%" PRId64, pPeer->id, code);
break;
}
@@ -317,14 +317,14 @@ static int64_t syncRetrieveWal(SSyncPeer *pPeer) {
snprintf(fname, sizeof(fname), "%s/%s", pNode->path, wname);
// send wal file, old wal file won't be modified, even remove is ok
- struct stat fstat;
- if (stat(fname, &fstat) < 0) {
+ struct stat syn_fstat;
+ if (stat(fname, &syn_fstat) < 0) {
code = -1;
sInfo("%s, failed to stat wal:%s for retrieve since %s, code:0x%" PRIx64, pPeer->id, fname, strerror(errno), code);
break;
}
- size = fstat.st_size;
+ size = syn_fstat.st_size;
sInfo("%s, retrieve wal:%s size:%d", pPeer->id, fname, size);
int32_t sfd = open(fname, O_RDONLY | O_BINARY);
diff --git a/src/sync/test/syncClient.c b/src/sync/test/syncClient.c
index 23ea54ee0c19b6ad2f93d7577d8d711874b10968..b243c47fd32ef4056a42a701fc53a96632ac4da8 100644
--- a/src/sync/test/syncClient.c
+++ b/src/sync/test/syncClient.c
@@ -71,7 +71,7 @@ void *sendRequest(void *param) {
}
int main(int argc, char *argv[]) {
- SRpcInit rpcInit;
+ SRpcInit syn_rpcInit;
SRpcEpSet epSet;
char secret[TSDB_KEY_LEN] = "mypassword";
int msgSize = 128;
@@ -91,18 +91,18 @@ int main(int argc, char *argv[]) {
strcpy(epSet.fqdn[1], "192.168.0.1");
// client info
- memset(&rpcInit, 0, sizeof(rpcInit));
- rpcInit.localPort = 0;
- rpcInit.label = "APP";
- rpcInit.numOfThreads = 1;
- rpcInit.cfp = processResponse;
- rpcInit.sessions = 100;
- rpcInit.idleTime = tsShellActivityTimer*1000;
- rpcInit.user = "michael";
- rpcInit.secret = secret;
- rpcInit.ckey = "key";
- rpcInit.spi = 1;
- rpcInit.connType = TAOS_CONN_CLIENT;
+ memset(&syn_rpcInit, 0, sizeof(syn_rpcInit));
+ syn_rpcInit.localPort = 0;
+ syn_rpcInit.label = "APP";
+ syn_rpcInit.numOfThreads = 1;
+ syn_rpcInit.cfp = processResponse;
+ syn_rpcInit.sessions = 100;
+ syn_rpcInit.idleTime = tsShellActivityTimer*1000;
+ syn_rpcInit.user = "michael";
+ syn_rpcInit.secret = secret;
+ syn_rpcInit.ckey = "key";
+ syn_rpcInit.spi = 1;
+ syn_rpcInit.connType = TAOS_CONN_CLIENT;
for (int i = 1; i < argc; ++i) {
if (strcmp(argv[i], "-p") == 0 && i < argc - 1) {
@@ -110,11 +110,11 @@ int main(int argc, char *argv[]) {
} else if (strcmp(argv[i], "-i") == 0 && i < argc - 1) {
tstrncpy(epSet.fqdn[0], argv[++i], TSDB_FQDN_LEN);
} else if (strcmp(argv[i], "-t") == 0 && i < argc - 1) {
- rpcInit.numOfThreads = atoi(argv[++i]);
+ syn_rpcInit.numOfThreads = atoi(argv[++i]);
} else if (strcmp(argv[i], "-m") == 0 && i < argc - 1) {
msgSize = atoi(argv[++i]);
} else if (strcmp(argv[i], "-s") == 0 && i < argc - 1) {
- rpcInit.sessions = atoi(argv[++i]);
+ syn_rpcInit.sessions = atoi(argv[++i]);
} else if (strcmp(argv[i], "-n") == 0 && i < argc - 1) {
numOfReqs = atoi(argv[++i]);
} else if (strcmp(argv[i], "-a") == 0 && i < argc - 1) {
@@ -122,26 +122,26 @@ int main(int argc, char *argv[]) {
} else if (strcmp(argv[i], "-o") == 0 && i < argc - 1) {
tsCompressMsgSize = atoi(argv[++i]);
} else if (strcmp(argv[i], "-u") == 0 && i < argc - 1) {
- rpcInit.user = argv[++i];
+ syn_rpcInit.user = argv[++i];
} else if (strcmp(argv[i], "-k") == 0 && i < argc - 1) {
- rpcInit.secret = argv[++i];
+ syn_rpcInit.secret = argv[++i];
} else if (strcmp(argv[i], "-spi") == 0 && i < argc - 1) {
- rpcInit.spi = atoi(argv[++i]);
+ syn_rpcInit.spi = atoi(argv[++i]);
} else if (strcmp(argv[i], "-d") == 0 && i < argc - 1) {
rpcDebugFlag = atoi(argv[++i]);
} else {
printf("\nusage: %s [options] \n", argv[0]);
printf(" [-i ip]: first server IP address, default is:%s\n", serverIp);
printf(" [-p port]: server port number, default is:%d\n", epSet.port[0]);
- printf(" [-t threads]: number of rpc threads, default is:%d\n", rpcInit.numOfThreads);
- printf(" [-s sessions]: number of rpc sessions, default is:%d\n", rpcInit.sessions);
+ printf(" [-t threads]: number of rpc threads, default is:%d\n", syn_rpcInit.numOfThreads);
+ printf(" [-s sessions]: number of rpc sessions, default is:%d\n", syn_rpcInit.sessions);
printf(" [-m msgSize]: message body size, default is:%d\n", msgSize);
printf(" [-a threads]: number of app threads, default is:%d\n", appThreads);
printf(" [-n requests]: number of requests per thread, default is:%d\n", numOfReqs);
printf(" [-o compSize]: compression message size, default is:%d\n", tsCompressMsgSize);
- printf(" [-u user]: user name for the connection, default is:%s\n", rpcInit.user);
- printf(" [-k secret]: password for the connection, default is:%s\n", rpcInit.secret);
- printf(" [-spi SPI]: security parameter index, default is:%d\n", rpcInit.spi);
+ printf(" [-u user]: user name for the connection, default is:%s\n", syn_rpcInit.user);
+ printf(" [-k secret]: password for the connection, default is:%s\n", syn_rpcInit.secret);
+ printf(" [-spi SPI]: security parameter index, default is:%d\n", syn_rpcInit.spi);
printf(" [-d debugFlag]: debug flag, default:%d\n", rpcDebugFlag);
printf(" [-h help]: print out this help\n\n");
exit(0);
@@ -150,7 +150,7 @@ int main(int argc, char *argv[]) {
taosInitLog("client.log", 100000, 10);
- void *pRpc = rpcOpen(&rpcInit);
+ void *pRpc = rpcOpen(&syn_rpcInit);
if (pRpc == NULL) {
uError("failed to initialize RPC");
return -1;
diff --git a/src/sync/test/syncServer.c b/src/sync/test/syncServer.c
index 4598e16a9d05be29d11612755a079ce0a228a2ff..a9d9af666775c87f0e2159bdcbc64b71a7e9a1ef 100644
--- a/src/sync/test/syncServer.c
+++ b/src/sync/test/syncServer.c
@@ -229,47 +229,47 @@ void processRequestMsg(SRpcMsg *pMsg, SRpcEpSet *pEpSet) {
taosWriteQitem(qhandle, TAOS_QTYPE_RPC, pTemp);
}
-uint32_t getFileInfo(int32_t vgId, char *name, uint32_t *index, uint32_t eindex, int64_t *size, uint64_t *fversion) {
+uint32_t getFileInfo(int32_t vgId, char *name, uint32_t *syn_index, uint32_t eindex, int64_t *size, uint64_t *fversion) {
uint32_t magic;
- struct stat fstat;
+ struct stat syn_fstat;
char aname[280];
- if (*index == 2) {
+ if (*syn_index == 2) {
uInfo("wait for a while .....");
sleep(3);
}
if (name[0] == 0) {
// find the file
- snprintf(aname, sizeof(aname), "%s/data/data.%d", path, *index);
- sprintf(name, "data/data.%d", *index);
+ snprintf(aname, sizeof(aname), "%s/data/data.%d", path, *syn_index);
+ sprintf(name, "data/data.%d", *syn_index);
} else {
snprintf(aname, sizeof(aname), "%s/%s", path, name);
}
uInfo("get file info:%s", aname);
- if (stat(aname, &fstat) < 0) return 0;
+ if (stat(aname, &syn_fstat) < 0) return 0;
- *size = fstat.st_size;
- magic = fstat.st_size;
+ *size = syn_fstat.st_size;
+ magic = syn_fstat.st_size;
return magic;
}
-int getWalInfo(int32_t vgId, char *name, int64_t *index) {
- struct stat fstat;
+int getWalInfo(int32_t vgId, char *name, int64_t *syn_index) {
+ struct stat syn_fstat;
char aname[280];
name[0] = 0;
- if (*index + 1 > walNum) return 0;
+ if (*syn_index + 1 > walNum) return 0;
- snprintf(aname, sizeof(aname), "%s/wal/wal.%d", path, *index);
- sprintf(name, "wal/wal.%d", *index);
+ snprintf(aname, sizeof(aname), "%s/wal/wal.%d", path, *syn_index);
+ sprintf(name, "wal/wal.%d", *syn_index);
uInfo("get wal info:%s", aname);
- if (stat(aname, &fstat) < 0) return -1;
+ if (stat(aname, &syn_fstat) < 0) return -1;
- if (*index >= walNum - 1) return 0; // no more
+ if (*syn_index >= walNum - 1) return 0; // no more
return 1;
}
@@ -342,30 +342,30 @@ void doSync() {
}
int main(int argc, char *argv[]) {
- SRpcInit rpcInit;
+ SRpcInit syn_rpcInit;
char dataName[20] = "server.data";
pCfg = &syncInfo.syncCfg;
initSync();
- memset(&rpcInit, 0, sizeof(rpcInit));
- rpcInit.localPort = 7000;
- rpcInit.label = "SER";
- rpcInit.numOfThreads = 1;
- rpcInit.cfp = processRequestMsg;
- rpcInit.sessions = 1000;
- rpcInit.idleTime = tsShellActivityTimer * 1500;
- rpcInit.afp = retrieveAuthInfo;
+ memset(&syn_rpcInit, 0, sizeof(syn_rpcInit));
+ syn_rpcInit.localPort = 7000;
+ syn_rpcInit.label = "SER";
+ syn_rpcInit.numOfThreads = 1;
+ syn_rpcInit.cfp = processRequestMsg;
+ syn_rpcInit.sessions = 1000;
+ syn_rpcInit.idleTime = tsShellActivityTimer * 1500;
+ syn_rpcInit.afp = retrieveAuthInfo;
for (int i = 1; i < argc; ++i) {
if (strcmp(argv[i], "-p") == 0 && i < argc - 1) {
- rpcInit.localPort = atoi(argv[++i]);
+ syn_rpcInit.localPort = atoi(argv[++i]);
} else if (strcmp(argv[i], "-t") == 0 && i < argc - 1) {
- rpcInit.numOfThreads = atoi(argv[++i]);
+ syn_rpcInit.numOfThreads = atoi(argv[++i]);
} else if (strcmp(argv[i], "-m") == 0 && i < argc - 1) {
msgSize = atoi(argv[++i]);
} else if (strcmp(argv[i], "-s") == 0 && i < argc - 1) {
- rpcInit.sessions = atoi(argv[++i]);
+ syn_rpcInit.sessions = atoi(argv[++i]);
} else if (strcmp(argv[i], "-o") == 0 && i < argc - 1) {
tsCompressMsgSize = atoi(argv[++i]);
} else if (strcmp(argv[i], "-w") == 0 && i < argc - 1) {
@@ -380,9 +380,9 @@ int main(int argc, char *argv[]) {
rpcDebugFlag = atoi(argv[++i]);
} else {
printf("\nusage: %s [options] \n", argv[0]);
- printf(" [-p port]: server port number, default is:%d\n", rpcInit.localPort);
- printf(" [-t threads]: number of rpc threads, default is:%d\n", rpcInit.numOfThreads);
- printf(" [-s sessions]: number of sessions, default is:%d\n", rpcInit.sessions);
+ printf(" [-p port]: server port number, default is:%d\n", syn_rpcInit.localPort);
+ printf(" [-t threads]: number of rpc threads, default is:%d\n", syn_rpcInit.numOfThreads);
+ printf(" [-s sessions]: number of sessions, default is:%d\n", syn_rpcInit.sessions);
printf(" [-m msgSize]: message body size, default is:%d\n", msgSize);
printf(" [-o compSize]: compression message size, default is:%d\n", tsCompressMsgSize);
printf(" [-w write]: write received data to file(0, 1, 2), default is:%d\n", commit);
@@ -401,14 +401,14 @@ int main(int argc, char *argv[]) {
tsAsyncLog = 0;
taosInitLog("server.log", 1000000, 10);
- rpcInit.connType = TAOS_CONN_SERVER;
- void *pRpc = rpcOpen(&rpcInit);
+ syn_rpcInit.connType = TAOS_CONN_SERVER;
+ void *pRpc = rpcOpen(&syn_rpcInit);
if (pRpc == NULL) {
uError("failed to start RPC server");
return -1;
}
- tsSyncPort = rpcInit.localPort + 10;
+ tsSyncPort = syn_rpcInit.localPort + 10;
qhandle = taosOpenQueue();
doSync();
@@ -422,7 +422,7 @@ int main(int argc, char *argv[]) {
return -1;
}
- printf("server is running, localPort:%d\n", rpcInit.localPort);
+ printf("server is running, localPort:%d\n", syn_rpcInit.localPort);
SNodesRole nroles;
while (1) {
diff --git a/src/tsdb/src/tsdbFS.c b/src/tsdb/src/tsdbFS.c
index 70a52621383ec5e1099a815dceefb0b4493c1f9e..22de81c4fe99f97bb3001ac1884d5b2e03efab88 100644
--- a/src/tsdb/src/tsdbFS.c
+++ b/src/tsdb/src/tsdbFS.c
@@ -1164,10 +1164,10 @@ static int tsdbRestoreDFileSet(STsdbRepo *pRepo) {
// Sort the array according to file name
taosArraySort(fArray, tsdbComparTFILE);
- size_t index = 0;
+ size_t tsd_index = 0;
// Loop to recover each file set
for (;;) {
- if (index >= taosArrayGetSize(fArray)) {
+ if (tsd_index >= taosArrayGetSize(fArray)) {
break;
}
@@ -1179,13 +1179,13 @@ static int tsdbRestoreDFileSet(STsdbRepo *pRepo) {
for (TSDB_FILE_T ftype = 0; ftype < TSDB_FILE_MAX; ftype++) {
SDFile *pDFile = TSDB_DFILE_IN_SET(&fset, ftype);
- if (index >= taosArrayGetSize(fArray)) {
+ if (tsd_index >= taosArrayGetSize(fArray)) {
tsdbError("vgId:%d incomplete DFileSet, fid:%d", REPO_ID(pRepo), fset.fid);
taosArrayDestroy(fArray);
return -1;
}
- pf = taosArrayGet(fArray, index);
+ pf = taosArrayGet(fArray, tsd_index);
int tvid, tfid;
TSDB_FILE_T ttype;
@@ -1198,7 +1198,7 @@ static int tsdbRestoreDFileSet(STsdbRepo *pRepo) {
ASSERT(tvid == REPO_ID(pRepo));
if (tfid < pRepo->rtn.minFid) { // skip file expired
- ++index;
+ ++tsd_index;
continue;
}
@@ -1252,7 +1252,7 @@ static int tsdbRestoreDFileSet(STsdbRepo *pRepo) {
}
tsdbCloseDFile(pDFile);
- index++;
+ tsd_index++;
}
tsdbInfo("vgId:%d FSET %d is restored", REPO_ID(pRepo), fset.fid);
diff --git a/src/tsdb/src/tsdbMain.c b/src/tsdb/src/tsdbMain.c
index 6ed638995af5eb617a7cfae45d4618e62b7eb4bf..b09f6ed4b5a107502f1ee87ba065e05a83d80f1c 100644
--- a/src/tsdb/src/tsdbMain.c
+++ b/src/tsdb/src/tsdbMain.c
@@ -330,7 +330,7 @@ int32_t tsdbConfigRepo(STsdbRepo *repo, STsdbCfg *pCfg) {
#endif
}
-uint32_t tsdbGetFileInfo(STsdbRepo *repo, char *name, uint32_t *index, uint32_t eindex, int64_t *size) {
+uint32_t tsdbGetFileInfo(STsdbRepo *repo, char *name, uint32_t *tsd_index, uint32_t eindex, int64_t *size) {
// TODO
return 0;
#if 0
@@ -342,16 +342,16 @@ uint32_t tsdbGetFileInfo(STsdbRepo *repo, char *name, uint32_t *index, uint32_t
struct stat fState;
- tsdbDebug("vgId:%d name:%s index:%d eindex:%d", pRepo->config.tsdbId, name, *index, eindex);
- ASSERT(*index <= eindex);
+ tsdbDebug("vgId:%d name:%s tsd_index:%d eindex:%d", pRepo->config.tsdbId, name, *tsd_index, eindex);
+ ASSERT(*tsd_index <= eindex);
if (name[0] == 0) { // get the file from index or after, but not larger than eindex
- int fid = (*index) / TSDB_FILE_TYPE_MAX;
+ int fid = (*tsd_index) / TSDB_FILE_TYPE_MAX;
if (pFileH->nFGroups == 0 || fid > pFileH->pFGroup[pFileH->nFGroups - 1].fileId) {
- if (*index <= TSDB_META_FILE_INDEX && TSDB_META_FILE_INDEX <= eindex) {
+ if (*tsd_index <= TSDB_META_FILE_INDEX && TSDB_META_FILE_INDEX <= eindex) {
fname = tsdbGetMetaFileName(pRepo->rootDir);
- *index = TSDB_META_FILE_INDEX;
+ *tsd_index = TSDB_META_FILE_INDEX;
magic = TSDB_META_FILE_MAGIC(pRepo->tsdbMeta);
sprintf(name, "tsdb/%s", TSDB_META_FILE_NAME);
} else {
@@ -361,7 +361,7 @@ uint32_t tsdbGetFileInfo(STsdbRepo *repo, char *name, uint32_t *index, uint32_t
SFileGroup *pFGroup =
taosbsearch(&fid, pFileH->pFGroup, pFileH->nFGroups, sizeof(SFileGroup), keyFGroupCompFunc, TD_GE);
if (pFGroup->fileId == fid) {
- SFile *pFile = &pFGroup->files[(*index) % TSDB_FILE_TYPE_MAX];
+ SFile *pFile = &pFGroup->files[(*tsd_index) % TSDB_FILE_TYPE_MAX];
fname = strdup(TSDB_FILE_NAME(pFile));
magic = pFile->info.magic;
char *tfname = strdup(fname);
@@ -371,7 +371,7 @@ uint32_t tsdbGetFileInfo(STsdbRepo *repo, char *name, uint32_t *index, uint32_t
if ((pFGroup->fileId + 1) * TSDB_FILE_TYPE_MAX - 1 < (int)eindex) {
SFile *pFile = &pFGroup->files[0];
fname = strdup(TSDB_FILE_NAME(pFile));
- *index = pFGroup->fileId * TSDB_FILE_TYPE_MAX;
+ *tsd_index = pFGroup->fileId * TSDB_FILE_TYPE_MAX;
magic = pFile->info.magic;
char *tfname = strdup(fname);
sprintf(name, "tsdb/%s/%s", TSDB_DATA_DIR_NAME, basename(tfname));
@@ -388,7 +388,7 @@ uint32_t tsdbGetFileInfo(STsdbRepo *repo, char *name, uint32_t *index, uint32_t
tfree(fname);
return 0;
}
- if (*index == TSDB_META_FILE_INDEX) { // get meta file
+ if (*tsd_index == TSDB_META_FILE_INDEX) { // get meta file
tsdbGetStoreInfo(fname, &magic, size);
} else {
char tfname[TSDB_FILENAME_LEN] = "\0";
@@ -646,9 +646,9 @@ static int tsdbRestoreLastColumns(STsdbRepo *pRepo, STable *pTable, SReadH* pRea
int numColumns;
int32_t blockIdx;
SDataStatis* pBlockStatis = NULL;
- SMemRow row = NULL;
+ // SMemRow row = NULL;
// restore last column data with last schema
-
+
int err = 0;
numColumns = schemaNCols(pSchema);
@@ -662,17 +662,17 @@ static int tsdbRestoreLastColumns(STsdbRepo *pRepo, STable *pTable, SReadH* pRea
}
}
- row = taosTMalloc(memRowMaxBytesFromSchema(pSchema));
- if (row == NULL) {
- terrno = TSDB_CODE_TDB_OUT_OF_MEMORY;
- err = -1;
- goto out;
- }
+ // row = taosTMalloc(memRowMaxBytesFromSchema(pSchema));
+ // if (row == NULL) {
+ // terrno = TSDB_CODE_TDB_OUT_OF_MEMORY;
+ // err = -1;
+ // goto out;
+ // }
- memRowSetType(row, SMEM_ROW_DATA);
- tdInitDataRow(memRowDataBody(row), pSchema);
+ // memRowSetType(row, SMEM_ROW_DATA);
+ // tdInitDataRow(memRowDataBody(row), pSchema);
- // first load block index info
+ // first load block tsd_index info
if (tsdbLoadBlockInfo(pReadh, NULL) < 0) {
err = -1;
goto out;
@@ -728,10 +728,11 @@ static int tsdbRestoreLastColumns(STsdbRepo *pRepo, STable *pTable, SReadH* pRea
for (int32_t rowId = pBlock->numOfRows - 1; rowId >= 0; rowId--) {
SDataCol *pDataCol = pReadh->pDCols[0]->cols + i;
const void* pColData = tdGetColDataOfRow(pDataCol, rowId);
- tdAppendColVal(memRowDataBody(row), pColData, pCol->type, pCol->offset);
- //SDataCol *pDataCol = readh.pDCols[0]->cols + j;
- void *value = tdGetRowDataOfCol(memRowDataBody(row), (int8_t)pCol->type, TD_DATA_ROW_HEAD_SIZE + pCol->offset);
- if (isNull(value, pCol->type)) {
+ // tdAppendColVal(memRowDataBody(row), pColData, pCol->type, pCol->offset);
+ // SDataCol *pDataCol = readh.pDCols[0]->cols + j;
+ // void *value = tdGetRowDataOfCol(memRowDataBody(row), (int8_t)pCol->type, TD_DATA_ROW_HEAD_SIZE +
+ // pCol->offset);
+ if (isNull(pColData, pCol->type)) {
continue;
}
@@ -746,14 +747,15 @@ static int tsdbRestoreLastColumns(STsdbRepo *pRepo, STable *pTable, SReadH* pRea
pLastCol->pData = malloc(bytes);
pLastCol->bytes = bytes;
pLastCol->colId = pCol->colId;
- memcpy(pLastCol->pData, value, bytes);
+ memcpy(pLastCol->pData, pColData, bytes);
// save row ts(in column 0)
pDataCol = pReadh->pDCols[0]->cols + 0;
- pCol = schemaColAt(pSchema, 0);
- tdAppendColVal(memRowDataBody(row), tdGetColDataOfRow(pDataCol, rowId), pCol->type, pCol->offset);
- pLastCol->ts = memRowKey(row);
-
+ // pCol = schemaColAt(pSchema, 0);
+ // tdAppendColVal(memRowDataBody(row), tdGetColDataOfRow(pDataCol, rowId), pCol->type, pCol->offset);
+ // pLastCol->ts = memRowKey(row);
+ pLastCol->ts = tdGetKey(*(TKEY *)(tdGetColDataOfRow(pDataCol, rowId)));
+
pTable->restoreColumnNum += 1;
tsdbDebug("tsdbRestoreLastColumns restore vgId:%d,table:%s cache column %d, %" PRId64, REPO_ID(pRepo), pTable->name->data, pLastCol->colId, pLastCol->ts);
@@ -764,7 +766,7 @@ static int tsdbRestoreLastColumns(STsdbRepo *pRepo, STable *pTable, SReadH* pRea
}
out:
- taosTZfree(row);
+ // taosTZfree(row);
tfree(pBlockStatis);
if (err == 0 && numColumns <= pTable->restoreColumnNum) {
diff --git a/src/tsdb/src/tsdbMeta.c b/src/tsdb/src/tsdbMeta.c
index 3bff7741c51516fc6ad0c30715eb1edd6f8a31c3..c1ccff8bb01116441fbdd4b156a8077a862fa89a 100644
--- a/src/tsdb/src/tsdbMeta.c
+++ b/src/tsdb/src/tsdbMeta.c
@@ -26,13 +26,13 @@ static void tsdbRemoveTableFromMeta(STsdbRepo *pRepo, STable *pTable, bool rm
static int tsdbAddTableIntoIndex(STsdbMeta *pMeta, STable *pTable, bool refSuper);
static int tsdbRemoveTableFromIndex(STsdbMeta *pMeta, STable *pTable);
static int tsdbInitTableCfg(STableCfg *config, ETableType type, uint64_t uid, int32_t tid);
-static int tsdbTableSetSchema(STableCfg *config, STSchema *pSchema, bool dup);
-static int tsdbTableSetName(STableCfg *config, char *name, bool dup);
-static int tsdbTableSetTagSchema(STableCfg *config, STSchema *pSchema, bool dup);
-static int tsdbTableSetSName(STableCfg *config, char *sname, bool dup);
+static int tsdbTableSetSchema(STableCfg *config, STSchema *pSchema, bool tsdb_dup);
+static int tsdbTableSetName(STableCfg *config, char *name, bool tsdb_dup);
+static int tsdbTableSetTagSchema(STableCfg *config, STSchema *pSchema, bool tsdb_dup);
+static int tsdbTableSetSName(STableCfg *config, char *sname, bool tsdb_dup);
static int tsdbTableSetSuperUid(STableCfg *config, uint64_t uid);
-static int tsdbTableSetTagValue(STableCfg *config, SKVRow row, bool dup);
-static int tsdbTableSetStreamSql(STableCfg *config, char *sql, bool dup);
+static int tsdbTableSetTagValue(STableCfg *config, SKVRow row, bool tsdb_dup);
+static int tsdbTableSetStreamSql(STableCfg *config, char *sql, bool tsdb_dup);
static int tsdbEncodeTableName(void **buf, tstr *name);
static void * tsdbDecodeTableName(void *buf, tstr **name);
static int tsdbEncodeTable(void **buf, STable *pTable);
@@ -1089,8 +1089,8 @@ static int tsdbInitTableCfg(STableCfg *config, ETableType type, uint64_t uid, in
return 0;
}
-static int tsdbTableSetSchema(STableCfg *config, STSchema *pSchema, bool dup) {
- if (dup) {
+static int tsdbTableSetSchema(STableCfg *config, STSchema *pSchema, bool tsdb_dup) {
+ if (tsdb_dup) {
config->schema = tdDupSchema(pSchema);
if (config->schema == NULL) {
terrno = TSDB_CODE_TDB_OUT_OF_MEMORY;
@@ -1102,8 +1102,8 @@ static int tsdbTableSetSchema(STableCfg *config, STSchema *pSchema, bool dup) {
return 0;
}
-static int tsdbTableSetName(STableCfg *config, char *name, bool dup) {
- if (dup) {
+static int tsdbTableSetName(STableCfg *config, char *name, bool tsdb_dup) {
+ if (tsdb_dup) {
config->name = strdup(name);
if (config->name == NULL) {
terrno = TSDB_CODE_TDB_OUT_OF_MEMORY;
@@ -1116,13 +1116,13 @@ static int tsdbTableSetName(STableCfg *config, char *name, bool dup) {
return 0;
}
-static int tsdbTableSetTagSchema(STableCfg *config, STSchema *pSchema, bool dup) {
+static int tsdbTableSetTagSchema(STableCfg *config, STSchema *pSchema, bool tsdb_dup) {
if (config->type != TSDB_CHILD_TABLE) {
terrno = TSDB_CODE_TDB_INVALID_CREATE_TB_MSG;
return -1;
}
- if (dup) {
+ if (tsdb_dup) {
config->tagSchema = tdDupSchema(pSchema);
if (config->tagSchema == NULL) {
terrno = TSDB_CODE_TDB_OUT_OF_MEMORY;
@@ -1134,13 +1134,13 @@ static int tsdbTableSetTagSchema(STableCfg *config, STSchema *pSchema, bool dup)
return 0;
}
-static int tsdbTableSetSName(STableCfg *config, char *sname, bool dup) {
+static int tsdbTableSetSName(STableCfg *config, char *sname, bool tsdb_dup) {
if (config->type != TSDB_CHILD_TABLE) {
terrno = TSDB_CODE_TDB_INVALID_CREATE_TB_MSG;
return -1;
}
- if (dup) {
+ if (tsdb_dup) {
config->sname = strdup(sname);
if (config->sname == NULL) {
terrno = TSDB_CODE_TDB_OUT_OF_MEMORY;
@@ -1162,13 +1162,13 @@ static int tsdbTableSetSuperUid(STableCfg *config, uint64_t uid) {
return 0;
}
-static int tsdbTableSetTagValue(STableCfg *config, SKVRow row, bool dup) {
+static int tsdbTableSetTagValue(STableCfg *config, SKVRow row, bool tsdb_dup) {
if (config->type != TSDB_CHILD_TABLE) {
terrno = TSDB_CODE_TDB_INVALID_CREATE_TB_MSG;
return -1;
}
- if (dup) {
+ if (tsdb_dup) {
config->tagValues = tdKVRowDup(row);
if (config->tagValues == NULL) {
terrno = TSDB_CODE_TDB_OUT_OF_MEMORY;
@@ -1181,13 +1181,13 @@ static int tsdbTableSetTagValue(STableCfg *config, SKVRow row, bool dup) {
return 0;
}
-static int tsdbTableSetStreamSql(STableCfg *config, char *sql, bool dup) {
+static int tsdbTableSetStreamSql(STableCfg *config, char *sql, bool tsdb_dup) {
if (config->type != TSDB_STREAM_TABLE) {
terrno = TSDB_CODE_TDB_INVALID_CREATE_TB_MSG;
return -1;
}
- if (dup) {
+ if (tsdb_dup) {
config->sql = strdup(sql);
if (config->sql == NULL) {
terrno = TSDB_CODE_TDB_OUT_OF_MEMORY;
diff --git a/src/tsdb/src/tsdbRead.c b/src/tsdb/src/tsdbRead.c
index 5d5f9d191ab19616b5bdc3b865fb73668ff278be..83192f2b68678e165dade5f76674d4dfbfe309e8 100644
--- a/src/tsdb/src/tsdbRead.c
+++ b/src/tsdb/src/tsdbRead.c
@@ -1059,10 +1059,10 @@ static int32_t binarySearchForBlock(SBlock* pBlock, int32_t numOfBlocks, TSKEY s
return midSlot;
}
-static int32_t loadBlockInfo(STsdbQueryHandle * pQueryHandle, int32_t index, int32_t* numOfBlocks) {
+static int32_t loadBlockInfo(STsdbQueryHandle * pQueryHandle, int32_t tsd_index, int32_t* numOfBlocks) {
int32_t code = 0;
- STableCheckInfo* pCheckInfo = taosArrayGet(pQueryHandle->pTableCheckInfo, index);
+ STableCheckInfo* pCheckInfo = taosArrayGet(pQueryHandle->pTableCheckInfo, tsd_index);
pCheckInfo->numOfBlocks = 0;
if (tsdbSetReadTable(&pQueryHandle->rhelper, pCheckInfo->pTableObj) != TSDB_CODE_SUCCESS) {
@@ -1385,66 +1385,63 @@ static int32_t loadFileDataBlock(STsdbQueryHandle* pQueryHandle, SBlock* pBlock,
return code;
}
-static int doBinarySearchKey(char* pValue, int num, TSKEY key, int order) {
- int firstPos, lastPos, midPos = -1;
- int numOfRows;
- TSKEY* keyList;
-
- assert(order == TSDB_ORDER_ASC || order == TSDB_ORDER_DESC);
-
- if (num <= 0) return -1;
-
- keyList = (TSKEY*)pValue;
- firstPos = 0;
- lastPos = num - 1;
-
- if (order == TSDB_ORDER_DESC) {
+// search last keyList[ret] < key order asc and keyList[ret] > key order desc
+static int doBinarySearchKey(TSKEY* keyList, int num, int pos, TSKEY key, int order) {
+ // start end posistion
+ int s, e;
+ s = pos;
+
+ // check
+ assert(pos >=0 && pos < num);
+ assert(num > 0);
+
+ if (order == TSDB_ORDER_ASC) {
// find the first position which is smaller than the key
+ e = num - 1;
+ if (key < keyList[pos])
+ return -1;
while (1) {
- if (key >= keyList[lastPos]) return lastPos;
- if (key == keyList[firstPos]) return firstPos;
- if (key < keyList[firstPos]) return firstPos - 1;
-
- numOfRows = lastPos - firstPos + 1;
- midPos = (numOfRows >> 1) + firstPos;
-
- if (key < keyList[midPos]) {
- lastPos = midPos - 1;
- } else if (key > keyList[midPos]) {
- firstPos = midPos + 1;
- } else {
- break;
- }
- }
-
- } else {
+ // check can return
+ if (key >= keyList[e])
+ return e;
+ if (key <= keyList[s])
+ return s;
+ if (e - s <= 1)
+ return s;
+
+ // change start or end position
+ int mid = s + (e - s + 1)/2;
+ if (keyList[mid] > key)
+ e = mid;
+ else if(keyList[mid] < key)
+ s = mid;
+ else
+ return mid;
+ }
+ } else { // DESC
// find the first position which is bigger than the key
- while (1) {
- if (key <= keyList[firstPos]) return firstPos;
- if (key == keyList[lastPos]) return lastPos;
-
- if (key > keyList[lastPos]) {
- lastPos = lastPos + 1;
- if (lastPos >= num)
- return -1;
+ e = 0;
+ if (key > keyList[pos])
+ return -1;
+ while (1) {
+ // check can return
+ if (key <= keyList[e])
+ return e;
+ if (key >= keyList[s])
+ return s;
+ if (s - e <= 1)
+ return s;
+
+ // change start or end position
+ int mid = s - (s - e + 1)/2;
+ if (keyList[mid] < key)
+ e = mid;
+ else if(keyList[mid] > key)
+ s = mid;
else
- return lastPos;
- }
-
- numOfRows = lastPos - firstPos + 1;
- midPos = (numOfRows >> 1) + firstPos;
-
- if (key < keyList[midPos]) {
- lastPos = midPos - 1;
- } else if (key > keyList[midPos]) {
- firstPos = midPos + 1;
- } else {
- break;
- }
+ return mid;
+ }
}
- }
-
- return midPos;
}
static int32_t doCopyRowsFromFileBlock(STsdbQueryHandle* pQueryHandle, int32_t capacity, int32_t numOfRows, int32_t start, int32_t end) {
@@ -1852,7 +1849,6 @@ static void copyAllRemainRowsFromFileBlock(STsdbQueryHandle* pQueryHandle, STabl
int32_t getEndPosInDataBlock(STsdbQueryHandle* pQueryHandle, SDataBlockInfo* pBlockInfo) {
// NOTE: reverse the order to find the end position in data block
int32_t endPos = -1;
- int32_t order = ASCENDING_TRAVERSE(pQueryHandle->order)? TSDB_ORDER_DESC : TSDB_ORDER_ASC;
SQueryFilePos* cur = &pQueryHandle->cur;
SDataCols* pCols = pQueryHandle->rhelper.pDCols[0];
@@ -1865,7 +1861,9 @@ int32_t getEndPosInDataBlock(STsdbQueryHandle* pQueryHandle, SDataBlockInfo* pBl
cur->mixBlock = (cur->pos != pBlockInfo->rows - 1);
} else {
assert(pCols->numOfRows > 0);
- endPos = doBinarySearchKey(pCols->cols[0].pData, pCols->numOfRows, pQueryHandle->window.ekey, order);
+ int pos = ASCENDING_TRAVERSE(pQueryHandle->order)? 0 : pBlockInfo->rows - 1;
+ endPos = doBinarySearchKey(pCols->cols[0].pData, pCols->numOfRows, pos, pQueryHandle->window.ekey, pQueryHandle->order);
+ assert(endPos != -1);
cur->mixBlock = true;
}
@@ -1885,17 +1883,16 @@ static void doMergeTwoLevelData(STsdbQueryHandle* pQueryHandle, STableCheckInfo*
assert(pCols->cols[0].type == TSDB_DATA_TYPE_TIMESTAMP && pCols->cols[0].colId == PRIMARYKEY_TIMESTAMP_COL_INDEX &&
cur->pos >= 0 && cur->pos < pBlock->numOfRows);
- TSKEY* tsArray = pCols->cols[0].pData;
- assert(pCols->numOfRows == pBlock->numOfRows && tsArray[0] == pBlock->keyFirst && tsArray[pBlock->numOfRows-1] == pBlock->keyLast);
-
- // for search the endPos, so the order needs to reverse
- int32_t order = (pQueryHandle->order == TSDB_ORDER_ASC)? TSDB_ORDER_DESC:TSDB_ORDER_ASC;
+ // key read from file
+ TSKEY* keyFile = pCols->cols[0].pData;
+ assert(pCols->numOfRows == pBlock->numOfRows && keyFile[0] == pBlock->keyFirst && keyFile[pBlock->numOfRows-1] == pBlock->keyLast);
int32_t step = ASCENDING_TRAVERSE(pQueryHandle->order)? 1:-1;
int32_t numOfCols = (int32_t)(QH_GET_NUM_OF_COLS(pQueryHandle));
STable* pTable = pCheckInfo->pTableObj;
int32_t endPos = getEndPosInDataBlock(pQueryHandle, &blockInfo);
+
tsdbDebug("%p uid:%" PRIu64",tid:%d start merge data block, file block range:%"PRIu64"-%"PRIu64" rows:%d, start:%d,"
"end:%d, 0x%"PRIx64,
@@ -1910,6 +1907,7 @@ static void doMergeTwoLevelData(STsdbQueryHandle* pQueryHandle, STableCheckInfo*
STSchema* pSchema1 = NULL;
STSchema* pSchema2 = NULL;
+ // position in file ->fpos
int32_t pos = cur->pos;
cur->win = TSWINDOW_INITIALIZER;
@@ -1926,19 +1924,23 @@ static void doMergeTwoLevelData(STsdbQueryHandle* pQueryHandle, STableCheckInfo*
break;
}
- TSKEY key = memRowKey(row1);
- if ((key > pQueryHandle->window.ekey && ASCENDING_TRAVERSE(pQueryHandle->order)) ||
- (key < pQueryHandle->window.ekey && !ASCENDING_TRAVERSE(pQueryHandle->order))) {
+ TSKEY keyMem = memRowKey(row1);
+ if ((keyMem > pQueryHandle->window.ekey && ASCENDING_TRAVERSE(pQueryHandle->order)) ||
+ (keyMem < pQueryHandle->window.ekey && !ASCENDING_TRAVERSE(pQueryHandle->order))) {
break;
}
- if (((pos > endPos || tsArray[pos] > pQueryHandle->window.ekey) && ASCENDING_TRAVERSE(pQueryHandle->order)) ||
- ((pos < endPos || tsArray[pos] < pQueryHandle->window.ekey) && !ASCENDING_TRAVERSE(pQueryHandle->order))) {
- break;
+ // break if pos not in this block endPos range. note old code when pos is -1 can crash.
+ if(ASCENDING_TRAVERSE(pQueryHandle->order)) { //ASC
+ if(pos > endPos || keyFile[pos] > pQueryHandle->window.ekey)
+ break;
+ } else { //DESC
+ if(pos < endPos || keyFile[pos] < pQueryHandle->window.ekey)
+ break;
}
- if ((key < tsArray[pos] && ASCENDING_TRAVERSE(pQueryHandle->order)) ||
- (key > tsArray[pos] && !ASCENDING_TRAVERSE(pQueryHandle->order))) {
+ if ((keyMem < keyFile[pos] && ASCENDING_TRAVERSE(pQueryHandle->order)) ||
+ (keyMem > keyFile[pos] && !ASCENDING_TRAVERSE(pQueryHandle->order))) {
if (rv1 != memRowVersion(row1)) {
pSchema1 = tsdbGetTableSchemaByVersion(pTable, memRowVersion(row1), (int8_t)memRowType(row1));
rv1 = memRowVersion(row1);
@@ -1950,16 +1952,18 @@ static void doMergeTwoLevelData(STsdbQueryHandle* pQueryHandle, STableCheckInfo*
mergeTwoRowFromMem(pQueryHandle, pQueryHandle->outputCapacity, numOfRows, row1, row2, numOfCols, pTable, pSchema1, pSchema2, true);
numOfRows += 1;
+ // record start key with memory key if not
if (cur->win.skey == TSKEY_INITIAL_VAL) {
- cur->win.skey = key;
+ cur->win.skey = keyMem;
}
- cur->win.ekey = key;
- cur->lastKey = key + step;
+ cur->win.ekey = keyMem;
+ cur->lastKey = keyMem + step;
cur->mixBlock = true;
moveToNextRowInMem(pCheckInfo);
- } else if (key == tsArray[pos]) { // data in buffer has the same timestamp of data in file block, ignore it
+ // same select mem key if update is true
+ } else if (keyMem == keyFile[pos]) {
if (pCfg->update) {
if(pCfg->update == TD_ROW_PARTIAL_UPDATE) {
doCopyRowsFromFileBlock(pQueryHandle, pQueryHandle->outputCapacity, numOfRows, pos, pos);
@@ -1977,31 +1981,36 @@ static void doMergeTwoLevelData(STsdbQueryHandle* pQueryHandle, STableCheckInfo*
mergeTwoRowFromMem(pQueryHandle, pQueryHandle->outputCapacity, numOfRows, row1, row2, numOfCols, pTable, pSchema1, pSchema2, forceSetNull);
numOfRows += 1;
if (cur->win.skey == TSKEY_INITIAL_VAL) {
- cur->win.skey = key;
+ cur->win.skey = keyMem;
}
- cur->win.ekey = key;
- cur->lastKey = key + step;
+ cur->win.ekey = keyMem;
+ cur->lastKey = keyMem + step;
cur->mixBlock = true;
-
+
+ //mem move next
moveToNextRowInMem(pCheckInfo);
+ //file move next, discard file row
pos += step;
} else {
+ // not update, only mem move to next, discard mem row
moveToNextRowInMem(pCheckInfo);
}
- } else if ((key > tsArray[pos] && ASCENDING_TRAVERSE(pQueryHandle->order)) ||
- (key < tsArray[pos] && !ASCENDING_TRAVERSE(pQueryHandle->order))) {
+ // put file row
+ } else if ((keyMem > keyFile[pos] && ASCENDING_TRAVERSE(pQueryHandle->order)) ||
+ (keyMem < keyFile[pos] && !ASCENDING_TRAVERSE(pQueryHandle->order))) {
if (cur->win.skey == TSKEY_INITIAL_VAL) {
- cur->win.skey = tsArray[pos];
+ cur->win.skey = keyFile[pos];
}
- int32_t end = doBinarySearchKey(pCols->cols[0].pData, pCols->numOfRows, key, order);
+ int32_t end = doBinarySearchKey(pCols->cols[0].pData, pCols->numOfRows, pos, keyMem, pQueryHandle->order);
assert(end != -1);
- if (tsArray[end] == key) { // the value of key in cache equals to the end timestamp value, ignore it
+ if (keyFile[end] == keyMem) { // the value of key in cache equals to the end timestamp value, ignore it
if (pCfg->update == TD_ROW_DISCARD_UPDATE) {
moveToNextRowInMem(pCheckInfo);
} else {
+ // can update, don't copy then deal on next loop with keyMem == keyFile[pos]
end -= step;
}
}
@@ -2009,10 +2018,17 @@ static void doMergeTwoLevelData(STsdbQueryHandle* pQueryHandle, STableCheckInfo*
int32_t qstart = 0, qend = 0;
getQualifiedRowsPos(pQueryHandle, pos, end, numOfRows, &qstart, &qend);
- numOfRows = doCopyRowsFromFileBlock(pQueryHandle, pQueryHandle->outputCapacity, numOfRows, qstart, qend);
- pos += (qend - qstart + 1) * step;
-
- cur->win.ekey = ASCENDING_TRAVERSE(pQueryHandle->order)? tsArray[qend]:tsArray[qstart];
+ if(qend >= qstart) {
+ // copy qend - qstart + 1 rows from file
+ numOfRows = doCopyRowsFromFileBlock(pQueryHandle, pQueryHandle->outputCapacity, numOfRows, qstart, qend);
+ int32_t num = qend - qstart + 1;
+ pos += num * step;
+ } else {
+ // nothing copy from file
+ pos += step;
+ }
+
+ cur->win.ekey = ASCENDING_TRAVERSE(pQueryHandle->order)? keyFile[qend] : keyFile[qstart];
cur->lastKey = cur->win.ekey + step;
}
} while (numOfRows < pQueryHandle->outputCapacity);
@@ -2029,7 +2045,7 @@ static void doMergeTwoLevelData(STsdbQueryHandle* pQueryHandle, STableCheckInfo*
!ASCENDING_TRAVERSE(pQueryHandle->order))) {
// no data in cache or data in cache is greater than the ekey of time window, load data from file block
if (cur->win.skey == TSKEY_INITIAL_VAL) {
- cur->win.skey = tsArray[pos];
+ cur->win.skey = keyFile[pos];
}
int32_t start = -1, end = -1;
@@ -2038,7 +2054,7 @@ static void doMergeTwoLevelData(STsdbQueryHandle* pQueryHandle, STableCheckInfo*
numOfRows = doCopyRowsFromFileBlock(pQueryHandle, pQueryHandle->outputCapacity, numOfRows, start, end);
pos += (end - start + 1) * step;
- cur->win.ekey = ASCENDING_TRAVERSE(pQueryHandle->order)? tsArray[end]:tsArray[start];
+ cur->win.ekey = ASCENDING_TRAVERSE(pQueryHandle->order)? keyFile[end] : keyFile[start];
cur->lastKey = cur->win.ekey + step;
cur->mixBlock = true;
}
@@ -2255,10 +2271,10 @@ static int32_t createDataBlocksInfo(STsdbQueryHandle* pQueryHandle, int32_t numO
while (numOfTotal < cnt) {
int32_t pos = pTree->pNode[0].index;
- int32_t index = sup.blockIndexArray[pos]++;
+ int32_t tsd_index = sup.blockIndexArray[pos]++;
STableBlockInfo* pBlocksInfo = sup.pDataBlockInfo[pos];
- pQueryHandle->pDataBlockInfo[numOfTotal++] = pBlocksInfo[index];
+ pQueryHandle->pDataBlockInfo[numOfTotal++] = pBlocksInfo[tsd_index];
// set data block index overflow, in order to disable the offset comparator
if (sup.blockIndexArray[pos] >= sup.numOfBlocksPerTable[pos]) {
@@ -2941,7 +2957,7 @@ static bool loadDataBlockFromTableSeq(STsdbQueryHandle* pQueryHandle) {
size_t numOfTables = taosArrayGetSize(pQueryHandle->pTableCheckInfo);
assert(numOfTables > 0);
- int64_t stime = taosGetTimestampUs();
+ int64_t tsd_stime = taosGetTimestampUs();
while(pQueryHandle->activeIndex < numOfTables) {
if (loadBlockOfActiveTable(pQueryHandle)) {
@@ -2959,7 +2975,7 @@ static bool loadDataBlockFromTableSeq(STsdbQueryHandle* pQueryHandle) {
terrno = TSDB_CODE_SUCCESS;
- int64_t elapsedTime = taosGetTimestampUs() - stime;
+ int64_t elapsedTime = taosGetTimestampUs() - tsd_stime;
pQueryHandle->cost.checkForNextTime += elapsedTime;
}
@@ -2969,14 +2985,17 @@ static bool loadDataBlockFromTableSeq(STsdbQueryHandle* pQueryHandle) {
// handle data in cache situation
bool tsdbNextDataBlock(TsdbQueryHandleT pHandle) {
STsdbQueryHandle* pQueryHandle = (STsdbQueryHandle*) pHandle;
+ if (pQueryHandle == NULL) {
+ return false;
+ }
if (emptyQueryTimewindow(pQueryHandle)) {
tsdbDebug("%p query window not overlaps with the data set, no result returned, 0x%"PRIx64, pQueryHandle, pQueryHandle->qId);
return false;
}
- int64_t stime = taosGetTimestampUs();
- int64_t elapsedTime = stime;
+ int64_t tsd_stime = taosGetTimestampUs();
+ int64_t elapsedTime = tsd_stime;
// TODO refactor: remove "type"
if (pQueryHandle->type == TSDB_QUERY_TYPE_LAST) {
@@ -3003,7 +3022,7 @@ bool tsdbNextDataBlock(TsdbQueryHandleT pHandle) {
}
if (exists) {
- pQueryHandle->cost.checkForNextTime += (taosGetTimestampUs() - stime);
+ pQueryHandle->cost.checkForNextTime += (taosGetTimestampUs() - tsd_stime);
return exists;
}
@@ -3015,7 +3034,7 @@ bool tsdbNextDataBlock(TsdbQueryHandleT pHandle) {
bool ret = doHasDataInBuffer(pQueryHandle);
terrno = TSDB_CODE_SUCCESS;
- elapsedTime = taosGetTimestampUs() - stime;
+ elapsedTime = taosGetTimestampUs() - tsd_stime;
pQueryHandle->cost.checkForNextTime += elapsedTime;
return ret;
}
@@ -3088,6 +3107,9 @@ static int32_t doGetExternalRow(STsdbQueryHandle* pQueryHandle, int16_t type, SM
pSecQueryHandle = tsdbQueryTablesImpl(pQueryHandle->pTsdb, &cond, pQueryHandle->qId, pMemRef);
tfree(cond.colList);
+ if (pSecQueryHandle == NULL) {
+ goto out_of_memory;
+ }
// current table, only one table
STableCheckInfo* pCurrent = taosArrayGet(pQueryHandle->pTableCheckInfo, pQueryHandle->activeIndex);
@@ -3361,7 +3383,7 @@ int32_t tsdbRetrieveDataBlockStatisInfo(TsdbQueryHandleT* pQueryHandle, SDataSta
return TSDB_CODE_SUCCESS;
}
- int64_t stime = taosGetTimestampUs();
+ int64_t tsd_stime = taosGetTimestampUs();
if (tsdbLoadBlockStatis(&pHandle->rhelper, pBlockInfo->compBlock) < 0) {
return terrno;
}
@@ -3391,7 +3413,7 @@ int32_t tsdbRetrieveDataBlockStatisInfo(TsdbQueryHandleT* pQueryHandle, SDataSta
}
}
- int64_t elapsed = taosGetTimestampUs() - stime;
+ int64_t elapsed = taosGetTimestampUs() - tsd_stime;
pHandle->cost.statisInfoLoadTime += elapsed;
*pBlockStatis = pHandle->statis;
diff --git a/src/util/CMakeLists.txt b/src/util/CMakeLists.txt
index ef304d2fcbcb3a823e2c8253ca578de551499151..7ba87691cc7b926d558d0feed73dc4d6263adab2 100644
--- a/src/util/CMakeLists.txt
+++ b/src/util/CMakeLists.txt
@@ -15,7 +15,9 @@ TARGET_LINK_LIBRARIES(tutil pthread os lz4 z rmonotonic ${VAR_TSZ} )
IF (TD_LINUX)
TARGET_LINK_LIBRARIES(tutil m rt)
- ADD_SUBDIRECTORY(tests)
+ IF (NOT TD_NINGSI_60)
+ ADD_SUBDIRECTORY(tests)
+ ENDIF ()
FIND_PATH(ICONV_INCLUDE_EXIST iconv.h /usr/include/ /usr/local/include/)
IF (ICONV_INCLUDE_EXIST)
diff --git a/src/util/src/hash.c b/src/util/src/hash.c
index b6696810c12371bb8269149d082ad6890ddc4dd4..cda5f8a6625a34fe7c548027ade95c2079bdcad4 100644
--- a/src/util/src/hash.c
+++ b/src/util/src/hash.c
@@ -209,7 +209,7 @@ int32_t taosHashGetSize(const SHashObj *pHashObj) {
if (!pHashObj) {
return 0;
}
- return (int32_t)atomic_load_64(&pHashObj->size);
+ return (int32_t)atomic_load_64((volatile uint64_t *)&pHashObj->size);
}
static FORCE_INLINE bool taosHashTableEmpty(const SHashObj *pHashObj) {
diff --git a/src/util/src/tarray.c b/src/util/src/tarray.c
index 2d6c513cb57ce1d524a1fb69df68702e624ede7b..2af495be8139e5358da61936ad3e5710894ad6d7 100644
--- a/src/util/src/tarray.c
+++ b/src/util/src/tarray.c
@@ -179,15 +179,15 @@ void* taosArrayPop(SArray* pArray) {
return TARRAY_GET_ELEM(pArray, pArray->size);
}
-void* taosArrayGet(const SArray* pArray, size_t index) {
- assert(index < pArray->size);
- return TARRAY_GET_ELEM(pArray, index);
+void* taosArrayGet(const SArray* pArray, size_t utl_index) {
+ assert(utl_index < pArray->size);
+ return TARRAY_GET_ELEM(pArray, utl_index);
}
-void* taosArrayGetP(const SArray* pArray, size_t index) {
- assert(index < pArray->size);
+void* taosArrayGetP(const SArray* pArray, size_t utl_index) {
+ assert(utl_index < pArray->size);
- void* d = TARRAY_GET_ELEM(pArray, index);
+ void* d = TARRAY_GET_ELEM(pArray, utl_index);
return *(void**)d;
}
@@ -203,12 +203,12 @@ void taosArraySetSize(SArray* pArray, size_t size) {
pArray->size = size;
}
-void* taosArrayInsert(SArray* pArray, size_t index, void* pData) {
+void* taosArrayInsert(SArray* pArray, size_t utl_index, void* pData) {
if (pArray == NULL || pData == NULL) {
return NULL;
}
- if (index >= pArray->size) {
+ if (utl_index >= pArray->size) {
return taosArrayPush(pArray, pData);
}
@@ -220,9 +220,9 @@ void* taosArrayInsert(SArray* pArray, size_t index, void* pData) {
}
}
- void* dst = TARRAY_GET_ELEM(pArray, index);
+ void* dst = TARRAY_GET_ELEM(pArray, utl_index);
- int32_t remain = (int32_t)(pArray->size - index);
+ int32_t remain = (int32_t)(pArray->size - utl_index);
memmove((char*)dst + pArray->elemSize, (char*)dst, pArray->elemSize * remain);
memcpy(dst, pData, pArray->elemSize);
@@ -231,21 +231,21 @@ void* taosArrayInsert(SArray* pArray, size_t index, void* pData) {
return dst;
}
-void taosArraySet(SArray* pArray, size_t index, void* pData) {
- assert(index < pArray->size);
- memcpy(TARRAY_GET_ELEM(pArray, index), pData, pArray->elemSize);
+void taosArraySet(SArray* pArray, size_t utl_index, void* pData) {
+ assert(utl_index < pArray->size);
+ memcpy(TARRAY_GET_ELEM(pArray, utl_index), pData, pArray->elemSize);
}
-void taosArrayRemove(SArray* pArray, size_t index) {
- assert(index < pArray->size);
+void taosArrayRemove(SArray* pArray, size_t utl_index) {
+ assert(utl_index < pArray->size);
- if (index == pArray->size - 1) {
+ if (utl_index == pArray->size - 1) {
taosArrayPop(pArray);
return;
}
- size_t remain = pArray->size - index - 1;
- memmove((char*)pArray->pData + index * pArray->elemSize, (char*)pArray->pData + (index + 1) * pArray->elemSize, remain * pArray->elemSize);
+ size_t remain = pArray->size - utl_index - 1;
+ memmove((char*)pArray->pData + utl_index * pArray->elemSize, (char*)pArray->pData + (utl_index + 1) * pArray->elemSize, remain * pArray->elemSize);
pArray->size -= 1;
}
diff --git a/src/util/src/tcache.c b/src/util/src/tcache.c
index 776a0ad9c83c0f133a23f4f2832acd473ed6ccec..1bb2c7070dafa875afcf836174f337147a93ae7c 100644
--- a/src/util/src/tcache.c
+++ b/src/util/src/tcache.c
@@ -615,9 +615,9 @@ void taosTrashcanEmpty(SCacheObj *pCacheObj, bool force) {
return;
}
- const char* stat[] = {"false", "true"};
+ const char* utl_stat[] = {"false", "true"};
uDebug("cache:%s start to cleanup trashcan, numOfElem in trashcan:%d, free:%s", pCacheObj->name,
- pCacheObj->numOfElemsInTrash, (force? stat[1]:stat[0]));
+ pCacheObj->numOfElemsInTrash, (force? utl_stat[1]:utl_stat[0]));
STrashElem *pElem = pCacheObj->pTrash;
while (pElem) {
@@ -674,10 +674,10 @@ bool travHashTableFn(void* param, void* data) {
return true;
}
-static void doCacheRefresh(SCacheObj* pCacheObj, int64_t time, __cache_free_fn_t fp) {
+static void doCacheRefresh(SCacheObj* pCacheObj, int64_t utl_time, __cache_free_fn_t fp) {
assert(pCacheObj != NULL);
- SHashTravSupp sup = {.pCacheObj = pCacheObj, .fp = fp, .time = time};
+ SHashTravSupp sup = {.pCacheObj = pCacheObj, .fp = fp, .time = utl_time};
taosHashCondTraverse(pCacheObj->pHashTable, travHashTableFn, &sup);
}
diff --git a/src/util/src/tcompare.c b/src/util/src/tcompare.c
index 73a430e5dc91195f18b36fc7daffded1c23f5b1b..3a5f3e368b7fec8a67a1fa0363c59ba820d86248 100644
--- a/src/util/src/tcompare.c
+++ b/src/util/src/tcompare.c
@@ -263,6 +263,7 @@ int patternMatch(const char *patterStr, const char *str, size_t size, const SPat
if (j <= size) {
if (c == '\\' && patterStr[i] == '_' && c1 == '_') { i++; continue; }
+ if (c == '\\' && patterStr[i] == '%' && c1 == '%') { i++; continue; }
if (c == c1 || tolower(c) == tolower(c1) || (c == pInfo->matchOne && c1 != 0)) {
continue;
}
@@ -294,9 +295,9 @@ int WCSPatternMatch(const wchar_t *patterStr, const wchar_t *str, size_t size, c
return TSDB_PATTERN_MATCH;
}
- wchar_t accept[3] = {towupper(c), towlower(c), 0};
+ wchar_t utl_accept[3] = {towupper(c), towlower(c), 0};
while (1) {
- size_t n = wcscspn(str, accept);
+ size_t n = wcscspn(str, utl_accept);
str += n;
if (str[0] == 0 || (n >= size)) {
diff --git a/src/util/src/tconfig.c b/src/util/src/tconfig.c
index 131d05155283375fefcb5c8b0851c8b2236e83af..4cd8eb5b7ff3797252d829fbbe26c52606f49990 100644
--- a/src/util/src/tconfig.c
+++ b/src/util/src/tconfig.c
@@ -339,6 +339,12 @@ void taosReadGlobalLogCfg() {
#elif (_TD_PRO_ == true)
printf("configDir:%s not there, use default value: /etc/ProDB", configDir);
strcpy(configDir, "/etc/ProDB");
+ #elif (_TD_KH_ == true)
+ printf("configDir:%s not there, use default value: /etc/kinghistorian", configDir);
+ strcpy(configDir, "/etc/kinghistorian");
+ #elif (_TD_JH_ == true)
+ printf("configDir:%s not there, use default value: /etc/jh_taos", configDir);
+ strcpy(configDir, "/etc/jh_taos");
#else
printf("configDir:%s not there, use default value: /etc/taos", configDir);
strcpy(configDir, "/etc/taos");
diff --git a/src/util/src/tlog.c b/src/util/src/tlog.c
index a2eea5aa7d99a43f2cf7f0552e843ce9a52034c0..232d10a7d07594c9c62cd13767c320da27af2a73 100644
--- a/src/util/src/tlog.c
+++ b/src/util/src/tlog.c
@@ -87,6 +87,10 @@ char tsLogDir[TSDB_FILENAME_LEN] = "/var/log/power";
char tsLogDir[TSDB_FILENAME_LEN] = "/var/log/tq";
#elif (_TD_PRO_ == true)
char tsLogDir[TSDB_FILENAME_LEN] = "/var/log/ProDB";
+#elif (_TD_KH_ == true)
+char tsLogDir[TSDB_FILENAME_LEN] = "/var/log/kinghistorian";
+#elif (_TD_JH_ == true)
+char tsLogDir[TSDB_FILENAME_LEN] = "/var/log/jh_taos";
#else
char tsLogDir[PATH_MAX] = "/var/log/taos";
#endif
diff --git a/src/util/src/tmempool.c b/src/util/src/tmempool.c
index 678c965eb1a7315977616778c0e4b39ceb4c7525..68b1893d2a84691a3780087ee0a1cc65472c8877 100644
--- a/src/util/src/tmempool.c
+++ b/src/util/src/tmempool.c
@@ -89,19 +89,19 @@ char *taosMemPoolMalloc(mpool_h handle) {
}
void taosMemPoolFree(mpool_h handle, char *pMem) {
- int index;
+ int utl_index;
pool_t *pool_p = (pool_t *)handle;
if (pMem == NULL) return;
- index = (int)(pMem - pool_p->pool) % pool_p->blockSize;
- if (index != 0) {
+ utl_index = (int)(pMem - pool_p->pool) % pool_p->blockSize;
+ if (utl_index != 0) {
uError("invalid free address:%p\n", pMem);
return;
}
- index = (int)((pMem - pool_p->pool) / pool_p->blockSize);
- if (index < 0 || index >= pool_p->numOfBlock) {
+ utl_index = (int)((pMem - pool_p->pool) / pool_p->blockSize);
+ if (utl_index < 0 || utl_index >= pool_p->numOfBlock) {
uError("mempool: error, invalid address:%p\n", pMem);
return;
}
@@ -110,7 +110,7 @@ void taosMemPoolFree(mpool_h handle, char *pMem) {
pthread_mutex_lock(&pool_p->mutex);
- pool_p->freeList[(pool_p->first + pool_p->numOfFree) % pool_p->numOfBlock] = index;
+ pool_p->freeList[(pool_p->first + pool_p->numOfFree) % pool_p->numOfBlock] = utl_index;
pool_p->numOfFree++;
pthread_mutex_unlock(&pool_p->mutex);
diff --git a/src/util/src/tnettest.c b/src/util/src/tnettest.c
index ed91f95180d8ce4a03e0cce02e64b324bcee59d9..bef75c8100f302b8409b56dbf7fda2c3d9427f22 100644
--- a/src/util/src/tnettest.c
+++ b/src/util/src/tnettest.c
@@ -314,27 +314,27 @@ static void taosNetCheckPort(uint32_t hostIp, int32_t startPort, int32_t endPort
}
void *taosNetInitRpc(char *secretEncrypt, char spi) {
- SRpcInit rpcInit;
+ SRpcInit utl_rpcInit;
void * pRpcConn = NULL;
char user[] = "nettestinternal";
char pass[] = "nettestinternal";
taosEncryptPass((uint8_t *)pass, strlen(pass), secretEncrypt);
- memset(&rpcInit, 0, sizeof(rpcInit));
- rpcInit.localPort = 0;
- rpcInit.label = "NT";
- rpcInit.numOfThreads = 1; // every DB connection has only one thread
- rpcInit.cfp = NULL;
- rpcInit.sessions = 16;
- rpcInit.connType = TAOS_CONN_CLIENT;
- rpcInit.user = user;
- rpcInit.idleTime = 2000;
- rpcInit.ckey = "key";
- rpcInit.spi = spi;
- rpcInit.secret = secretEncrypt;
-
- pRpcConn = rpcOpen(&rpcInit);
+ memset(&utl_rpcInit, 0, sizeof(utl_rpcInit));
+ utl_rpcInit.localPort = 0;
+ utl_rpcInit.label = "NT";
+ utl_rpcInit.numOfThreads = 1; // every DB connection has only one thread
+ utl_rpcInit.cfp = NULL;
+ utl_rpcInit.sessions = 16;
+ utl_rpcInit.connType = TAOS_CONN_CLIENT;
+ utl_rpcInit.user = user;
+ utl_rpcInit.idleTime = 2000;
+ utl_rpcInit.ckey = "key";
+ utl_rpcInit.spi = spi;
+ utl_rpcInit.secret = secretEncrypt;
+
+ pRpcConn = rpcOpen(&utl_rpcInit);
return pRpcConn;
}
diff --git a/src/util/src/tref.c b/src/util/src/tref.c
index 33323889c68162219b3c6faf886ac29b2a975ffa..d8178221083a26165cbfc91b03cbe5bef67e2cdf 100644
--- a/src/util/src/tref.c
+++ b/src/util/src/tref.c
@@ -54,7 +54,7 @@ static void taosLockList(int64_t *lockedBy);
static void taosUnlockList(int64_t *lockedBy);
static void taosIncRsetCount(SRefSet *pSet);
static void taosDecRsetCount(SRefSet *pSet);
-static int taosDecRefCount(int rsetId, int64_t rid, int remove);
+static int taosDecRefCount(int rsetId, int64_t rid, int utl_remove);
int taosOpenRef(int max, void (*fp)(void *))
{
@@ -389,7 +389,7 @@ int taosListRef() {
return num;
}
-static int taosDecRefCount(int rsetId, int64_t rid, int remove) {
+static int taosDecRefCount(int rsetId, int64_t rid, int utl_remove) {
int hash;
SRefSet *pSet;
SRefNode *pNode;
@@ -428,7 +428,7 @@ static int taosDecRefCount(int rsetId, int64_t rid, int remove) {
if (pNode) {
pNode->count--;
- if (remove) pNode->removed = 1;
+ if (utl_remove) pNode->removed = 1;
if (pNode->count <= 0) {
if (pNode->prev) {
diff --git a/src/util/src/tutil.c b/src/util/src/tutil.c
index ae10dd265a5f94d2a2f3a30888b917b617dec84e..7d7fa4b8c877bb35c9ccbaaa378a5f04f9560bfa 100644
--- a/src/util/src/tutil.c
+++ b/src/util/src/tutil.c
@@ -64,7 +64,7 @@ int32_t strRmquote(char *z, int32_t len){
int32_t j = 0;
for (uint32_t k = 1; k < len - 1; ++k) {
if (z[k] == '\\' || (z[k] == delim && z[k + 1] == delim)) {
- if (z[k] == '\\' && z[k + 1] == '_') {
+ if ((z[k] == '\\' && z[k + 1] == '_') || (z[k] == '\\' && z[k + 1] == '%')) {
//match '_' self
} else {
z[j] = z[k + 1];
diff --git a/src/vnode/src/vnodeMain.c b/src/vnode/src/vnodeMain.c
index f826c1aecd336a0eedeb3f02df0a7acc61895bb2..fd61cbef77b03bae7d76be9b74e37a059c64078e 100644
--- a/src/vnode/src/vnodeMain.c
+++ b/src/vnode/src/vnodeMain.c
@@ -519,9 +519,9 @@ void vnodeCleanUp(SVnodeObj *pVnode) {
// stop replication module
if (pVnode->sync > 0) {
- int64_t sync = pVnode->sync;
+ int64_t vnd_sync = pVnode->sync;
pVnode->sync = -1;
- syncStop(sync);
+ syncStop(vnd_sync);
}
vDebug("vgId:%d, vnode is cleaned, refCount:%d pVnode:%p", pVnode->vgId, pVnode->refCount, pVnode);
diff --git a/src/vnode/src/vnodeSync.c b/src/vnode/src/vnodeSync.c
index 2bdfd2ead3a31d8c2cba94d93239de965d2e07dc..1929479deb36bfc76b23b21b8e9c0f509328b2ba 100644
--- a/src/vnode/src/vnodeSync.c
+++ b/src/vnode/src/vnodeSync.c
@@ -22,7 +22,7 @@
#include "vnodeMain.h"
#include "vnodeStatus.h"
-uint32_t vnodeGetFileInfo(int32_t vgId, char *name, uint32_t *index, uint32_t eindex, int64_t *size, uint64_t *fver) {
+uint32_t vnodeGetFileInfo(int32_t vgId, char *name, uint32_t *vnd_index, uint32_t eindex, int64_t *size, uint64_t *fver) {
SVnodeObj *pVnode = vnodeAcquire(vgId);
if (pVnode == NULL) {
vError("vgId:%d, vnode not found while get file info", vgId);
@@ -30,7 +30,7 @@ uint32_t vnodeGetFileInfo(int32_t vgId, char *name, uint32_t *index, uint32_t ei
}
*fver = pVnode->fversion;
- uint32_t ret = tsdbGetFileInfo(pVnode->tsdb, name, index, eindex, size);
+ uint32_t ret = tsdbGetFileInfo(pVnode->tsdb, name, vnd_index, eindex, size);
vnodeRelease(pVnode);
return ret;
diff --git a/src/wal/test/waltest.c b/src/wal/test/waltest.c
index 505728fbe4c4a6fbc126aa18ff6db93a28388173..7d6505cd195ff9c87cf26aba3ea7fd0a668c2a37 100644
--- a/src/wal/test/waltest.c
+++ b/src/wal/test/waltest.c
@@ -113,17 +113,17 @@ int main(int argc, char *argv[]) {
printf("%d wal files are written\n", total);
- int64_t index = 0;
+ int64_t wal_index = 0;
char name[256];
while (1) {
- int code = walGetWalFile(pWal, name, &index);
+ int code = walGetWalFile(pWal, name, &wal_index);
if (code == -1) {
- printf("failed to get wal file, index:%" PRId64 "\n", index);
+ printf("failed to get wal file, index:%" PRId64 "\n", wal_index);
break;
}
- printf("index:%" PRId64 " wal:%s\n", index, name);
+ printf("index:%" PRId64 " wal:%s\n", wal_index, name);
if (code == 0) break;
}
diff --git a/tests/examples/c/demo.c b/tests/examples/c/demo.c
index 55d962888871c2ba175daef85f1084a1e28a0da1..ada75d690f1a01edf6997e9dee7d45bbb56f5e65 100644
--- a/tests/examples/c/demo.c
+++ b/tests/examples/c/demo.c
@@ -72,8 +72,8 @@ int main(int argc, char *argv[]) {
taos_close(taos);
taos_cleanup();
}
-void Test(TAOS *taos, char *qstr, int index) {
- printf("==================test at %d\n================================", index);
+void Test(TAOS *taos, char *qstr, int tst_index) {
+ printf("==================test at %d\n================================", tst_index);
queryDB(taos, "drop database if exists demo");
queryDB(taos, "create database demo");
TAOS_RES *result;
diff --git a/tests/examples/c/stream.c b/tests/examples/c/stream.c
index e26d6588a1382a1f7133f84bd623aa05304060a9..28a3eaddc48ea43044325ac61bc98c43e2f83a10 100644
--- a/tests/examples/c/stream.c
+++ b/tests/examples/c/stream.c
@@ -155,12 +155,12 @@ void *insert_rows(void *sarg) {
// insert data
int64_t begin = (int64_t)time(NULL);
- int index = 0;
+ int tst_index = 0;
while (1) {
if (g_thread_exit_flag) break;
- index++;
- sprintf(command, "insert into %s values (%ld, %d)", winfo->tbl_name, (begin + index) * 1000, index);
+ tst_index++;
+ sprintf(command, "insert into %s values (%ld, %d)", winfo->tbl_name, (begin + tst_index) * 1000, tst_index);
if (taos_query(taos, command)) {
printf("failed to insert row [%s], reason:%s\n", command, taos_errstr(taos));
}
diff --git a/tests/examples/lua/lua51/lua_connector51.c b/tests/examples/lua/lua51/lua_connector51.c
index fe2152945dc1915dca5de31458a8cbb2f007f4f2..a5f6f2ea40695e28dcb6d49f578a0f3b978b6f35 100644
--- a/tests/examples/lua/lua51/lua_connector51.c
+++ b/tests/examples/lua/lua51/lua_connector51.c
@@ -216,7 +216,7 @@ static int l_async_query(lua_State *L){
int r = luaL_ref(L, LUA_REGISTRYINDEX);
TAOS * taos = (TAOS*)lua_topointer(L,1);
const char * sqlstr = lua_tostring(L,2);
- // int stime = luaL_checknumber(L,3);
+ // int test_stime = luaL_checknumber(L,3);
lua_newtable(L);
int table_index = lua_gettop(L);
@@ -301,7 +301,7 @@ static int l_open_stream(lua_State *L){
int r = luaL_ref(L, LUA_REGISTRYINDEX);
TAOS * taos = (TAOS*)lua_topointer(L,1);
const char * sqlstr = lua_tostring(L,2);
- int stime = luaL_checknumber(L,3);
+ int test_stime = luaL_checknumber(L,3);
lua_newtable(L);
int table_index = lua_gettop(L);
@@ -310,7 +310,7 @@ static int l_open_stream(lua_State *L){
p->state = L;
p->callback=r;
// printf("r:%d, L:%d\n",r,L);
- void * s = taos_open_stream(taos,sqlstr,stream_cb,stime,p,NULL);
+ void * s = taos_open_stream(taos,sqlstr,stream_cb,test_stime,p,NULL);
if (s == NULL) {
printf("failed to open stream, reason:%s\n", taos_errstr(taos));
free(p);
diff --git a/tests/examples/lua/lua_connector.c b/tests/examples/lua/lua_connector.c
index 8c2ea3e9e83237fc8ed9ebce687f5131352e4d14..b4097be36a3643c1c3c95b0ae07b3792b82bb5ee 100644
--- a/tests/examples/lua/lua_connector.c
+++ b/tests/examples/lua/lua_connector.c
@@ -216,7 +216,7 @@ static int l_async_query(lua_State *L){
int r = luaL_ref(L, LUA_REGISTRYINDEX);
TAOS * taos = (TAOS*)lua_topointer(L,1);
const char * sqlstr = lua_tostring(L,2);
- // int stime = luaL_checknumber(L,3);
+ // int test_stime = luaL_checknumber(L,3);
lua_newtable(L);
int table_index = lua_gettop(L);
@@ -301,7 +301,7 @@ static int l_open_stream(lua_State *L){
int r = luaL_ref(L, LUA_REGISTRYINDEX);
TAOS * taos = (TAOS*)lua_topointer(L,1);
const char * sqlstr = lua_tostring(L,2);
- int stime = luaL_checknumber(L,3);
+ int test_stime = luaL_checknumber(L,3);
lua_newtable(L);
int table_index = lua_gettop(L);
@@ -310,7 +310,7 @@ static int l_open_stream(lua_State *L){
p->state = L;
p->callback=r;
// printf("r:%d, L:%d\n",r,L);
- void * s = taos_open_stream(taos,sqlstr,stream_cb,stime,p,NULL);
+ void * s = taos_open_stream(taos,sqlstr,stream_cb,test_stime,p,NULL);
if (s == NULL) {
printf("failed to open stream, reason:%s\n", taos_errstr(taos));
free(p);
diff --git a/tests/pytest/fulltest.sh b/tests/pytest/fulltest.sh
index d7f211962fc025b70ccf8df3655e37872c552921..da2f2c48dfd9d925600cf8a12f2f7e2e051d04ed 100755
--- a/tests/pytest/fulltest.sh
+++ b/tests/pytest/fulltest.sh
@@ -269,7 +269,7 @@ python3 ./test.py -f query/queryCnameDisplay.py
python3 ./test.py -f query/operator_cost.py
python3 test.py -f query/nestedQuery/queryWithSpread.py
python3 ./test.py -f query/bug6586.py
-python3 ./test.py -f query/bug5903.py
+# python3 ./test.py -f query/bug5903.py
#stream
python3 ./test.py -f stream/metric_1.py
@@ -359,7 +359,7 @@ python3 ./test.py -f query/last_row_cache.py
python3 ./test.py -f account/account_create.py
python3 ./test.py -f alter/alter_table.py
python3 ./test.py -f query/queryGroupbySort.py
-python3 ./test.py -f functions/queryTestCases.py
+#python3 ./test.py -f functions/queryTestCases.py
python3 ./test.py -f functions/function_stateWindow.py
python3 ./test.py -f functions/function_derivative.py
python3 ./test.py -f functions/function_irate.py
diff --git a/tests/pytest/functions/function_count_last_stab.py b/tests/pytest/functions/function_count_last_stab.py
index 1d777c6bd314941036f542c7d0e9063e590fa7dd..cd0a9b17c2fd8c98544dca09f6a7008929225ece 100644
--- a/tests/pytest/functions/function_count_last_stab.py
+++ b/tests/pytest/functions/function_count_last_stab.py
@@ -42,22 +42,22 @@ class TDTestCase:
% (self.ts + i, i + 1, 1, i + 1, i + 1, i + 0.1, i + 0.1, i % 2, i + 1, i + 1, i + 1, i + 1, i + 1, i + 1))
tdSql.query("select count(*),last(*) from stest group by col1")
- tdSql.checkRows(10)
- tdSql.checkData(0, 0, 1)
- tdSql.checkData(1, 2, 2)
- tdSql.checkData(1, 3, 1)
+ tdSql.checkRows(11)
+ tdSql.checkData(1, 0, 1)
+ tdSql.checkData(2, 2, 2)
+ tdSql.checkData(2, 3, 1)
tdSql.query("select count(*),last(*) from stest group by col2")
- tdSql.checkRows(1)
- tdSql.checkData(0, 0, 10)
- tdSql.checkData(0, 2, 10)
- tdSql.checkData(0, 3, 1)
+ tdSql.checkRows(2)
+ tdSql.checkData(1, 0, 10)
+ tdSql.checkData(1, 2, 10)
+ tdSql.checkData(1, 3, 1)
tdSql.query("select count(*),last(ts,stest.*) from stest group by col1")
- tdSql.checkRows(10)
- tdSql.checkData(0, 0, 1)
- tdSql.checkData(0, 2, "2018-09-17 09:00:00")
- tdSql.checkData(1, 4, 1)
+ tdSql.checkRows(11)
+ tdSql.checkData(1, 0, 1)
+ tdSql.checkData(1, 2, "2018-09-17 09:00:00")
+ tdSql.checkData(2, 4, 1)
diff --git a/tests/pytest/functions/function_derivative.py b/tests/pytest/functions/function_derivative.py
index d4d8ab80a6b9587df900890ef18b8c4b1e3906bd..3b79726ed80c206338392cecb8f3d2adf4588e2a 100644
--- a/tests/pytest/functions/function_derivative.py
+++ b/tests/pytest/functions/function_derivative.py
@@ -68,9 +68,9 @@ class TDTestCase:
tdSql.checkData(0, 0, "2018-09-17 09:00:10.000")
tdSql.checkData(0, 1, "2018-09-17 09:00:10.000")
tdSql.checkData(0, 3, "2018-09-17 09:00:10.000")
- tdSql.checkData(1, 0, "2018-09-17 09:00:20.009")
- tdSql.checkData(1, 1, "2018-09-17 09:00:20.009")
- tdSql.checkData(1, 3, "2018-09-17 09:00:20.009")
+ tdSql.checkData(1, 0, "2018-09-17 09:00:20.000")
+ tdSql.checkData(1, 1, "2018-09-17 09:00:20.000")
+ tdSql.checkData(1, 3, "2018-09-17 09:00:20.000")
tdSql.query("select ts from(select ts,derivative(col, 10s, 0) from stb group by tbname)")
@@ -147,6 +147,10 @@ class TDTestCase:
tdSql.error("select derivative(col, 10s, 1) from stb group by id")
tdSql.error("select derivative(col, 999ms, 1) from stb group by id")
tdSql.error("select derivative(col, 10s, 2) from stb group by id")
+ tdSql.error("select derivative(col, -106752999999999922222d, 0) from stb group by tbname"); #overflow error
+ tdSql.error("select derivative(col, 10y, 0) from stb group by tbname") #TD-10399, DB error: syntax error near '10y, 0) from stb group by tbname;'
+ tdSql.error("select derivative(col, -106752d, 0) from stb group by tbname") #TD-10398 overflow tips
+ tdSql.error("select derivative(col, 106751991168d, 0) from stb group by tbname") #TD-10398 overflow tips
def run(self):
tdSql.prepare()
diff --git a/tests/pytest/functions/queryTestCases.py b/tests/pytest/functions/queryTestCases.py
index e8023546c446ff76b5c1976de83c01d4db8f6751..8bdbee09e7f715384f048028e7cccd0010e5642b 100644
--- a/tests/pytest/functions/queryTestCases.py
+++ b/tests/pytest/functions/queryTestCases.py
@@ -16,6 +16,7 @@ import subprocess
import random
import math
import numpy as np
+import inspect
from util.log import *
from util.cases import *
@@ -71,7 +72,6 @@ class TDTestCase:
def td4082(self):
tdLog.printNoPrefix("==========TD-4082==========")
-
tdSql.prepare()
cfgfile = self.getCfgFile()
@@ -84,7 +84,7 @@ class TDTestCase:
index_value = np.dstack((cpms_index[0])).squeeze()
tdSql.query("show variables")
- tdSql.checkData(index_value, 1, -1)
+ tdSql.checkData(index_value, 1, 524288)
tdSql.query("show dnodes")
index = tdSql.getData(0, 0)
@@ -122,12 +122,8 @@ class TDTestCase:
def td4097(self):
tdLog.printNoPrefix("==========TD-4097==========")
-
tdSql.execute("drop database if exists db")
tdSql.execute("drop database if exists db1")
- tdDnodes.stop(1)
- tdDnodes.start(1)
-
tdSql.execute("create database if not exists db keep 3650")
tdSql.execute("create database if not exists db1 keep 3650")
tdSql.execute("create database if not exists new keep 3650")
@@ -143,7 +139,7 @@ class TDTestCase:
tdSql.execute("create table db.t20 using db.stb2 tags(3)")
tdSql.execute("create table db1.t30 using db1.stb3 tags(4)")
- tdLog.printNoPrefix("==========TD-4097==========")
+ # tdLog.printNoPrefix("==========TD-4097==========")
# 插入数据,然后进行show create 操作
# p1 不进入指定数据库
@@ -279,6 +275,12 @@ class TDTestCase:
tdSql.query("show create stable db.stb1")
tdSql.checkRows(1)
+ tdSql.execute("drop database if exists db")
+ tdSql.execute("drop database if exists db1")
+ tdSql.execute("drop database if exists new")
+ tdSql.execute("drop database if exists db2")
+ tdSql.execute("drop database if exists private")
+
def td4153(self):
tdLog.printNoPrefix("==========TD-4153==========")
@@ -329,7 +331,6 @@ class TDTestCase:
tdSql.checkData(0, 7, 36500)
tdSql.execute("drop database if exists db")
-
tdSql.execute("create database if not exists db1")
tdSql.query("show databases")
if ("community" in selfPath):
@@ -397,29 +398,52 @@ class TDTestCase:
def td4889(self):
tdLog.printNoPrefix("==========TD-4889==========")
+ cfg = {
+ 'minRowsPerFileBlock': '10',
+ 'maxRowsPerFileBlock': '200',
+ 'minRows': '10',
+ 'maxRows': '200',
+ 'maxVgroupsPerDb': '100',
+ 'maxTablesPerVnode': '1200',
+ }
+ tdSql.query("show dnodes")
+ dnode_index = tdSql.getData(0,0)
+ tdDnodes.stop(dnode_index)
+ tdDnodes.deploy(dnode_index, cfg)
+ tdDnodes.start(dnode_index)
+
tdSql.execute("drop database if exists db")
- tdSql.execute("create database if not exists db keep 3650")
+ tdSql.execute("create database if not exists db keep 3650 blocks 3 minrows 10 maxrows 200")
tdSql.execute("use db")
tdSql.execute("create stable db.stb1 (ts timestamp, c1 int) tags(t1 int)")
+ nowtime = int(round(time.time() * 1000))
for i in range(1000):
tdSql.execute(f"create table db.t1{i} using db.stb1 tags({i})")
- for j in range(100):
- tdSql.execute(f"insert into db.t1{i} values (now-100d, {i+j})")
+ sql = f"insert into db.t1{i} values"
+ for j in range(260):
+ sql += f"({nowtime-1000*i-j}, {i+j})"
+ # tdSql.execute(f"insert into db.t1{i} values (now-100d, {i+j})")
+ tdSql.execute(sql)
+
+ # tdDnodes.stop(dnode_index)
+ # tdDnodes.start(dnode_index)
tdSql.query("show vgroups")
index = tdSql.getData(0,0)
tdSql.checkData(0, 6, 0)
tdSql.execute(f"compact vnodes in({index})")
- for i in range(3):
+ start_time = time.time()
+ while True:
tdSql.query("show vgroups")
- if tdSql.getData(0, 6) == 1:
+ if tdSql.getData(0, 6) != 0:
tdLog.printNoPrefix("show vgroups row:0 col:6 data:1 == expect:1")
break
- if i == 3:
+ run_time = time.time()-start_time
+ if run_time > 3:
tdLog.exit("compacting not occured")
- time.sleep(0.5)
+ # time.sleep(0.1)
pass
@@ -445,7 +469,7 @@ class TDTestCase:
# tdSql.execute("insert into db.t1 values ('2021-07-01 08:00:04.000', 1001.51, 1001.52, 1001.53, 1001.54)")
# for i in range(1000000):
- for i in range(1000000):
+ for i in range(10000):
random1 = random.uniform(1000,1001)
random2 = random.uniform(1000,1001)
random3 = random.uniform(1000,1001)
@@ -594,7 +618,7 @@ class TDTestCase:
tdSql.execute("use db")
tdSql.execute("create stable db.stb1 (ts timestamp, c1 int) tags(t0 tinyint, t1 int)")
tdSql.execute("create stable db.stb2 (ts timestamp, c1 int) tags(t0 binary(16), t1 binary(16))")
- numtab=2000000
+ numtab=20000
for i in range(numtab):
sql = f"create table db.t{i} using db.stb1 tags({i%128}, {100+i})"
tdSql.execute(sql)
@@ -769,7 +793,7 @@ class TDTestCase:
tdSql.query(f"select distinct c1,c2 from (select * from t1 where c1 < {tbnum}) ")
tdSql.checkRows(3)
tdSql.query(f"select distinct c1,c2 from (select * from stb1 where t2 !=0 and t2 != 1) ")
- tdSql.checkRows(4)
+ tdSql.checkRows(0)
tdSql.error("select distinct c1, c2 from (select distinct c1, c2 from stb1 where t0 > 2 and t1 < 3) ")
tdSql.error("select c1, c2 from (select distinct c1, c2 from stb1 where t0 > 2 and t1 < 3) ")
tdSql.query("select distinct c1, c2 from (select c2, c1 from stb1 where c1 > 2 ) where c1 < 4")
@@ -1118,27 +1142,448 @@ class TDTestCase:
tdSql.error("select ts as t, top(t1, 1) from stb1")
tdSql.error("select ts as t, top(t1, 3) from stb1 order by c3")
tdSql.error("select ts as t, top(t1, 3) from t1 order by c3")
+ pass
+
+ def apercentile_query_form(self, col="c1", p=0, com=',', algo="'t-digest'", alias="", table_expr="t1", condition=""):
+
+ '''
+ apercentile function:
+ :param col: string, column name, required parameters;
+ :param p: float, percentile interval, [0,100], required parameters;
+ :param algo: string, alforithm, real form like: ', algorithm' , algorithm: {type:int, data:[0, 1]};
+ :param alias: string, result column another name;
+ :param table_expr: string or expression, data source(eg,table/stable name, result set), required parameters;
+ :param condition: expression;
+ :param args: other funtions,like: ', last(col)'
+ :return: apercentile query statement,default: select apercentile(c1, 0, 1) from t1
+ '''
+
+ return f"select apercentile({col}, {p}{com} {algo}) {alias} from {table_expr} {condition}"
+
+ def checkapert(self,col="c1", p=0, com=',', algo='"t-digest"', alias="", table_expr="t1", condition="" ):
+
+ tdSql.query(f"select count({col}) from {table_expr} {condition}")
+ if tdSql.queryRows == 0:
+ tdSql.query(self.apercentile_query_form(
+ col=col, p=p, com=com, algo=algo, alias=alias, table_expr=table_expr, condition=condition
+ ))
+ tdSql.checkRows(0)
+ return
+
+ pset = [0, 40, 60, 100]
+ if p not in pset:
+ pset.append(p)
+
+ if "stb" in table_expr:
+ tdSql.query(f"select spread({col}) from stb1")
+ else:
+ tdSql.query(f"select avg(c1) from (select spread({col.split('.')[-1]}) c1 from stb1 group by tbname)")
+ spread_num = tdSql.getData(0, 0)
+
+ for pi in pset:
+
+ if "group" in condition:
+ tdSql.query(f"select last_row({col}) from {table_expr} {condition}")
+ query_result = tdSql.queryResult
+ query_rows = tdSql.queryRows
+ for i in range(query_rows):
+ pre_condition = condition.replace("slimit",'limit').replace("group by tbname", "").split("soffset")[0]
+ tbname = query_result[i][-1]
+ tdSql.query(f"select percentile({col}, {pi}) {alias} from {tbname} {pre_condition}")
+ print(tdSql.sql)
+ pre_data = tdSql.getData(0, 0)
+ tdSql.query(self.apercentile_query_form(
+ col=col, p=pi, com=com, algo='"t-digest"', alias=alias, table_expr=table_expr, condition=condition
+ ))
+ if abs(tdSql.getData(i, 0)) >= (spread_num*0.02):
+ tdSql.checkDeviaRation(i, 0, pre_data, 0.1)
+ else:
+ devia = abs((tdSql.getData(i, 0) - pre_data) / (spread_num * 0.02))
+ if devia < 0.5:
+ tdLog.info(f"sql:{tdSql.sql}, result data:{tdSql.getData(i, 0)}, expect data:{pre_data}, "
+ f"actual deviation:{devia} <= expect deviation: 0.01")
+ else:
+ tdLog.exit(
+ f"[{inspect.getframeinfo(inspect.stack()[1][0]).lineno}],check failed:sql:{tdSql.sql}, "
+ f"result data:{tdSql.getData(i, 0)}, expect data:{pre_data}, "
+ f"actual deviation:{devia} > expect deviation: 0.01")
+
+ # if "group" in condition:
+ # tdSql.query(self.apercentile_query_form(
+ # col=col, p=pi, com=com, algo='"default"', alias=alias, table_expr=table_expr, condition=condition
+ # ))
+ # query_result = tdSql.queryResult
+ # query_rows = tdSql.queryRows
+ # tdSql.query(self.apercentile_query_form(
+ # col=col, p=pi, com=com, algo='"t-digest"', alias=alias, table_expr=table_expr, condition=condition
+ # ))
+ # for i in range(query_rows):
+ # if abs(tdSql.getData(i, 0)) >= (spread_num*0.02):
+ # tdSql.checkDeviaRation(i, 0, query_result[i][0], 0.1)
+ # else:
+ # devia = abs((tdSql.getData(i, 0) - query_result[i][0]) / (spread_num * 0.02))
+ # if devia < 0.5:
+ # tdLog.info(f"sql:{tdSql.sql}, result data:{tdSql.getData(i, 0)}, expect data:{tdSql.queryResult[i][0]}, "
+ # f"actual deviation:{devia} <= expect deviation: 0.01")
+ # else:
+ # tdLog.exit(
+ # f"[{inspect.getframeinfo(inspect.stack()[1][0]).lineno}],check failed:sql:{tdSql.sql}, "
+ # f"result data:{tdSql.getData(i, 0)}, expect data:{tdSql.queryResult[i][0]}, "
+ # f"actual deviation:{devia} > expect deviation: 0.01")
+
+ else:
+ if ',' in alias or not alias:
+ tdSql.query(f"select {col} from {table_expr} {condition}")
+ elif "stb" not in table_expr:
+ tdSql.query(f"select percentile({col}, {pi}) {alias} from {table_expr} {condition}")
+ else:
+ tdSql.query(self.apercentile_query_form(
+ col=col, p=pi, com=com, algo='"default"', alias=alias, table_expr=table_expr, condition=condition
+ ))
+ query_result = np.array(tdSql.queryResult)[np.array(tdSql.queryResult) != None]
+ tdSql.query(self.apercentile_query_form(
+ col=col, p=pi, com=com, algo=algo, alias=alias, table_expr=table_expr, condition=condition
+ ))
+
+ if abs(tdSql.getData(0, 0)) >= (spread_num * 0.02):
+ tdSql.checkDeviaRation(0, 0, np.percentile(query_result, pi), 0.1)
+ else:
+ devia = abs((tdSql.getData(0, 0) - np.percentile(query_result, pi)) / (spread_num * 0.02))
+ if devia < 0.5:
+ tdLog.info(
+ f"sql:{tdSql.sql}, result data:{tdSql.getData(0, 0)}, expect data:{np.percentile(query_result, pi)}, "
+ f"actual deviation:{devia} <= expect deviation: 0.01")
+ else:
+ tdLog.exit(
+ f"[{inspect.getframeinfo(inspect.stack()[1][0]).lineno}],check failed:sql:{tdSql.sql}, "
+ f"result data:{tdSql.getData(0, 0)}, expect data:{np.percentile(query_result, pi)}, "
+ f"actual deviation:{devia} > expect deviation: 0.01")
+
+
+ def apercentile_query(self):
+
+ # table schema :ts timestamp, c1 int, c2 float, c3 timestamp, c4 binary(16), c5 double, c6 bool
+ # c7 bigint, c8 smallint, c9 tinyint, c10 nchar(16)
+
+ # case1: int col
+ self.checkapert()
+ # case2: float col
+ case2 = {'col':'c2'}
+ self.checkapert(**case2)
+ # case3: double col
+ case3 = {'col':'c5'}
+ self.checkapert(**case3)
+ # case4: bigint col
+ case4 = {'col':'c7'}
+ self.checkapert(**case4)
+ # case5: smallint col
+ case5 = {'col':'c8'}
+ self.checkapert(**case5)
+ # case6: tinyint col
+ case6 = {'col':'c9'}
+ self.checkapert(**case6)
+ # case7: stable
+ case7 = {'table_expr':'stb1'}
+ self.checkapert(**case7)
+ # case8: nest query, outquery
+ case8 = {'table_expr':'(select c1 from t1)'}
+ self.checkapert(**case8)
+ # case9: nest query, inquery and out query
+ case9 = {'table_expr':'(select apercentile(c1, 0) as c1 from t1)'}
+ self.checkapert(**case9)
+
+ # case10: nest query, inquery
+ tdSql.query("select * from (select c1 from stb1)")
+ if tdSql.queryRows == 0:
+ tdSql.query("select * from (select apercentile(c1,0) c1 from stb1)")
+ tdSql.checkRows(0)
+ else:
+ query_result = np.array(tdSql.queryResult)[np.array(tdSql.queryResult) != None]
+ tdSql.query("select * from (select apercentile(c1, 0) c1 from stb1)")
+ tdSql.checkDeviaRation(0, 0, np.percentile(query_result, 0), 0.1)
+ tdSql.query("select * from (select apercentile(c1,100) c1 from stb1)")
+ tdSql.checkDeviaRation(0, 0, np.percentile(query_result, 100), 0.1)
+ tdSql.query("select * from (select apercentile(c1,40) c1 from stb1)")
+ tdSql.checkDeviaRation(0, 0, np.percentile(query_result, 40), 0.1)
+
+ # case11: no algorithm = algo:0
+ case11 = {'com':'', 'algo': ''}
+ self.checkapert(**case11)
+
+ # case12~14: p: bin/oct/hex
+ case12 = {'p': 0b1100100}
+ self.checkapert(**case12)
+ case13 = {'algo':'"T-DIGEST"'}
+ self.checkapert(**case13)
+ case14 = {'p':0x32, 'algo':'"DEFAULT"'}
+ self.checkapert(**case14)
+
+ # case15~21: mix with aggregate function
+ case15 = {'alias':', count(*)'}
+ self.checkapert(**case15)
+ case16 = {'alias':', avg(c1)'}
+ self.checkapert(**case16)
+ case17 = {'alias':', twa(c1)'}
+ self.checkapert(**case17)
+ case18 = {'alias':', irate(c1)'}
+ self.checkapert(**case18)
+ case19 = {'alias':', sum(c1)'}
+ self.checkapert(**case19)
+ case20 = {'alias':', stddev(c1)'}
+ self.checkapert(**case20)
+ case21 = {'alias':', leastsquares(c1, 1, 1)'}
+ self.checkapert(**case21)
+
+ # case22~27:mix with selector function
+ case22 = {'alias':', min(c1)'}
+ self.checkapert(**case22)
+ case23 = {'alias':', max(c1)'}
+ self.checkapert(**case23)
+ case24 = {'alias':', first(c1)'}
+ self.checkapert(**case24)
+ case25 = {'alias':', last(c1)'}
+ self.checkapert(**case25)
+ case26 = {'alias':', percentile(c1, 0)'}
+ self.checkapert(**case26)
+ case27 = {'alias':', apercentile(c1, 0, "t-digest")'}
+ self.checkapert(**case27)
+
+ # case28~29: mix with computing function
+ case28 = {'alias':', spread(c1)'}
+ self.checkapert(**case28)
+ # case29: mix with four operation
+ case29 = {'alias':'+ spread(c1)'}
+ self.checkapert(**case29)
+
+ # case30~36: with condition
+ case30 = {'condition':'where ts > now'}
+ self.checkapert(**case30)
+ case31 = {'condition':'where c1 between 1 and 200'}
+ self.checkapert(**case31)
+ case32 = {'condition':f'where c1 in {tuple(i for i in range(200))}'}
+ self.checkapert(**case32)
+ case33 = {'condition':'where c1>100 and c2<100'}
+ self.checkapert(**case33)
+ case34 = {'condition':'where c1 is not null'}
+ self.checkapert(**case34)
+ case35 = {'condition':'where c4 like "_inary%"'}
+ self.checkapert(**case35)
+ case36 = {'table_expr':'stb1' ,'condition':'where tbname like "t_"'}
+ self.checkapert(**case36)
+
+ # case37~38: with join
+ case37 = {'col':'t1.c1','table_expr':'t1, t2 ','condition':'where t1.ts=t2.ts'}
+ self.checkapert(**case37)
+ case38 = {'col':'stb1.c1', 'table_expr':'stb1, stb2', 'condition':'where stb1.ts=stb2.ts and stb1.st1=stb2.st2'}
+ self.checkapert(**case38)
+
+ # case39: with group by
+ case39 = {'table_expr':'stb1', 'condition':'group by tbname'}
+ self.checkapert(**case39)
+
+ # case40: with slimit
+ case40 = {'table_expr':'stb1', 'condition':'group by tbname slimit 1'}
+ self.checkapert(**case40)
+
+ # case41: with soffset
+ case41 = {'table_expr':'stb1', 'condition':'group by tbname slimit 1 soffset 1'}
+ self.checkapert(**case41)
+
+ # case42: with order by
+ case42 = {'table_expr':'stb1' ,'condition':'order by ts'}
+ self.checkapert(**case42)
+ case43 = {'table_expr':'t1' ,'condition':'order by ts'}
+ self.checkapert(**case43)
+
+ # case44: with limit offset
+ case44 = {'table_expr':'stb1', 'condition':'group by tbname limit 1'}
+ self.checkapert(**case44)
+ case45 = {'table_expr':'stb1', 'condition':'group by tbname limit 1 offset 1'}
+ self.checkapert(**case45)
pass
+ def error_apercentile(self):
+
+ # unusual test
+ #
+ # table schema :ts timestamp, c1 int, c2 float, c3 timestamp, c4 binary(16), c5 double, c6 bool
+ # c7 bigint, c8 smallint, c9 tinyint, c10 nchar(16)
+ #
+ # form test
+ tdSql.error(self.apercentile_query_form(col="",com='',algo='')) # no col , no algorithm
+ tdSql.error(self.apercentile_query_form(col="")) # no col , algorithm
+ tdSql.error(self.apercentile_query_form(p='',com='',algo='')) # no p , no algorithm
+ tdSql.error(self.apercentile_query_form(p='')) # no p , algorithm
+ tdSql.error("apercentile( c1, 100) from t1") # no select
+ tdSql.error("select apercentile from t1") # no algorithm condition
+ tdSql.error("select apercentile c1,0 from t1") # no brackets
+ tdSql.error("select apercentile (c1,0) t1") # no from
+ tdSql.error(self.apercentile_query_form(col='(c1,0)',p='',com='',algo='')) # no p , no algorithm
+ tdSql.error("select apercentile( (c1,0) ) from t1") # no table_expr
+ tdSql.error("select apercentile{ (c1,0) } from t1") # sql form error 1
+ tdSql.error("select apercentile[ (c1,0) ] from t1") # sql form error 2
+ tdSql.error("select [apercentile(c1,0) ] from t1") # sql form error 3
+ tdSql.error("select apercentile((c1, 0), 'default') from t1") # sql form error 5
+ tdSql.error("select apercentile(c1, (0, 'default')) from t1") # sql form error 6
+ tdSql.error("select apercentile(c1, (0), 1) from t1") # sql form error 7
+ tdSql.error("select apercentile([c1, 0], 'default') from t1") # sql form error 8
+ tdSql.error("select apercentile(c1, [0, 'default']) from t1") # sql form error 9
+ tdSql.error("select apercentile(c1, {0, 'default'}) from t1") # sql form error 10
+ tdSql.error("select apercentile([c1, 0]) from t1") # sql form error 11
+ tdSql.error("select apercentile({c1, 0}) from t1") # sql form error 12
+ tdSql.error("select apercentile(c1) from t1") # agrs: 1
+ tdSql.error("select apercentile(c1, 0, 'default', 0) from t1") # agrs: 4
+ tdSql.error("select apercentile(c1, 0, 0, 'default') from t1") # agrs: 4
+ tdSql.error("select apercentile() from t1") # agrs: null 1
+ tdSql.error("select apercentile from t1") # agrs: null 2
+ tdSql.error("select apercentile( , , ) from t1") # agrs: null 3
+ tdSql.error(self.apercentile_query_form(col='', p='', algo='')) # agrs: null 4
+ tdSql.error(self.apercentile_query_form(col="st1")) # col:tag column
+ tdSql.error(self.apercentile_query_form(col=123)) # col:numerical
+ tdSql.error(self.apercentile_query_form(col=True)) # col:bool
+ tdSql.error(self.apercentile_query_form(col='')) # col:''
+ tdSql.error(self.apercentile_query_form(col="last(c1)")) # col:expr
+ tdSql.error(self.apercentile_query_form(col="t%")) # col:non-numerical
+ tdSql.error(self.apercentile_query_form(col="c3")) # col-type: timestamp
+ tdSql.error(self.apercentile_query_form(col="c4")) # col-type: binary
+ tdSql.error(self.apercentile_query_form(col="c6")) # col-type: bool
+ tdSql.error(self.apercentile_query_form(col="c10")) # col-type: nchar
+ tdSql.error(self.apercentile_query_form(p=True)) # p:bool
+ tdSql.error(self.apercentile_query_form(p='a')) # p:str
+ tdSql.error(self.apercentile_query_form(p='last(*)')) # p:expr
+ tdSql.error(self.apercentile_query_form(p="2021-08-01 00:00:00.000")) # p:timestamp
+ tdSql.error(self.apercentile_query_form(algo='t-digest')) # algorithm:str
+ tdSql.error(self.apercentile_query_form(algo='"t_digest"')) # algorithm:str
+ tdSql.error(self.apercentile_query_form(algo='"t-digest0"')) # algorithm:str
+ tdSql.error(self.apercentile_query_form(algo='"t-digest."')) # algorithm:str
+ tdSql.error(self.apercentile_query_form(algo='"t-digest%"')) # algorithm:str
+ tdSql.error(self.apercentile_query_form(algo='"t-digest*"')) # algorithm:str
+ tdSql.error(self.apercentile_query_form(algo='tdigest')) # algorithm:str
+ tdSql.error(self.apercentile_query_form(algo=2.0)) # algorithm:float
+ tdSql.error(self.apercentile_query_form(algo=1.9999)) # algorithm:float
+ tdSql.error(self.apercentile_query_form(algo=-0.9999)) # algorithm:float
+ tdSql.error(self.apercentile_query_form(algo=-1.0)) # algorithm:float
+ tdSql.error(self.apercentile_query_form(algo=0b1)) # algorithm:float
+ tdSql.error(self.apercentile_query_form(algo=0x1)) # algorithm:float
+ tdSql.error(self.apercentile_query_form(algo=0o1)) # algorithm:float
+ tdSql.error(self.apercentile_query_form(algo=True)) # algorithm:bool
+ tdSql.error(self.apercentile_query_form(algo="True")) # algorithm:bool
+ tdSql.error(self.apercentile_query_form(algo='2021-08-01 00:00:00.000')) # algorithm:timestamp
+ tdSql.error(self.apercentile_query_form(algo='last(c1)')) # algorithm:expr
+
+ # boundary test
+ tdSql.error(self.apercentile_query_form(p=-1)) # p left out of [0, 100]
+ tdSql.error(self.apercentile_query_form(p=-9223372036854775809)) # p left out of bigint
+ tdSql.error(self.apercentile_query_form(p=100.1)) # p right out of [0, 100]
+ tdSql.error(self.apercentile_query_form(p=18446744073709551616)) # p right out of unsigned-bigint
+ tdSql.error(self.apercentile_query_form(algo=-1)) # algorithm left out of [0, 1]
+ tdSql.error(self.apercentile_query_form(algo=-9223372036854775809)) # algorithm left out of unsigned-bigint
+ tdSql.error(self.apercentile_query_form(algo=2)) # algorithm right out of [0, 1]
+ tdSql.error(self.apercentile_query_form(algo=18446744073709551616)) # algorithm right out of unsigned-bigint
+
+ # mix function test
+ tdSql.error(self.apercentile_query_form(alias=', top(c1,1)')) # mix with top function
+ tdSql.error(self.apercentile_query_form(alias=', top(c1,1)')) # mix with bottom function
+ tdSql.error(self.apercentile_query_form(alias=', last_row(c1)')) # mix with last_row function
+ tdSql.error(self.apercentile_query_form(alias=', distinct c1 ')) # mix with distinct function
+ tdSql.error(self.apercentile_query_form(alias=', *')) # mix with *
+ tdSql.error(self.apercentile_query_form(alias=', diff(c1)')) # mix with diff function
+ tdSql.error(self.apercentile_query_form(alias=', interp(c1)', condition='ts="2021-10-10 00:00:00.000"')) # mix with interp function
+ tdSql.error(self.apercentile_query_form(alias=', derivative(c1, 10m, 0)')) # mix with derivative function
+ tdSql.error(self.apercentile_query_form(alias=', diff(c1)')) # mix with diff function
+ tdSql.error(self.apercentile_query_form(alias='+ c1)')) # mix with four operation
+
+ def apercentile_data(self, tbnum, data_row, basetime):
+ for i in range(tbnum):
+ for j in range(data_row):
+ tdSql.execute(
+ f"insert into t{i} values ("
+ f"{basetime + j*10}, {random.randint(-200, -1)}, {random.uniform(200, -1)}, {basetime + random.randint(-200, -1)}, "
+ f"'binary_{j}', {random.uniform(-200, -1)}, {random.choice([0,1])}, {random.randint(-200,-1)}, "
+ f"{random.randint(-200, -1)}, {random.randint(-127, -1)}, 'nchar_{j}' )"
+ )
+
+ tdSql.execute(
+ f"insert into t{i} values ("
+ f"{basetime - (j+1) * 10}, {random.randint(1, 200)}, {random.uniform(1, 200)}, {basetime - random.randint(1, 200)}, "
+ f"'binary_{j}_1', {random.uniform(1, 200)}, {random.choice([0, 1])}, {random.randint(1,200)}, "
+ f"{random.randint(1,200)}, {random.randint(1,127)}, 'nchar_{j}_1' )"
+ )
+ tdSql.execute(
+ f"insert into tt{i} values ( {basetime-(j+1) * 10}, {random.randint(1, 200)} )"
+ )
+
+ pass
+
+ def td6108(self):
+ tdLog.printNoPrefix("==========TD-6108==========")
+ tdSql.execute("drop database if exists db")
+ tdSql.execute("create database if not exists db keep 3650")
+ tdSql.execute("use db")
+
+ tdSql.execute(
+ "create stable db.stb1 (\
+ ts timestamp, c1 int, c2 float, c3 timestamp, c4 binary(16), c5 double, c6 bool, \
+ c7 bigint, c8 smallint, c9 tinyint, c10 nchar(16)\
+ ) \
+ tags(st1 int)"
+ )
+ tdSql.execute(
+ "create stable db.stb2 (ts timestamp, c1 int) tags(st2 int)"
+ )
+ tbnum = 10
+ for i in range(tbnum):
+ tdSql.execute(f"create table t{i} using stb1 tags({i})")
+ tdSql.execute(f"create table tt{i} using stb2 tags({i})")
+
+ tdLog.printNoPrefix("######## no data test:")
+ self.apercentile_query()
+ self.error_apercentile()
+
+ tdLog.printNoPrefix("######## insert data test:")
+ nowtime = int(round(time.time() * 1000))
+ per_table_rows = 1000
+ self.apercentile_data(tbnum, per_table_rows, nowtime)
+ self.apercentile_query()
+ self.error_apercentile()
+
+ tdLog.printNoPrefix("######## insert data with NULL test:")
+ tdSql.execute(f"insert into t1(ts) values ({nowtime-5})")
+ tdSql.execute(f"insert into t1(ts) values ({nowtime+5})")
+ self.apercentile_query()
+ self.error_apercentile()
+
+ tdLog.printNoPrefix("######## check after WAL test:")
+ tdSql.query("show dnodes")
+ index = tdSql.getData(0, 0)
+ tdDnodes.stop(index)
+ tdDnodes.start(index)
+
+ self.apercentile_query()
+ self.error_apercentile()
+
def run(self):
+ self.td4097()
+
# master branch
self.td3690()
- self.td4082()
+ # self.td4082()
self.td4288()
self.td4724()
self.td5935()
self.td6068()
- # develop branch
- # self.td4097()
- # self.td4889()
# self.td5168()
# self.td5433()
# self.td5798()
+ # develop branch
+ # self.td4889() In the scenario that with vnode/wal/wal* but without meta/data in vnode, the status is reset to 0 right now.
+ self.td5798()
+
def stop(self):
tdSql.close()
tdLog.success(f"{__file__} successfully executed")
diff --git a/tests/pytest/query/nestedQuery/nestedQuery.py b/tests/pytest/query/nestedQuery/nestedQuery.py
index 545f6429e825c468bdb07524329d6ea49944e379..2b6f8a63550ecb35907dca71cf94437cc2364605 100755
--- a/tests/pytest/query/nestedQuery/nestedQuery.py
+++ b/tests/pytest/query/nestedQuery/nestedQuery.py
@@ -470,9 +470,9 @@ class TDTestCase:
#inter && calc_aggregate_all\calc_aggregate_regular\calc_select_all
interval_sliding = ['interval(4w) sliding(1w) ','interval(1w) sliding(1d) ','interval(1d) sliding(1h) ' ,
- 'interval(1h) sliding(1m) ','interval(1m) sliding(1s) ','interval(1s) sliding(10a) ',
- 'interval(1y) ','interval(1n) ','interval(1w) ','interval(1d) ','interval(1h) ','interval(1m) ','interval(1s) ' ,'interval(10a)',
- 'interval(1y,1n) ','interval(1n,1w) ','interval(1w,1d) ','interval(1d,1h) ','interval(1h,1m) ','interval(1m,1s) ','interval(1s,10a) ' ,'interval(100a,30a)']
+ 'interval(1h) sliding(1m) ','interval(1m) sliding(1s) ','interval(1s) sliding(100a) ',
+ 'interval(1y) ','interval(1n) ','interval(1w) ','interval(1d) ','interval(1h) ','interval(1m) ','interval(1s) ' ,'interval(100a)',
+ 'interval(1y,1n) ','interval(1n,1w) ','interval(1w,1d) ','interval(1d,1h) ','interval(1h,1m) ','interval(1m,1s) ','interval(1s,100a) ' ,'interval(100a,30a)']
#1 select * from (select column form regular_table where <\>\in\and\or order by)
tdSql.query("select 1-1 from table_0;")
@@ -488,11 +488,10 @@ class TDTestCase:
tdLog.info(len(sql))
tdSql.query(sql)
#tdSql.checkData(0,0,'2020-09-13 20:26:40.000')
- tdSql.checkRows(6*self.num)
-
+ tdSql.checkRows(6*self.num)
#1 outer union not support
- dcDB = self.dropandcreateDB(random.randint(1,3))
+ #dcDB = self.dropandcreateDB(random.randint(1,3))
tdSql.query("select 1-2 from table_0;")
for i in range(self.fornum):
sql = "select ts , * from ( select "
@@ -2114,6 +2113,119 @@ class TDTestCase:
tdLog.info(len(sql))
tdSql.query(sql)
+ tdSql.query("select 21-1 from table_0;")
+ for i in range(self.fornum):
+ sql = "select avg(res1),min(res2),max(res3) from ( select "
+ sql += "%s res1, " % random.choice(calc_aggregate_all)
+ sql += "%s res2," % random.choice(calc_aggregate_all)
+ sql += "%s res3 " % random.choice(calc_aggregate_all)
+ sql += " from regular_table_1 t1 "
+ sql += " where %s " % random.choice(q_where)
+ sql += " %s ) " % random.choice(interval_sliding)
+ sql += " where ts >now-10h and ts < now+10h "
+ sql += "%s " % random.choice(interval_sliding)
+ sql += "%s " % random.choice(fill_where)
+ sql += "%s ;" % random.choice(limit_where)
+ tdLog.info(sql)
+ tdLog.info(len(sql))
+ tdSql.query(sql)
+
+ tdSql.query("select 21-2 from table_0;")
+ for i in range(self.fornum):
+ sql = "select avg(res1),min(res2),max(res3) from ( select "
+ sql += "%s res1, " % random.choice(calc_aggregate_all)
+ sql += "%s res2," % random.choice(calc_aggregate_all)
+ sql += "%s res3 " % random.choice(calc_aggregate_all)
+ sql += " from table_1 t1 "
+ sql += " where %s " % random.choice(q_where)
+ sql += " %s ) " % random.choice(interval_sliding)
+ sql += " where ts >now-10h and ts < now+10h "
+ sql += "%s " % random.choice(interval_sliding)
+ sql += "%s " % random.choice(fill_where)
+ sql += "%s ;" % random.choice([limit_where[2] , limit_where[3]] )
+ tdLog.info(sql)
+ tdLog.info(len(sql))
+ tdSql.query(sql)
+
+ tdSql.query("select 21-3 from table_0;")
+ for i in range(self.fornum):
+ sql = "select avg(res1),min(res2),max(res3) from ( select "
+ sql += "%s res1, " % random.choice(calc_aggregate_all)
+ sql += "%s res2," % random.choice(calc_aggregate_all)
+ sql += "%s res3 " % random.choice(calc_aggregate_all)
+ sql += " from stable_1 t1 "
+ sql += " where %s " % random.choice(q_where)
+ sql += " %s ) " % random.choice(interval_sliding)
+ sql += " where ts >now-10h and ts < now+10h "
+ sql += "%s " % random.choice(interval_sliding)
+ sql += "%s " % random.choice(fill_where)
+ sql += "%s ;" % random.choice(limit_where)
+ tdLog.info(sql)
+ tdLog.info(len(sql))
+ tdSql.query(sql)
+
+ tdSql.query("select 21-4 from table_0;")
+ for i in range(self.fornum):
+ sql = "select avg(res1),min(res2),max(res3) from ( select "
+ sql += "%s res1, " % random.choice(calc_aggregate_all)
+ sql += "%s res2," % random.choice(calc_aggregate_all)
+ sql += "%s res3 " % random.choice(calc_aggregate_all)
+ sql += " from regular_table_1 t1 "
+ sql += " where %s " % random.choice(q_where)
+ sql += " %s ) " % random.choice(interval_sliding)
+ sql += "group by ts "
+ sql += "%s ;" % random.choice(limit_where)
+ tdLog.info(sql)
+ tdLog.info(len(sql))
+ tdSql.query(sql)
+
+ tdSql.query("select 21-5 from table_0;")
+ for i in range(self.fornum):
+ sql = "select avg(res1),min(res2),max(res3) from ( select "
+ sql += "%s res1, " % random.choice(calc_aggregate_all)
+ sql += "%s res2," % random.choice(calc_aggregate_all)
+ sql += "%s res3 " % random.choice(calc_aggregate_all)
+ sql += " from table_1 t1 "
+ sql += " where %s " % random.choice(q_where)
+ sql += " %s ) " % random.choice(interval_sliding)
+ sql += "group by ts "
+ sql += "%s ;" % random.choice([limit_where[2] , limit_where[3]] )
+ tdLog.info(sql)
+ tdLog.info(len(sql))
+ tdSql.query(sql)
+
+ tdSql.query("select 21-6 from table_0;")
+ for i in range(self.fornum):
+ sql = "select avg(res1),min(res2),max(res3) from ( select "
+ sql += "%s res1, " % random.choice(calc_aggregate_all)
+ sql += "%s res2," % random.choice(calc_aggregate_all)
+ sql += "%s res3 " % random.choice(calc_aggregate_all)
+ sql += " from stable_1 t1 "
+ sql += " where %s " % random.choice(q_where)
+ sql += " %s ) " % random.choice(interval_sliding)
+ sql += "group by ts "
+ sql += "%s ;" % random.choice(limit_where)
+ tdLog.info(sql)
+ tdLog.info(len(sql))
+ tdSql.query(sql)
+
+ tdSql.query("select 21-7 from table_0;")
+ for i in range(self.fornum):
+ sql = "select avg(res1),min(res2),max(res3) from ( select "
+ sql += "%s res1, " % random.choice(calc_aggregate_all)
+ sql += "%s res2," % random.choice(calc_aggregate_all)
+ sql += "%s res3 " % random.choice(calc_aggregate_all)
+ sql += " from stable_1 t1 "
+ sql += " where %s " % random.choice(q_where)
+ sql += " %s " % random.choice(interval_sliding)
+ sql += " %s ) " % random.choice(group_where)
+ sql += "group by ts "
+ sql += "%s ;" % random.choice(limit_where)
+ tdLog.info(sql)
+ tdLog.info(len(sql))
+ tdSql.query(sql)
+
+
# error
#1 select * from (select * from (select * form regular_table where <\>\in\and\or order by limit ))
tdSql.query("select 1-1 from table_1;")
diff --git a/tests/pytest/query/queryGroupTbname.py b/tests/pytest/query/queryGroupTbname.py
index 095feed52fa7c44e2dd1b98a5f15c7034165b95e..73ee5f0fa8d2f358e34bab3336d6f64364b6af83 100644
--- a/tests/pytest/query/queryGroupTbname.py
+++ b/tests/pytest/query/queryGroupTbname.py
@@ -14,6 +14,7 @@ from util.log import tdLog
from util.cases import tdCases
from util.sql import tdSql
from util.common import tdCom
+import random
class TDTestCase:
def init(self, conn, logSql):
@@ -47,6 +48,26 @@ class TDTestCase:
for i in range(100):
tdSql.query(f'select {table_name_sub1},{table_name_sub2},{table_name_sub3},{table_name_sub4},{table_name_sub5},{table_name_sub6},{table_name_sub7},{table_name_sub8},{table_name_sub9} from {table_name} where tbname in ("{table_name_sub1}","{table_name_sub2}","{table_name_sub3}","{table_name_sub4}","{table_name_sub5}","{table_name_sub6}","{table_name_sub7}","{table_name_sub8}","{table_name_sub9}") and ts >= "1980-01-01 00:00:00.000"')
tdSql.checkRows(90)
+
+ # TS-634
+ tdLog.info("test case for bug TS-634")
+ tdSql.execute("create database test")
+ tdSql.execute("use test")
+ tdSql.execute("create table meters (ts TIMESTAMP,voltage INT) TAGS (tableid INT)")
+ tdSql.execute("CREATE TABLE t1 USING meters TAGS (1)")
+ tdSql.execute("CREATE TABLE t2 USING meters TAGS (2)")
+
+ ts = 1605381041000
+ for i in range(10):
+ tdSql.execute("INSERT INTO t1 values(%d, %d)" % (ts + i, random.randint(0, 100)))
+ tdSql.execute("INSERT INTO t2 values(%d, %d)" % (ts + i, random.randint(0, 100)))
+
+ tdSql.query("select last_row(*), tbname from meters group by tbname order by ts desc")
+ tdSql.checkRows(2)
+
+ tdSql.execute("INSERT INTO t2 values(now, 2)")
+ tdSql.query("select last_row(*), tbname from meters group by tbname order by ts desc")
+ tdSql.checkRows(2)
def run(self):
tdSql.prepare()
diff --git a/tests/pytest/query/queryStateWindow.py b/tests/pytest/query/queryStateWindow.py
index 251dbef65841cc17b31046320a7e966426c5eeb1..e43997eff3a8139b575537356dfb60f9692c35e3 100644
--- a/tests/pytest/query/queryStateWindow.py
+++ b/tests/pytest/query/queryStateWindow.py
@@ -42,8 +42,12 @@ class TDTestCase:
tdSql.execute(
"INSERT INTO dev_001 VALUES('2020-05-13 10:00:00.000', 1, '2020-05-13 10:00:00.000', 10, 3.1, 3.14, 'test', -10, -126, true, '测试', 15, 10, 65534, 254, 1)('2020-05-13 10:00:01.000', 1, '2020-05-13 10:00:01.000', 10, 3.1, 3.14, 'test', -10, -126, true, '测试', 15, 10, 65534, 253, 5)('2020-05-13 10:00:02.000', 10, '2020-05-13 10:00:00.000', 11, 3.1, 3.14, 'test', 10, -127, false, '测试', 15, 10, 65534, 253, 10)('2020-05-13 10:00:03.000', 1, '2020-05-13 10:00:00.000', 11, 3.1, 3.14, 'test', -10, -126, true, '测试', 14, 12, 65532, 254, 15)")
- for i in range(self.rowNum):
- tdSql.execute("insert into dev_002 (ts,t1) values(%d, %d,)" % (self.ts + i, i + 1))
+ for i in range(10):
+ sql = "insert into dev_002(ts, t1) values"
+ batch = int(self.rowNum / 10)
+ for j in range(batch):
+ sql += "(%d, %d)" % (self.ts + batch * i + j, batch * i + j)
+ tdSql.execute(sql)
tdSql.query("select count(ts) from dev_001 state_window(t1)")
tdSql.checkRows(3)
@@ -101,6 +105,42 @@ class TDTestCase:
tdSql.error("select count(*) from dev_001 state_window(t10)")
tdSql.error("select count(*) from dev_001 state_window(tag2)")
+ # TS-537
+ tdLog.info("case for TS-537")
+ tdSql.execute("create stable stb (ts timestamp, c1 int, c2 float) tags(tg1 int)")
+ tdSql.execute("CREATE TABLE IF NOT EXISTS db.tb1 USING db.stb TAGS (1)")
+ sql = "insert into tb1 values(1635398806734, 1, 1.000000)(1635398810062, 1, 2.000000)(1635398811528, 1, 3.000000)(1635398813301, 1, 4.000000)"
+ sql += "(1635398818507, 2, 1.000000)(1635398823464, 2, 1.000000)(1635398825150, 2, 1.000000)(1635398826453, 2, 1.000000)(1635399123037, 2, 2.000000)"
+ sql += "(1635399125335, 2, 2.000000)(1635399126292, 2, 2.000000)(1635399127288, 2, 2.000000)(1635399129361, 2, 2.000000)(1635399133331, 1, 2.000000)"
+ sql += "(1635399134179, 1, 2.000000)(1635399134909, 1, 2.000000)(1635399135617, 1, 2.000000)(1635399136372, 1, 2.000000)"
+ tdSql.execute(sql)
+
+ tdSql.query("select * from (select first(ts), count(*), c1 from db.tb1 state_window(c1))")
+ tdSql.checkRows(3)
+ tdSql.checkData(0, 1, 4)
+ tdSql.checkData(0, 2, 1)
+ tdSql.checkData(1, 1, 9)
+ tdSql.checkData(1, 2, 2)
+ tdSql.checkData(2, 1, 5)
+ tdSql.checkData(2, 2, 1)
+
+ tdSql.query("select fts, cnt, c1 from (select first(ts) fts, count(*) cnt, c1 from db.tb1 state_window(c1))")
+ tdSql.checkRows(3)
+ tdSql.checkData(0, 1, 4)
+ tdSql.checkData(0, 2, 1)
+ tdSql.checkData(1, 1, 9)
+ tdSql.checkData(1, 2, 2)
+ tdSql.checkData(2, 1, 5)
+ tdSql.checkData(2, 2, 1)
+
+ tdSql.query("select * from (select first(ts) fts, count(*) cnt, c1 from db.tb1 state_window(c1))")
+ tdSql.checkRows(3)
+ tdSql.checkData(0, 1, 4)
+ tdSql.checkData(0, 2, 1)
+ tdSql.checkData(1, 1, 9)
+ tdSql.checkData(1, 2, 2)
+ tdSql.checkData(2, 1, 5)
+ tdSql.checkData(2, 2, 1)
def stop(self):
tdSql.close()
diff --git a/tests/robust/robust.c b/tests/robust/robust.c
index 3488ca1b9be8b6cca4d04fe5ba5841f00527b25d..20abef6b306041f94b3474cbe6c201783bf81a87 100644
--- a/tests/robust/robust.c
+++ b/tests/robust/robust.c
@@ -188,12 +188,12 @@ void insertImp(void *param) {
return;
}
taos_free_result(result);
- int64_t time = getTimeStampMs();
+ int64_t test_time = getTimeStampMs();
while (true) {
sqlLen = sprintf(sql, "insert into");
for (int i = (pThread->threadId - 1) * arguments.stable / arguments.client; i < pThread->threadId * arguments.stable / arguments.client; i++) {
for (int j = 0; j < arguments.table; j++) {
- sqlLen += sprintf(sql + sqlLen, " s%d_%d values (%ld, %d, %d, %d)", i, j, time, rand(), rand(), rand());
+ sqlLen += sprintf(sql + sqlLen, " s%d_%d values (%ld, %d, %d, %d)", i, j, test_time, rand(), rand(), rand());
count++;
if ( (1048576 - sqlLen) < 49151 || i == (pThread->threadId * arguments.stable / arguments.client - 1)) {
result = taos_query(pThread->taos, sql);
@@ -208,7 +208,7 @@ void insertImp(void *param) {
}
}
}
- time += 1000*arguments.interval;
+ test_time += 1000*arguments.interval;
}
}
diff --git a/tests/script/api/stmt.c b/tests/script/api/stmt.c
index baf40c1421df1de4afcc8570288f642df067130a..ef62b22f9a52c226c0194173fd391ecb782c9e6b 100644
--- a/tests/script/api/stmt.c
+++ b/tests/script/api/stmt.c
@@ -247,16 +247,16 @@ void taos_stmt_bind_param_test() {
void taos_stmt_bind_single_param_batch_test() {
printf("start taos_stmt_bind_single_param_batch test\n");
TAOS_STMT * stmt = NULL;
- TAOS_MULTI_BIND *bind = NULL;
- assert(taos_stmt_bind_single_param_batch(stmt, bind, 0) != 0);
+ TAOS_MULTI_BIND *test_bind = NULL;
+ assert(taos_stmt_bind_single_param_batch(stmt, test_bind, 0) != 0);
printf("finish taos_stmt_bind_single_param_batch test\n");
}
void taos_stmt_bind_param_batch_test() {
printf("start taos_stmt_bind_param_batch test\n");
TAOS_STMT * stmt = NULL;
- TAOS_MULTI_BIND *bind = NULL;
- assert(taos_stmt_bind_param_batch(stmt, bind) != 0);
+ TAOS_MULTI_BIND *test_bind = NULL;
+ assert(taos_stmt_bind_param_batch(stmt, test_bind) != 0);
printf("finish taos_stmt_bind_param_batch test\n");
}
diff --git a/tests/script/general/parser/col_arithmetic_query.sim b/tests/script/general/parser/col_arithmetic_query.sim
index 17ae6cfd6b8b5636101e67e8d99f6999e50a06a5..2576b1442a7793ab4bb5d22d52ce950d885cdbd0 100644
--- a/tests/script/general/parser/col_arithmetic_query.sim
+++ b/tests/script/general/parser/col_arithmetic_query.sim
@@ -553,19 +553,19 @@ endi
sql_error select first(c6) - last(c6) *12 / count(*) from $stb group by c3;
sql select first(c6) - last(c6) *12 / count(*) from $stb group by c5;
-if $rows != 10 then
+if $rows != 11 then
return -1
endi
-if $data00 != 0.000000000 then
+if $data00 != -0.002160000 then
return -1
endi
-if $data10 != 0.997600000 then
+if $data10 != 0.000000000 then
return -1
endi
-if $data90 != 8.978400000 then
+if $data90 != 7.980800000 then
return -1
endi
diff --git a/tests/script/general/parser/like.sim b/tests/script/general/parser/like.sim
new file mode 100644
index 0000000000000000000000000000000000000000..3b1fbbf83e7ca0d08bb324a72dd7046463d8fe61
--- /dev/null
+++ b/tests/script/general/parser/like.sim
@@ -0,0 +1,100 @@
+system sh/stop_dnodes.sh
+system sh/deploy.sh -n dnode1 -i 1
+system sh/cfg.sh -n dnode1 -c walLevel -v 1
+system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 4
+system sh/exec.sh -n dnode1 -s start
+
+sleep 10
+sql connect
+print ======================== dnode1 start
+
+
+$db = testdb
+sql drop database if exists $db
+sql create database $db cachelast 2
+sql use $db
+
+$table1 = table_name
+$table2 = tablexname
+
+sql create table $table1 (ts timestamp, b binary(20))
+sql create table $table2 (ts timestamp, b binary(20))
+
+sql insert into $table1 values(now, "table_name")
+sql insert into $table1 values(now-1m, "tablexname")
+sql insert into $table1 values(now-2m, "tablexxx")
+sql insert into $table1 values(now-3m, "table")
+
+sql select b from $table1
+if $rows != 4 then
+ return -1
+endi
+
+sql select b from $table1 where b like 'table_name'
+if $rows != 2 then
+ return -1
+endi
+
+
+sql select b from $table1 where b like 'table\_name'
+if $rows != 1 then
+ return -1
+endi
+
+sql show tables;
+if $rows != 2 then
+ return -1
+endi
+
+sql show tables like 'table_name'
+if $rows != 2 then
+ return -1
+endi
+
+sql show tables like 'table\_name'
+if $rows != 1 then
+ return -1
+endi
+
+sql create database escape_percentage;
+sql use escape_percentage;
+$table1 = tablename
+$table2 = table2
+
+sql create table $table1 (ts timestamp, b binary(20))
+sql create table $table2 (ts timestamp, b binary(20))
+
+sql insert into $table1 values(now, "table%name")
+sql insert into $table1 values(now-1m, "table%")
+sql insert into $table1 values(now-2m, "table%%%")
+sql insert into $table1 values(now-3m, "table")
+
+sql select b from $table1 where b like 'table\%'
+print $rows
+if $rows != 1 then
+ return -1
+endi
+sql select b from $table1 where b like 'table\%\%\%'
+print $rows
+if $rows != 1 then
+ return -1
+endi
+sql select b from $table1 where b like 'table%'
+print $rows
+if $rows != 4 then
+ return -1
+endi
+sql show tables like 'table\%'
+print $rows
+if $rows != 0 then
+ return -1
+endi
+sql show tables like 'table%'
+print $rows
+if $rows != 2 then
+ return -1
+endi
+sql drop database escape_percentage
+system sh/exec.sh -n dnode1 -s stop -x SIGINT
+
+
diff --git a/tests/script/general/parser/nestquery.sim b/tests/script/general/parser/nestquery.sim
index 4182b867053d5d26cdc95970c545fd0c5f20d09c..ed1e9d47909af13647114d0e45e34b60f66d303e 100644
--- a/tests/script/general/parser/nestquery.sim
+++ b/tests/script/general/parser/nestquery.sim
@@ -884,5 +884,18 @@ if $data00 != 24 then
return -1
endi
+sql select sum(a)/sum(b) from meters where ts >= '2021-09-30 15:00:00.000' and ts <= '2021-09-30 15:00:05.000' interval(1s) fill(null) group by area order by area;
+if $rows != 12 then
+ return -1
+endi
+if $data00 != @21-09-30 15:00:00.000@ then
+ return -1
+endi
+if $data01 != NULL then
+ return -1
+endi
+if $data02 != 0 then
+ return -1
+endi
system sh/exec.sh -n dnode1 -s stop -x SIGINT
diff --git a/tests/tsim/src/simExe.c b/tests/tsim/src/simExe.c
index 397accfea57fec92dbe2b7f9b5c4b730a91e9cbd..843335406c60db688649daf452286420d09928f1 100644
--- a/tests/tsim/src/simExe.c
+++ b/tests/tsim/src/simExe.c
@@ -143,13 +143,13 @@ char *simGetVariable(SScript *script, char *varName, int32_t varLen) {
return var->varValue;
}
-int32_t simExecuteExpression(SScript *script, char *exp) {
+int32_t simExecuteExpression(SScript *script, char *sim_exp) {
char * op1, *op2, *var1, *var2, *var3, *rest;
int32_t op1Len, op2Len, var1Len, var2Len, var3Len, val0, val1;
char t0[1024], t1[1024], t2[1024], t3[2048];
int32_t result;
- rest = paGetToken(exp, &var1, &var1Len);
+ rest = paGetToken(sim_exp, &var1, &var1Len);
rest = paGetToken(rest, &op1, &op1Len);
rest = paGetToken(rest, &var2, &var2Len);
rest = paGetToken(rest, &op2, &op2Len);
diff --git a/tests/tsim/src/simParse.c b/tests/tsim/src/simParse.c
index 1acdcd2ac6eb0ecb66e2977dee7577393ed242ef..4dc189d20e235ff70df5ebe76faaa50fc3e20116 100644
--- a/tests/tsim/src/simParse.c
+++ b/tests/tsim/src/simParse.c
@@ -251,11 +251,11 @@ SScript *simParseScript(char *fileName) {
return script;
}
-int32_t simCheckExpression(char *exp) {
+int32_t simCheckExpression(char *sim_exp) {
char * op1, *op2, *op, *rest;
int32_t op1Len, op2Len, opLen;
- rest = paGetToken(exp, &op1, &op1Len);
+ rest = paGetToken(sim_exp, &op1, &op1Len);
if (op1Len == 0) {
sprintf(parseErr, "expression is required");
return -1;
@@ -295,10 +295,10 @@ int32_t simCheckExpression(char *exp) {
rest = paGetToken(rest, &op, &opLen);
- if (opLen == 0) return (int32_t)(rest - exp);
+ if (opLen == 0) return (int32_t)(rest - sim_exp);
/* if it is key word "then" */
- if (strncmp(op, "then", 4) == 0) return (int32_t)(op - exp);
+ if (strncmp(op, "then", 4) == 0) return (int32_t)(op - sim_exp);
rest = paGetToken(rest, &op2, &op2Len);
if (op2Len == 0) {
@@ -312,7 +312,7 @@ int32_t simCheckExpression(char *exp) {
}
if (op[0] == '+' || op[0] == '-' || op[0] == '*' || op[0] == '/' || op[0] == '.') {
- return (int32_t)(rest - exp);
+ return (int32_t)(rest - sim_exp);
}
return -1;
diff --git a/tests/tsim/src/simSystem.c b/tests/tsim/src/simSystem.c
index 0879e371ef62fee81786728e2b980442567fbaa1..1ee7d94b915e6db3881f359b6f14565ddc55f450 100644
--- a/tests/tsim/src/simSystem.c
+++ b/tests/tsim/src/simSystem.c
@@ -43,9 +43,9 @@ char *simParseArbitratorName(char *varName) {
char *simParseHostName(char *varName) {
static char hostName[140];
- int32_t index = atoi(varName + 8);
+ int32_t sim_index = atoi(varName + 8);
int32_t port = 7100;
- switch (index) {
+ switch (sim_index) {
case 1:
port = 7100;
break;
|