Merge branch '3.0' of https://github.com/taosdata/TDengine into refact/tsdb_last
This commit is contained in:
commit
538f130ac0
|
@ -1,38 +1,8 @@
|
||||||
IF (EXISTS /var/lib/taos/dnode/dnodeCfg.json)
|
IF (TD_LINUX)
|
||||||
INSTALL(CODE "MESSAGE(\"The default data directory /var/lib/taos contains old data of tdengine 2.x, please clear it before installing!\")")
|
|
||||||
ELSEIF (EXISTS C:/TDengine/data/dnode/dnodeCfg.json)
|
|
||||||
INSTALL(CODE "MESSAGE(\"The default data directory C:/TDengine/data contains old data of tdengine 2.x, please clear it before installing!\")")
|
|
||||||
ELSEIF (TD_LINUX)
|
|
||||||
SET(TD_MAKE_INSTALL_SH "${TD_SOURCE_DIR}/packaging/tools/make_install.sh")
|
SET(TD_MAKE_INSTALL_SH "${TD_SOURCE_DIR}/packaging/tools/make_install.sh")
|
||||||
INSTALL(CODE "MESSAGE(\"make install script: ${TD_MAKE_INSTALL_SH}\")")
|
INSTALL(CODE "MESSAGE(\"make install script: ${TD_MAKE_INSTALL_SH}\")")
|
||||||
INSTALL(CODE "execute_process(COMMAND bash ${TD_MAKE_INSTALL_SH} ${TD_SOURCE_DIR} ${PROJECT_BINARY_DIR} Linux ${TD_VER_NUMBER})")
|
INSTALL(CODE "execute_process(COMMAND bash ${TD_MAKE_INSTALL_SH} ${TD_SOURCE_DIR} ${PROJECT_BINARY_DIR} Linux ${TD_VER_NUMBER})")
|
||||||
ELSEIF (TD_WINDOWS)
|
ELSEIF (TD_WINDOWS)
|
||||||
SET(CMAKE_INSTALL_PREFIX C:/TDengine)
|
|
||||||
|
|
||||||
# INSTALL(DIRECTORY ${TD_SOURCE_DIR}/src/connector/go DESTINATION connector)
|
|
||||||
# INSTALL(DIRECTORY ${TD_SOURCE_DIR}/src/connector/nodejs DESTINATION connector)
|
|
||||||
# INSTALL(DIRECTORY ${TD_SOURCE_DIR}/src/connector/python DESTINATION connector)
|
|
||||||
# INSTALL(DIRECTORY ${TD_SOURCE_DIR}/src/connector/C\# DESTINATION connector)
|
|
||||||
# INSTALL(DIRECTORY ${TD_SOURCE_DIR}/examples DESTINATION .)
|
|
||||||
INSTALL(CODE "IF (NOT EXISTS ${CMAKE_INSTALL_PREFIX}/cfg/taos.cfg)
|
|
||||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${TD_SOURCE_DIR}/packaging/cfg/taos.cfg ${CMAKE_INSTALL_PREFIX}/cfg/taos.cfg)
|
|
||||||
ENDIF ()")
|
|
||||||
INSTALL(FILES ${TD_SOURCE_DIR}/include/client/taos.h DESTINATION include)
|
|
||||||
INSTALL(FILES ${TD_SOURCE_DIR}/include/util/taoserror.h DESTINATION include)
|
|
||||||
INSTALL(FILES ${TD_SOURCE_DIR}/include/libs/function/taosudf.h DESTINATION include)
|
|
||||||
INSTALL(FILES ${LIBRARY_OUTPUT_PATH}/taos.lib DESTINATION driver)
|
|
||||||
INSTALL(FILES ${LIBRARY_OUTPUT_PATH}/taos_static.lib DESTINATION driver)
|
|
||||||
INSTALL(FILES ${LIBRARY_OUTPUT_PATH}/taos.dll DESTINATION driver)
|
|
||||||
INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/taos.exe DESTINATION .)
|
|
||||||
INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/taosd.exe DESTINATION .)
|
|
||||||
INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/udfd.exe DESTINATION .)
|
|
||||||
IF (BUILD_TOOLS)
|
|
||||||
INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/taosBenchmark.exe DESTINATION .)
|
|
||||||
ENDIF ()
|
|
||||||
|
|
||||||
IF (TD_MVN_INSTALLED)
|
|
||||||
INSTALL(FILES ${LIBRARY_OUTPUT_PATH}/taos-jdbcdriver-2.0.38-dist.jar DESTINATION connector/jdbc)
|
|
||||||
ENDIF ()
|
|
||||||
SET(TD_MAKE_INSTALL_SH "${TD_SOURCE_DIR}/packaging/tools/make_install.bat")
|
SET(TD_MAKE_INSTALL_SH "${TD_SOURCE_DIR}/packaging/tools/make_install.bat")
|
||||||
INSTALL(CODE "MESSAGE(\"make install script: ${TD_MAKE_INSTALL_SH}\")")
|
INSTALL(CODE "MESSAGE(\"make install script: ${TD_MAKE_INSTALL_SH}\")")
|
||||||
INSTALL(CODE "execute_process(COMMAND ${TD_MAKE_INSTALL_SH} :needAdmin ${TD_SOURCE_DIR} ${PROJECT_BINARY_DIR} Windows ${TD_VER_NUMBER})")
|
INSTALL(CODE "execute_process(COMMAND ${TD_MAKE_INSTALL_SH} :needAdmin ${TD_SOURCE_DIR} ${PROJECT_BINARY_DIR} Windows ${TD_VER_NUMBER})")
|
||||||
|
|
|
@ -135,24 +135,6 @@ execute_process(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
|
||||||
WORKING_DIRECTORY "${TD_CONTRIB_DIR}/deps-download")
|
WORKING_DIRECTORY "${TD_CONTRIB_DIR}/deps-download")
|
||||||
execute_process(COMMAND "${CMAKE_COMMAND}" --build .
|
execute_process(COMMAND "${CMAKE_COMMAND}" --build .
|
||||||
WORKING_DIRECTORY "${TD_CONTRIB_DIR}/deps-download")
|
WORKING_DIRECTORY "${TD_CONTRIB_DIR}/deps-download")
|
||||||
|
|
||||||
# clear submodule
|
|
||||||
execute_process(COMMAND git submodule deinit -f tools/taos-tools
|
|
||||||
WORKING_DIRECTORY "${TD_SOURCE_DIR}")
|
|
||||||
execute_process(COMMAND git rm --cached tools/taos-tools
|
|
||||||
WORKING_DIRECTORY "${TD_SOURCE_DIR}")
|
|
||||||
execute_process(COMMAND git submodule deinit -f tools/taosadapter
|
|
||||||
WORKING_DIRECTORY "${TD_SOURCE_DIR}")
|
|
||||||
execute_process(COMMAND git rm --cached tools/taosadapter
|
|
||||||
WORKING_DIRECTORY "${TD_SOURCE_DIR}")
|
|
||||||
execute_process(COMMAND git submodule deinit -f tools/taosws-rs
|
|
||||||
WORKING_DIRECTORY "${TD_SOURCE_DIR}")
|
|
||||||
execute_process(COMMAND git rm --cached tools/taosws-rs
|
|
||||||
WORKING_DIRECTORY "${TD_SOURCE_DIR}")
|
|
||||||
execute_process(COMMAND git submodule deinit -f examples/rust
|
|
||||||
WORKING_DIRECTORY "${TD_SOURCE_DIR}")
|
|
||||||
execute_process(COMMAND git rm --cached examples/rust
|
|
||||||
WORKING_DIRECTORY "${TD_SOURCE_DIR}")
|
|
||||||
|
|
||||||
# ================================================================================================
|
# ================================================================================================
|
||||||
# Build
|
# Build
|
||||||
|
|
|
@ -1,7 +1,47 @@
|
||||||
@echo off
|
@echo off
|
||||||
goto %1
|
goto %1
|
||||||
:needAdmin
|
:needAdmin
|
||||||
|
|
||||||
|
if exist C:\\TDengine\\data\\dnode\\dnodeCfg.json (
|
||||||
|
echo The default data directory C:/TDengine/data contains old data of tdengine 2.x, please clear it before installing!
|
||||||
|
)
|
||||||
|
set source_dir=%2
|
||||||
|
set source_dir=%source_dir:/=\\%
|
||||||
|
set binary_dir=%3
|
||||||
|
set binary_dir=%binary_dir:/=\\%
|
||||||
|
set osType=%4
|
||||||
|
set verNumber=%5
|
||||||
|
set tagert_dir=C:\\TDengine
|
||||||
|
|
||||||
|
if not exist %tagert_dir% (
|
||||||
|
mkdir %tagert_dir%
|
||||||
|
)
|
||||||
|
if not exist %tagert_dir%\\cfg (
|
||||||
|
mkdir %tagert_dir%\\cfg
|
||||||
|
)
|
||||||
|
if not exist %tagert_dir%\\include (
|
||||||
|
mkdir %tagert_dir%\\include
|
||||||
|
)
|
||||||
|
if not exist %tagert_dir%\\driver (
|
||||||
|
mkdir %tagert_dir%\\driver
|
||||||
|
)
|
||||||
|
if not exist C:\\TDengine\\cfg\\taos.cfg (
|
||||||
|
copy %source_dir%\\packaging\\cfg\\taos.cfg %tagert_dir%\\cfg\\taos.cfg > nul
|
||||||
|
)
|
||||||
|
copy %source_dir%\\include\\client\\taos.h %tagert_dir%\\include > nul
|
||||||
|
copy %source_dir%\\include\\util\\taoserror.h %tagert_dir%\\include > nul
|
||||||
|
copy %source_dir%\\include\\libs\\function\\taosudf.h %tagert_dir%\\include > nul
|
||||||
|
copy %binary_dir%\\build\\lib\\taos.lib %tagert_dir%\\driver > nul
|
||||||
|
copy %binary_dir%\\build\\lib\\taos_static.lib %tagert_dir%\\driver > nul
|
||||||
|
copy %binary_dir%\\build\\lib\\taos.dll %tagert_dir%\\driver > nul
|
||||||
|
copy %binary_dir%\\build\\bin\\taos.exe %tagert_dir% > nul
|
||||||
|
copy %binary_dir%\\build\\bin\\taosd.exe %tagert_dir% > nul
|
||||||
|
copy %binary_dir%\\build\\bin\\udfd.exe %tagert_dir% > nul
|
||||||
|
if exist %binary_dir%\\build\\bin\\taosBenchmark.exe (
|
||||||
|
copy %binary_dir%\\build\\bin\\taosBenchmark.exe %tagert_dir% > nul
|
||||||
|
)
|
||||||
|
|
||||||
mshta vbscript:createobject("shell.application").shellexecute("%~s0",":hasAdmin","","runas",1)(window.close)&& echo To start/stop TDengine with administrator privileges: sc start/stop taosd &goto :eof
|
mshta vbscript:createobject("shell.application").shellexecute("%~s0",":hasAdmin","","runas",1)(window.close)&& echo To start/stop TDengine with administrator privileges: sc start/stop taosd &goto :eof
|
||||||
:hasAdmin
|
:hasAdmin
|
||||||
cp -f C:\\TDengine\\driver\\taos.dll C:\\Windows\\System32
|
copy /y C:\\TDengine\\driver\\taos.dll C:\\Windows\\System32 > nul
|
||||||
sc query "taosd" >nul || sc create "taosd" binPath= "C:\\TDengine\\taosd.exe --win_service" start= DEMAND
|
sc query "taosd" >nul || sc create "taosd" binPath= "C:\\TDengine\\taosd.exe --win_service" start= DEMAND
|
||||||
|
|
|
@ -664,7 +664,9 @@ function install_TDengine() {
|
||||||
## ==============================Main program starts from here============================
|
## ==============================Main program starts from here============================
|
||||||
echo source directory: $1
|
echo source directory: $1
|
||||||
echo binary directory: $2
|
echo binary directory: $2
|
||||||
if [ "$osType" != "Darwin" ]; then
|
if [ -x ${data_dir}/dnode/dnodeCfg.json ]; then
|
||||||
|
echo -e "\033[44;31;5mThe default data directory ${data_dir} contains old data of tdengine 2.x, please clear it before installing!\033[0m"
|
||||||
|
elif [ "$osType" != "Darwin" ]; then
|
||||||
if [ -x ${bin_dir}/${clientName} ]; then
|
if [ -x ${bin_dir}/${clientName} ]; then
|
||||||
update_TDengine
|
update_TDengine
|
||||||
else
|
else
|
||||||
|
|
|
@ -286,7 +286,7 @@ void tsdbUntakeReadSnap(STsdb *pTsdb, STsdbReadSnap *pSnap);
|
||||||
|
|
||||||
// tsdbCache
|
// tsdbCache
|
||||||
int32_t tsdbOpenCache(STsdb *pTsdb);
|
int32_t tsdbOpenCache(STsdb *pTsdb);
|
||||||
void tsdbCloseCache(SLRUCache *pCache);
|
void tsdbCloseCache(STsdb *pTsdb);
|
||||||
int32_t tsdbCacheInsertLast(SLRUCache *pCache, tb_uid_t uid, STSRow *row, STsdb *pTsdb);
|
int32_t tsdbCacheInsertLast(SLRUCache *pCache, tb_uid_t uid, STSRow *row, STsdb *pTsdb);
|
||||||
int32_t tsdbCacheInsertLastrow(SLRUCache *pCache, STsdb *pTsdb, tb_uid_t uid, STSRow *row, bool dup);
|
int32_t tsdbCacheInsertLastrow(SLRUCache *pCache, STsdb *pTsdb, tb_uid_t uid, STSRow *row, bool dup);
|
||||||
int32_t tsdbCacheGetLastH(SLRUCache *pCache, tb_uid_t uid, STsdb *pTsdb, LRUHandle **h);
|
int32_t tsdbCacheGetLastH(SLRUCache *pCache, tb_uid_t uid, STsdb *pTsdb, LRUHandle **h);
|
||||||
|
@ -317,6 +317,7 @@ struct STsdb {
|
||||||
SMemTable *imem;
|
SMemTable *imem;
|
||||||
STsdbFS fs;
|
STsdbFS fs;
|
||||||
SLRUCache *lruCache;
|
SLRUCache *lruCache;
|
||||||
|
TdThreadMutex lruMutex;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TSDBKEY {
|
struct TSDBKEY {
|
||||||
|
|
|
@ -33,16 +33,21 @@ int32_t tsdbOpenCache(STsdb *pTsdb) {
|
||||||
|
|
||||||
taosLRUCacheSetStrictCapacity(pCache, true);
|
taosLRUCacheSetStrictCapacity(pCache, true);
|
||||||
|
|
||||||
|
taosThreadMutexInit(&pTsdb->lruMutex, NULL);
|
||||||
|
|
||||||
_err:
|
_err:
|
||||||
pTsdb->lruCache = pCache;
|
pTsdb->lruCache = pCache;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
void tsdbCloseCache(SLRUCache *pCache) {
|
void tsdbCloseCache(STsdb *pTsdb) {
|
||||||
|
SLRUCache *pCache = pTsdb->lruCache;
|
||||||
if (pCache) {
|
if (pCache) {
|
||||||
taosLRUCacheEraseUnrefEntries(pCache);
|
taosLRUCacheEraseUnrefEntries(pCache);
|
||||||
|
|
||||||
taosLRUCacheCleanup(pCache);
|
taosLRUCacheCleanup(pCache);
|
||||||
|
|
||||||
|
taosThreadMutexDestroy(&pTsdb->lruMutex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1278,29 +1283,40 @@ int32_t tsdbCacheGetLastrowH(SLRUCache *pCache, tb_uid_t uid, STsdb *pTsdb, LRUH
|
||||||
// getTableCacheKeyS(uid, "lr", key, &keyLen);
|
// getTableCacheKeyS(uid, "lr", key, &keyLen);
|
||||||
getTableCacheKey(uid, 0, key, &keyLen);
|
getTableCacheKey(uid, 0, key, &keyLen);
|
||||||
LRUHandle *h = taosLRUCacheLookup(pCache, key, keyLen);
|
LRUHandle *h = taosLRUCacheLookup(pCache, key, keyLen);
|
||||||
if (h) {
|
if (!h) {
|
||||||
} else {
|
taosThreadMutexLock(&pTsdb->lruMutex);
|
||||||
STSRow *pRow = NULL;
|
|
||||||
bool dup = false; // which is always false for now
|
|
||||||
code = mergeLastRow(uid, pTsdb, &dup, &pRow);
|
|
||||||
// if table's empty or error, return code of -1
|
|
||||||
if (code < 0 || pRow == NULL) {
|
|
||||||
if (!dup && pRow) {
|
|
||||||
taosMemoryFree(pRow);
|
|
||||||
}
|
|
||||||
|
|
||||||
*handle = NULL;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
_taos_lru_deleter_t deleter = deleteTableCacheLastrow;
|
|
||||||
LRUStatus status =
|
|
||||||
taosLRUCacheInsert(pCache, key, keyLen, pRow, TD_ROW_LEN(pRow), deleter, NULL, TAOS_LRU_PRIORITY_LOW);
|
|
||||||
if (status != TAOS_LRU_STATUS_OK) {
|
|
||||||
code = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
h = taosLRUCacheLookup(pCache, key, keyLen);
|
h = taosLRUCacheLookup(pCache, key, keyLen);
|
||||||
|
if (!h) {
|
||||||
|
STSRow *pRow = NULL;
|
||||||
|
bool dup = false; // which is always false for now
|
||||||
|
code = mergeLastRow(uid, pTsdb, &dup, &pRow);
|
||||||
|
// if table's empty or error, return code of -1
|
||||||
|
if (code < 0 || pRow == NULL) {
|
||||||
|
if (!dup && pRow) {
|
||||||
|
taosMemoryFree(pRow);
|
||||||
|
}
|
||||||
|
|
||||||
|
taosThreadMutexUnlock(&pTsdb->lruMutex);
|
||||||
|
|
||||||
|
*handle = NULL;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
_taos_lru_deleter_t deleter = deleteTableCacheLastrow;
|
||||||
|
LRUStatus status =
|
||||||
|
taosLRUCacheInsert(pCache, key, keyLen, pRow, TD_ROW_LEN(pRow), deleter, NULL, TAOS_LRU_PRIORITY_LOW);
|
||||||
|
if (status != TAOS_LRU_STATUS_OK) {
|
||||||
|
code = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
taosThreadMutexUnlock(&pTsdb->lruMutex);
|
||||||
|
|
||||||
|
h = taosLRUCacheLookup(pCache, key, keyLen);
|
||||||
|
} else {
|
||||||
|
taosThreadMutexUnlock(&pTsdb->lruMutex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*handle = h;
|
*handle = h;
|
||||||
|
|
|
@ -86,7 +86,7 @@ int tsdbClose(STsdb **pTsdb) {
|
||||||
if (*pTsdb) {
|
if (*pTsdb) {
|
||||||
taosThreadRwlockDestroy(&(*pTsdb)->rwLock);
|
taosThreadRwlockDestroy(&(*pTsdb)->rwLock);
|
||||||
tsdbFSClose(*pTsdb);
|
tsdbFSClose(*pTsdb);
|
||||||
tsdbCloseCache((*pTsdb)->lruCache);
|
tsdbCloseCache(*pTsdb);
|
||||||
taosMemoryFreeClear(*pTsdb);
|
taosMemoryFreeClear(*pTsdb);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue