提交 d8a3c95d 编写于 作者: Z zyyang

Merge branch 'feature/TD-5992' of github.com:taosdata/TDengine into feature/TD-5992

...@@ -32,7 +32,7 @@ ELSEIF (TD_WINDOWS) ...@@ -32,7 +32,7 @@ ELSEIF (TD_WINDOWS)
#INSTALL(TARGETS taos RUNTIME DESTINATION driver) #INSTALL(TARGETS taos RUNTIME DESTINATION driver)
#INSTALL(TARGETS shell RUNTIME DESTINATION .) #INSTALL(TARGETS shell RUNTIME DESTINATION .)
IF (TD_MVN_INSTALLED) IF (TD_MVN_INSTALLED)
INSTALL(FILES ${LIBRARY_OUTPUT_PATH}/taos-jdbcdriver-2.0.34-dist.jar DESTINATION connector/jdbc) INSTALL(FILES ${LIBRARY_OUTPUT_PATH}/taos-jdbcdriver-2.0.35-dist.jar DESTINATION connector/jdbc)
ENDIF () ENDIF ()
ELSEIF (TD_DARWIN) ELSEIF (TD_DARWIN)
SET(TD_MAKE_INSTALL_SH "${TD_COMMUNITY_DIR}/packaging/tools/make_install.sh") SET(TD_MAKE_INSTALL_SH "${TD_COMMUNITY_DIR}/packaging/tools/make_install.sh")
......
...@@ -443,7 +443,7 @@ static int taos_set_config_imp(const char *config){ ...@@ -443,7 +443,7 @@ static int taos_set_config_imp(const char *config){
static bool setConfFlag = false; static bool setConfFlag = false;
if (setConfFlag) { if (setConfFlag) {
tscError("already set config"); tscError("already set config");
return -1; return 0;
} }
cJSON *root = cJSON_Parse(config); cJSON *root = cJSON_Parse(config);
if (root == NULL) { if (root == NULL) {
...@@ -451,18 +451,22 @@ static int taos_set_config_imp(const char *config){ ...@@ -451,18 +451,22 @@ static int taos_set_config_imp(const char *config){
return -1; return -1;
} }
int ret = 0;
int size = cJSON_GetArraySize(root); int size = cJSON_GetArraySize(root);
for(int i = 0; i < size; i++){ for(int i = 0; i < size; i++){
cJSON *item = cJSON_GetArrayItem(root, i); cJSON *item = cJSON_GetArrayItem(root, i);
if (!item) { if (!item) {
tscError("failed to read index:%d", i); tscError("failed to read index:%d", i);
ret = -2;
continue; continue;
} }
taosReadConfigOption(item->string, item->valuestring, NULL, NULL); if(!taosReadConfigOption(item->string, item->valuestring, NULL, NULL)){
ret = -2;
}
} }
taosPrintGlobalCfg(); taosPrintGlobalCfg();
setConfFlag = true; setConfFlag = true;
return 0; return ret;
} }
int taos_set_config(const char *config){ int taos_set_config(const char *config){
......
...@@ -8,7 +8,7 @@ IF (TD_MVN_INSTALLED) ...@@ -8,7 +8,7 @@ IF (TD_MVN_INSTALLED)
ADD_CUSTOM_COMMAND(OUTPUT ${JDBC_CMD_NAME} ADD_CUSTOM_COMMAND(OUTPUT ${JDBC_CMD_NAME}
POST_BUILD POST_BUILD
COMMAND mvn -Dmaven.test.skip=true install -f ${CMAKE_CURRENT_SOURCE_DIR}/pom.xml COMMAND mvn -Dmaven.test.skip=true install -f ${CMAKE_CURRENT_SOURCE_DIR}/pom.xml
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/target/taos-jdbcdriver-2.0.34-dist.jar ${LIBRARY_OUTPUT_PATH} COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/target/taos-jdbcdriver-2.0.35-dist.jar ${LIBRARY_OUTPUT_PATH}
COMMAND mvn -Dmaven.test.skip=true clean -f ${CMAKE_CURRENT_SOURCE_DIR}/pom.xml COMMAND mvn -Dmaven.test.skip=true clean -f ${CMAKE_CURRENT_SOURCE_DIR}/pom.xml
COMMENT "build jdbc driver") COMMENT "build jdbc driver")
ADD_CUSTOM_TARGET(${JDBC_TARGET_NAME} ALL WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} DEPENDS ${JDBC_CMD_NAME}) ADD_CUSTOM_TARGET(${JDBC_TARGET_NAME} ALL WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} DEPENDS ${JDBC_CMD_NAME})
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<groupId>com.taosdata.jdbc</groupId> <groupId>com.taosdata.jdbc</groupId>
<artifactId>taos-jdbcdriver</artifactId> <artifactId>taos-jdbcdriver</artifactId>
<version>2.0.34</version> <version>2.0.35</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>JDBCDriver</name> <name>JDBCDriver</name>
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.taosdata.jdbc</groupId> <groupId>com.taosdata.jdbc</groupId>
<artifactId>taos-jdbcdriver</artifactId> <artifactId>taos-jdbcdriver</artifactId>
<version>2.0.34</version> <version>2.0.35</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>JDBCDriver</name> <name>JDBCDriver</name>
<url>https://github.com/taosdata/TDengine/tree/master/src/connector/jdbc</url> <url>https://github.com/taosdata/TDengine/tree/master/src/connector/jdbc</url>
......
...@@ -118,9 +118,6 @@ public class TSDBDriver extends AbstractDriver { ...@@ -118,9 +118,6 @@ public class TSDBDriver extends AbstractDriver {
} }
public Connection connect(String url, Properties info) throws SQLException { public Connection connect(String url, Properties info) throws SQLException {
if (url == null)
throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_URL_NOT_SET);
if (!acceptsURL(url)) if (!acceptsURL(url))
return null; return null;
......
...@@ -38,14 +38,6 @@ public class TSDBJNIConnector { ...@@ -38,14 +38,6 @@ public class TSDBJNIConnector {
System.loadLibrary("taos"); System.loadLibrary("taos");
} }
public boolean isClosed() {
return this.taos == TSDBConstants.JNI_NULL_POINTER;
}
public boolean isResultsetClosed() {
return this.isResultsetClosed;
}
public static void init(String configDir, String locale, String charset, String timezone) throws SQLWarning { public static void init(String configDir, String locale, String charset, String timezone) throws SQLWarning {
synchronized (isInitialized) { synchronized (isInitialized) {
if (!isInitialized) { if (!isInitialized) {
...@@ -71,6 +63,8 @@ public class TSDBJNIConnector { ...@@ -71,6 +63,8 @@ public class TSDBJNIConnector {
public static native String getTsCharset(); public static native String getTsCharset();
public static native int setConfig(String config);
public boolean connect(String host, int port, String dbName, String user, String password) throws SQLException { public boolean connect(String host, int port, String dbName, String user, String password) throws SQLException {
if (this.taos != TSDBConstants.JNI_NULL_POINTER) { if (this.taos != TSDBConstants.JNI_NULL_POINTER) {
closeConnection(); closeConnection();
...@@ -159,6 +153,14 @@ public class TSDBJNIConnector { ...@@ -159,6 +153,14 @@ public class TSDBJNIConnector {
private native long isUpdateQueryImp(long connection, long pSql); private native long isUpdateQueryImp(long connection, long pSql);
public boolean isClosed() {
return this.taos == TSDBConstants.JNI_NULL_POINTER;
}
public boolean isResultsetClosed() {
return this.isResultsetClosed;
}
/** /**
* Free result set operation from C to release result set pointer by JNI * Free result set operation from C to release result set pointer by JNI
*/ */
...@@ -357,4 +359,6 @@ public class TSDBJNIConnector { ...@@ -357,4 +359,6 @@ public class TSDBJNIConnector {
} }
private native int insertLinesImp(String[] lines, long conn); private native int insertLinesImp(String[] lines, long conn);
} }
package com.taosdata.jdbc;
import org.junit.Test;
import java.sql.SQLException;
import java.util.Arrays;
import static org.junit.Assert.*;
public class SetConfigurationInJNITest {
private String host = "127.0.0.1";
private String dbname = "test_jni";
private long maxSQLLength = 1024000;
private String debugFlagJSON = "{ \"debugFlag\": 135}";
private String maxSqlLengthJSON = "{ \"maxSQLLength\": " + maxSQLLength + "}";
@Test
public void testDebugFlag() {
try {
// init
TSDBJNIConnector.initImp(null);
TSDBJNIConnector.setOptions(0, null);
TSDBJNIConnector.setOptions(1, null);
TSDBJNIConnector.setOptions(2, null);
String tsCharset = TSDBJNIConnector.getTsCharset();
assertEquals("", tsCharset);
TSDBJNIConnector.setConfig(debugFlagJSON);
// connect
TSDBJNIConnector jniConnector = new TSDBJNIConnector();
boolean connected = jniConnector.connect(host, 0, null, "root", "taosdata");
assertTrue(connected);
String[] setupSqls = {
"drop database if exists " + dbname,
"create database if not exists " + dbname,
"use " + dbname,
"create table weather(ts timestamp, f1 int) tags(loc nchar(10))",
"insert into t1 using weather tags('beijing') values(now, 1)",
"drop database if exists " + dbname
};
Arrays.asList(setupSqls).forEach(sql -> {
try {
long setupSql = jniConnector.executeQuery(sql);
if (jniConnector.isUpdateQuery(setupSql)) {
jniConnector.freeResultSet(setupSql);
}
} catch (SQLException e) {
e.printStackTrace();
}
});
} catch (SQLException e) {
e.printStackTrace();
}
}
@Test
public void testMaxSQLLength() {
}
}
\ No newline at end of file
...@@ -5,7 +5,6 @@ import org.junit.Test; ...@@ -5,7 +5,6 @@ import org.junit.Test;
import java.lang.management.ManagementFactory; import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean; import java.lang.management.RuntimeMXBean;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.SQLWarning;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -19,7 +18,6 @@ public class TSDBJNIConnectorTest { ...@@ -19,7 +18,6 @@ public class TSDBJNIConnectorTest {
@Test @Test
public void test() { public void test() {
try { try {
try { try {
//change sleepSeconds when debugging with attach to process to find PID //change sleepSeconds when debugging with attach to process to find PID
int sleepSeconds = -1; int sleepSeconds = -1;
...@@ -122,8 +120,6 @@ public class TSDBJNIConnectorTest { ...@@ -122,8 +120,6 @@ public class TSDBJNIConnectorTest {
// close connection // close connection
connector.closeConnection(); connector.closeConnection();
} catch (SQLWarning throwables) {
throwables.printStackTrace();
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -140,11 +136,7 @@ public class TSDBJNIConnectorTest { ...@@ -140,11 +136,7 @@ public class TSDBJNIConnectorTest {
throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_JNI_RESULT_SET_NULL); throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_JNI_RESULT_SET_NULL);
} else if (code == TSDBConstants.JNI_NUM_OF_FIELDS_0) { } else if (code == TSDBConstants.JNI_NUM_OF_FIELDS_0) {
throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_JNI_NUM_OF_FIELDS_0); throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_JNI_NUM_OF_FIELDS_0);
} else if (code == TSDBConstants.JNI_FETCH_END) { } else return code != TSDBConstants.JNI_FETCH_END;
return false;
} else {
return true;
}
} }
} }
...@@ -89,7 +89,7 @@ void taosDumpGlobalCfg(); ...@@ -89,7 +89,7 @@ void taosDumpGlobalCfg();
void taosInitConfigOption(SGlobalCfg cfg); void taosInitConfigOption(SGlobalCfg cfg);
SGlobalCfg * taosGetConfigOption(const char *option); SGlobalCfg * taosGetConfigOption(const char *option);
void taosReadConfigOption(const char *option, char *value, char *value2, char *value3); bool taosReadConfigOption(const char *option, char *value, char *value2, char *value3);
#ifdef __cplusplus #ifdef __cplusplus
} }
......
...@@ -26,6 +26,11 @@ ...@@ -26,6 +26,11 @@
SGlobalCfg tsGlobalConfig[TSDB_CFG_MAX_NUM] = {{0}}; SGlobalCfg tsGlobalConfig[TSDB_CFG_MAX_NUM] = {{0}};
int32_t tsGlobalConfigNum = 0; int32_t tsGlobalConfigNum = 0;
#define ATOI_JUDGE if ( !value && strcmp(input_value, "0") != 0) { \
uError("atoi error, input value:%s",input_value); \
return false; \
}
static char *tsGlobalUnit[] = { static char *tsGlobalUnit[] = {
" ", " ",
"(%)", "(%)",
...@@ -44,12 +49,14 @@ char *tsCfgStatusStr[] = { ...@@ -44,12 +49,14 @@ char *tsCfgStatusStr[] = {
"program argument list" "program argument list"
}; };
static void taosReadFloatConfig(SGlobalCfg *cfg, char *input_value) { static bool taosReadFloatConfig(SGlobalCfg *cfg, char *input_value) {
float value = (float)atof(input_value); float value = (float)atof(input_value);
ATOI_JUDGE
float *option = (float *)cfg->ptr; float *option = (float *)cfg->ptr;
if (value < cfg->minValue || value > cfg->maxValue) { if (value < cfg->minValue || value > cfg->maxValue) {
uError("config option:%s, input value:%s, out of range[%f, %f], use default value:%f", uError("config option:%s, input value:%s, out of range[%f, %f], use default value:%f",
cfg->option, input_value, cfg->minValue, cfg->maxValue, *option); cfg->option, input_value, cfg->minValue, cfg->maxValue, *option);
return false;
} else { } else {
if (cfg->cfgStatus <= TAOS_CFG_CSTATUS_FILE) { if (cfg->cfgStatus <= TAOS_CFG_CSTATUS_FILE) {
*option = value; *option = value;
...@@ -57,16 +64,20 @@ static void taosReadFloatConfig(SGlobalCfg *cfg, char *input_value) { ...@@ -57,16 +64,20 @@ static void taosReadFloatConfig(SGlobalCfg *cfg, char *input_value) {
} else { } else {
uWarn("config option:%s, input value:%s, is configured by %s, use %f", cfg->option, input_value, uWarn("config option:%s, input value:%s, is configured by %s, use %f", cfg->option, input_value,
tsCfgStatusStr[cfg->cfgStatus], *option); tsCfgStatusStr[cfg->cfgStatus], *option);
return false;
} }
} }
return true;
} }
static void taosReadDoubleConfig(SGlobalCfg *cfg, char *input_value) { static bool taosReadDoubleConfig(SGlobalCfg *cfg, char *input_value) {
double value = atof(input_value); double value = atof(input_value);
ATOI_JUDGE
double *option = (double *)cfg->ptr; double *option = (double *)cfg->ptr;
if (value < cfg->minValue || value > cfg->maxValue) { if (value < cfg->minValue || value > cfg->maxValue) {
uError("config option:%s, input value:%s, out of range[%f, %f], use default value:%f", uError("config option:%s, input value:%s, out of range[%f, %f], use default value:%f",
cfg->option, input_value, cfg->minValue, cfg->maxValue, *option); cfg->option, input_value, cfg->minValue, cfg->maxValue, *option);
return false;
} else { } else {
if (cfg->cfgStatus <= TAOS_CFG_CSTATUS_FILE) { if (cfg->cfgStatus <= TAOS_CFG_CSTATUS_FILE) {
*option = value; *option = value;
...@@ -74,17 +85,21 @@ static void taosReadDoubleConfig(SGlobalCfg *cfg, char *input_value) { ...@@ -74,17 +85,21 @@ static void taosReadDoubleConfig(SGlobalCfg *cfg, char *input_value) {
} else { } else {
uWarn("config option:%s, input value:%s, is configured by %s, use %f", cfg->option, input_value, uWarn("config option:%s, input value:%s, is configured by %s, use %f", cfg->option, input_value,
tsCfgStatusStr[cfg->cfgStatus], *option); tsCfgStatusStr[cfg->cfgStatus], *option);
return false;
} }
} }
return true;
} }
static void taosReadInt32Config(SGlobalCfg *cfg, char *input_value) { static bool taosReadInt32Config(SGlobalCfg *cfg, char *input_value) {
int32_t value = atoi(input_value); int32_t value = atoi(input_value);
ATOI_JUDGE
int32_t *option = (int32_t *)cfg->ptr; int32_t *option = (int32_t *)cfg->ptr;
if (value < cfg->minValue || value > cfg->maxValue) { if (value < cfg->minValue || value > cfg->maxValue) {
uError("config option:%s, input value:%s, out of range[%f, %f], use default value:%d", uError("config option:%s, input value:%s, out of range[%f, %f], use default value:%d",
cfg->option, input_value, cfg->minValue, cfg->maxValue, *option); cfg->option, input_value, cfg->minValue, cfg->maxValue, *option);
return false;
} else { } else {
if (cfg->cfgStatus <= TAOS_CFG_CSTATUS_FILE) { if (cfg->cfgStatus <= TAOS_CFG_CSTATUS_FILE) {
*option = value; *option = value;
...@@ -92,16 +107,20 @@ static void taosReadInt32Config(SGlobalCfg *cfg, char *input_value) { ...@@ -92,16 +107,20 @@ static void taosReadInt32Config(SGlobalCfg *cfg, char *input_value) {
} else { } else {
uWarn("config option:%s, input value:%s, is configured by %s, use %d", cfg->option, input_value, uWarn("config option:%s, input value:%s, is configured by %s, use %d", cfg->option, input_value,
tsCfgStatusStr[cfg->cfgStatus], *option); tsCfgStatusStr[cfg->cfgStatus], *option);
return false;
} }
} }
return true;
} }
static void taosReadInt16Config(SGlobalCfg *cfg, char *input_value) { static bool taosReadInt16Config(SGlobalCfg *cfg, char *input_value) {
int32_t value = atoi(input_value); int32_t value = atoi(input_value);
ATOI_JUDGE
int16_t *option = (int16_t *)cfg->ptr; int16_t *option = (int16_t *)cfg->ptr;
if (value < cfg->minValue || value > cfg->maxValue) { if (value < cfg->minValue || value > cfg->maxValue) {
uError("config option:%s, input value:%s, out of range[%f, %f], use default value:%d", uError("config option:%s, input value:%s, out of range[%f, %f], use default value:%d",
cfg->option, input_value, cfg->minValue, cfg->maxValue, *option); cfg->option, input_value, cfg->minValue, cfg->maxValue, *option);
return false;
} else { } else {
if (cfg->cfgStatus <= TAOS_CFG_CSTATUS_FILE) { if (cfg->cfgStatus <= TAOS_CFG_CSTATUS_FILE) {
*option = (int16_t)value; *option = (int16_t)value;
...@@ -109,16 +128,20 @@ static void taosReadInt16Config(SGlobalCfg *cfg, char *input_value) { ...@@ -109,16 +128,20 @@ static void taosReadInt16Config(SGlobalCfg *cfg, char *input_value) {
} else { } else {
uWarn("config option:%s, input value:%s, is configured by %s, use %d", cfg->option, input_value, uWarn("config option:%s, input value:%s, is configured by %s, use %d", cfg->option, input_value,
tsCfgStatusStr[cfg->cfgStatus], *option); tsCfgStatusStr[cfg->cfgStatus], *option);
return false;
} }
} }
return true;
} }
static void taosReadUInt16Config(SGlobalCfg *cfg, char *input_value) { static bool taosReadUInt16Config(SGlobalCfg *cfg, char *input_value) {
int32_t value = atoi(input_value); int32_t value = atoi(input_value);
ATOI_JUDGE
uint16_t *option = (uint16_t *)cfg->ptr; uint16_t *option = (uint16_t *)cfg->ptr;
if (value < cfg->minValue || value > cfg->maxValue) { if (value < cfg->minValue || value > cfg->maxValue) {
uError("config option:%s, input value:%s, out of range[%f, %f], use default value:%d", uError("config option:%s, input value:%s, out of range[%f, %f], use default value:%d",
cfg->option, input_value, cfg->minValue, cfg->maxValue, *option); cfg->option, input_value, cfg->minValue, cfg->maxValue, *option);
return false;
} else { } else {
if (cfg->cfgStatus <= TAOS_CFG_CSTATUS_FILE) { if (cfg->cfgStatus <= TAOS_CFG_CSTATUS_FILE) {
*option = (uint16_t)value; *option = (uint16_t)value;
...@@ -126,16 +149,20 @@ static void taosReadUInt16Config(SGlobalCfg *cfg, char *input_value) { ...@@ -126,16 +149,20 @@ static void taosReadUInt16Config(SGlobalCfg *cfg, char *input_value) {
} else { } else {
uWarn("config option:%s, input value:%s, is configured by %s, use %d", cfg->option, input_value, uWarn("config option:%s, input value:%s, is configured by %s, use %d", cfg->option, input_value,
tsCfgStatusStr[cfg->cfgStatus], *option); tsCfgStatusStr[cfg->cfgStatus], *option);
return false;
} }
} }
return true;
} }
static void taosReadInt8Config(SGlobalCfg *cfg, char *input_value) { static bool taosReadInt8Config(SGlobalCfg *cfg, char *input_value) {
int32_t value = atoi(input_value); int32_t value = atoi(input_value);
ATOI_JUDGE
int8_t *option = (int8_t *)cfg->ptr; int8_t *option = (int8_t *)cfg->ptr;
if (value < cfg->minValue || value > cfg->maxValue) { if (value < cfg->minValue || value > cfg->maxValue) {
uError("config option:%s, input value:%s, out of range[%f, %f], use default value:%d", uError("config option:%s, input value:%s, out of range[%f, %f], use default value:%d",
cfg->option, input_value, cfg->minValue, cfg->maxValue, *option); cfg->option, input_value, cfg->minValue, cfg->maxValue, *option);
return false;
} else { } else {
if (cfg->cfgStatus <= TAOS_CFG_CSTATUS_FILE) { if (cfg->cfgStatus <= TAOS_CFG_CSTATUS_FILE) {
*option = (int8_t)value; *option = (int8_t)value;
...@@ -143,8 +170,10 @@ static void taosReadInt8Config(SGlobalCfg *cfg, char *input_value) { ...@@ -143,8 +170,10 @@ static void taosReadInt8Config(SGlobalCfg *cfg, char *input_value) {
} else { } else {
uWarn("config option:%s, input value:%s, is configured by %s, use %d", cfg->option, input_value, uWarn("config option:%s, input value:%s, is configured by %s, use %d", cfg->option, input_value,
tsCfgStatusStr[cfg->cfgStatus], *option); tsCfgStatusStr[cfg->cfgStatus], *option);
return false;
} }
} }
return true;
} }
static bool taosReadDirectoryConfig(SGlobalCfg *cfg, char *input_value) { static bool taosReadDirectoryConfig(SGlobalCfg *cfg, char *input_value) {
...@@ -191,12 +220,13 @@ static bool taosReadDirectoryConfig(SGlobalCfg *cfg, char *input_value) { ...@@ -191,12 +220,13 @@ static bool taosReadDirectoryConfig(SGlobalCfg *cfg, char *input_value) {
return true; return true;
} }
static void taosReadIpStrConfig(SGlobalCfg *cfg, char *input_value) { static bool taosReadIpStrConfig(SGlobalCfg *cfg, char *input_value) {
uint32_t value = taosInetAddr(input_value); uint32_t value = taosInetAddr(input_value);
char * option = (char *)cfg->ptr; char * option = (char *)cfg->ptr;
if (value == INADDR_NONE) { if (value == INADDR_NONE) {
uError("config option:%s, input value:%s, is not a valid ip address, use default value:%s", uError("config option:%s, input value:%s, is not a valid ip address, use default value:%s",
cfg->option, input_value, option); cfg->option, input_value, option);
return false;
} else { } else {
if (cfg->cfgStatus <= TAOS_CFG_CSTATUS_FILE) { if (cfg->cfgStatus <= TAOS_CFG_CSTATUS_FILE) {
strncpy(option, input_value, cfg->ptrLength); strncpy(option, input_value, cfg->ptrLength);
...@@ -204,16 +234,19 @@ static void taosReadIpStrConfig(SGlobalCfg *cfg, char *input_value) { ...@@ -204,16 +234,19 @@ static void taosReadIpStrConfig(SGlobalCfg *cfg, char *input_value) {
} else { } else {
uWarn("config option:%s, input value:%s, is configured by %s, use %s", cfg->option, input_value, uWarn("config option:%s, input value:%s, is configured by %s, use %s", cfg->option, input_value,
tsCfgStatusStr[cfg->cfgStatus], option); tsCfgStatusStr[cfg->cfgStatus], option);
return false;
} }
} }
return true;
} }
static void taosReadStringConfig(SGlobalCfg *cfg, char *input_value) { static bool taosReadStringConfig(SGlobalCfg *cfg, char *input_value) {
int length = (int) strlen(input_value); int length = (int) strlen(input_value);
char *option = (char *)cfg->ptr; char *option = (char *)cfg->ptr;
if (length <= 0 || length > cfg->ptrLength) { if (length <= 0 || length > cfg->ptrLength) {
uError("config option:%s, input value:%s, length out of range[0, %d], use default value:%s", uError("config option:%s, input value:%s, length out of range[0, %d], use default value:%s",
cfg->option, input_value, cfg->ptrLength, option); cfg->option, input_value, cfg->ptrLength, option);
return false;
} else { } else {
if (cfg->cfgStatus <= TAOS_CFG_CSTATUS_FILE) { if (cfg->cfgStatus <= TAOS_CFG_CSTATUS_FILE) {
strncpy(option, input_value, cfg->ptrLength); strncpy(option, input_value, cfg->ptrLength);
...@@ -221,8 +254,10 @@ static void taosReadStringConfig(SGlobalCfg *cfg, char *input_value) { ...@@ -221,8 +254,10 @@ static void taosReadStringConfig(SGlobalCfg *cfg, char *input_value) {
} else { } else {
uWarn("config option:%s, input value:%s, is configured by %s, use %s", cfg->option, input_value, uWarn("config option:%s, input value:%s, is configured by %s, use %s", cfg->option, input_value,
tsCfgStatusStr[cfg->cfgStatus], option); tsCfgStatusStr[cfg->cfgStatus], option);
return false;
} }
} }
return true;
} }
static void taosReadLogOption(char *option, char *value) { static void taosReadLogOption(char *option, char *value) {
...@@ -258,7 +293,7 @@ SGlobalCfg *taosGetConfigOption(const char *option) { ...@@ -258,7 +293,7 @@ SGlobalCfg *taosGetConfigOption(const char *option) {
return NULL; return NULL;
} }
void taosReadConfigOption(const char *option, char *value, char *value2, char *value3) { bool taosReadConfigOption(const char *option, char *value, char *value2, char *value3) {
for (int i = 0; i < tsGlobalConfigNum; ++i) { for (int i = 0; i < tsGlobalConfigNum; ++i) {
SGlobalCfg *cfg = tsGlobalConfig + i; SGlobalCfg *cfg = tsGlobalConfig + i;
if (!(cfg->cfgType & TSDB_CFG_CTYPE_B_CONFIG)) continue; if (!(cfg->cfgType & TSDB_CFG_CTYPE_B_CONFIG)) continue;
...@@ -266,43 +301,35 @@ void taosReadConfigOption(const char *option, char *value, char *value2, char *v ...@@ -266,43 +301,35 @@ void taosReadConfigOption(const char *option, char *value, char *value2, char *v
switch (cfg->valType) { switch (cfg->valType) {
case TAOS_CFG_VTYPE_INT8: case TAOS_CFG_VTYPE_INT8:
taosReadInt8Config(cfg, value); return taosReadInt8Config(cfg, value);
break;
case TAOS_CFG_VTYPE_INT16: case TAOS_CFG_VTYPE_INT16:
taosReadInt16Config(cfg, value); return taosReadInt16Config(cfg, value);
break;
case TAOS_CFG_VTYPE_INT32: case TAOS_CFG_VTYPE_INT32:
taosReadInt32Config(cfg, value); return taosReadInt32Config(cfg, value);
break;
case TAOS_CFG_VTYPE_UINT16: case TAOS_CFG_VTYPE_UINT16:
taosReadUInt16Config(cfg, value); return taosReadUInt16Config(cfg, value);
break;
case TAOS_CFG_VTYPE_FLOAT: case TAOS_CFG_VTYPE_FLOAT:
taosReadFloatConfig(cfg, value); return taosReadFloatConfig(cfg, value);
break;
case TAOS_CFG_VTYPE_DOUBLE: case TAOS_CFG_VTYPE_DOUBLE:
taosReadDoubleConfig(cfg, value); return taosReadDoubleConfig(cfg, value);
break;
case TAOS_CFG_VTYPE_STRING: case TAOS_CFG_VTYPE_STRING:
taosReadStringConfig(cfg, value); return taosReadStringConfig(cfg, value);
break;
case TAOS_CFG_VTYPE_IPSTR: case TAOS_CFG_VTYPE_IPSTR:
taosReadIpStrConfig(cfg, value); return taosReadIpStrConfig(cfg, value);
break;
case TAOS_CFG_VTYPE_DIRECTORY: case TAOS_CFG_VTYPE_DIRECTORY:
taosReadDirectoryConfig(cfg, value); return taosReadDirectoryConfig(cfg, value);
break;
case TAOS_CFG_VTYPE_DATA_DIRCTORY: case TAOS_CFG_VTYPE_DATA_DIRCTORY:
if (taosReadDirectoryConfig(cfg, value)) { if (taosReadDirectoryConfig(cfg, value)) {
taosReadDataDirCfg(value, value2, value3); taosReadDataDirCfg(value, value2, value3);
return true;
} }
break; return false;
default: default:
uError("config option:%s, input value:%s, can't be recognized", option, value); uError("config option:%s, input value:%s, can't be recognized", option, value);
break; return false;
} }
break;
} }
return false;
} }
void taosInitConfigOption(SGlobalCfg cfg) { void taosInitConfigOption(SGlobalCfg cfg) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册