From e393a5614b17e6e179720787bbaf9886be46cfeb Mon Sep 17 00:00:00 2001 From: shenglian zhou Date: Mon, 26 Jul 2021 10:16:50 +0800 Subject: [PATCH 1/2] [TD-5520]: lowcase letters in database names and line names can be uppercase --- src/client/src/tscParseLineProtocol.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/client/src/tscParseLineProtocol.c b/src/client/src/tscParseLineProtocol.c index d5883af7f6..8f9cdbf002 100644 --- a/src/client/src/tscParseLineProtocol.c +++ b/src/client/src/tscParseLineProtocol.c @@ -238,7 +238,10 @@ static int32_t buildDataPointSchemas(TAOS_SML_DATA_POINT* points, int numPoint, static int32_t generateSchemaAction(SSchema* pointColField, SHashObj* dbAttrHash, SArray* dbAttrArray, bool isTag, char sTableName[], SSchemaAction* action, bool* actionNeeded) { - size_t* pDbIndex = taosHashGet(dbAttrHash, pointColField->name, strlen(pointColField->name)); + char fieldNameLowerCase[TSDB_COL_NAME_LEN] = {0}; + strtolower(fieldNameLowerCase, pointColField->name); + + size_t* pDbIndex = taosHashGet(dbAttrHash, fieldNameLowerCase, strlen(fieldNameLowerCase)); if (pDbIndex) { SSchema* dbAttr = taosArrayGet(dbAttrArray, *pDbIndex); assert(strcasecmp(dbAttr->name, pointColField->name) == 0); @@ -399,8 +402,11 @@ int32_t loadTableMeta(TAOS* taos, char* tableName, SSmlSTableSchema* schema) { tscDebug("load table schema. super table name: %s", tableName); + char tableNameLowerCase[TSDB_TABLE_NAME_LEN]; + strtolower(tableNameLowerCase, tableName); + char sql[256]; - snprintf(sql, 256, "describe %s", tableName); + snprintf(sql, 256, "describe %s", tableNameLowerCase); TAOS_RES* res = taos_query(taos, sql); code = taos_errno(res); if (code != 0) { @@ -415,8 +421,8 @@ int32_t loadTableMeta(TAOS* taos, char* tableName, SSmlSTableSchema* schema) { pSql->signature = pSql; pSql->fp = NULL; - SStrToken tableToken = {.z=tableName, .n=(uint32_t)strlen(tableName), .type=TK_ID}; - tGetToken(tableName, &tableToken.type); + SStrToken tableToken = {.z=tableNameLowerCase, .n=(uint32_t)strlen(tableNameLowerCase), .type=TK_ID}; + tGetToken(tableNameLowerCase, &tableToken.type); // Check if the table name available or not if (tscValidateName(&tableToken) != TSDB_CODE_SUCCESS) { code = TSDB_CODE_TSC_INVALID_TABLE_ID_LENGTH; From 75c217e68218aa0048a56020c58a07f6d3360e30 Mon Sep 17 00:00:00 2001 From: shenglian zhou Date: Mon, 26 Jul 2021 10:37:35 +0800 Subject: [PATCH 2/2] [TD-5517]: return error when apply schema action failed --- src/client/src/tscParseLineProtocol.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/client/src/tscParseLineProtocol.c b/src/client/src/tscParseLineProtocol.c index 8f9cdbf002..7645a30eee 100644 --- a/src/client/src/tscParseLineProtocol.c +++ b/src/client/src/tscParseLineProtocol.c @@ -518,7 +518,11 @@ static int32_t modifyDBSchemas(TAOS* taos, SArray* stableSchemas) { bool actionNeeded = false; generateSchemaAction(pointTag, dbTagHash, dbSchema.tags, true, pointSchema->sTableName, &schemaAction, &actionNeeded); if (actionNeeded) { - applySchemaAction(taos, &schemaAction); + code = applySchemaAction(taos, &schemaAction); + if (code != 0) { + destroySmlSTableSchema(&dbSchema); + return code; + } } } @@ -532,7 +536,11 @@ static int32_t modifyDBSchemas(TAOS* taos, SArray* stableSchemas) { bool actionNeeded = false; generateSchemaAction(pointCol, dbFieldHash, dbSchema.fields,false, pointSchema->sTableName, &schemaAction, &actionNeeded); if (actionNeeded) { - applySchemaAction(taos, &schemaAction); + code = applySchemaAction(taos, &schemaAction); + if (code != 0) { + destroySmlSTableSchema(&dbSchema); + return code; + } } }