diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 50b610d908a2f2cec906ae5c5c4e7dfbde026f71..35c737d5e441e581beb602a028da2fcefa018471 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -5830,39 +5830,29 @@ static int32_t setKeepOption(SSqlCmd* pCmd, SCreateDbMsg* pMsg, SCreateDbInfo* p SArray* pKeep = pCreateDb->keep; if (pKeep != NULL) { size_t s = taosArrayGetSize(pKeep); - tVariantListItem* p0 = taosArrayGet(pKeep, 0); - size_t expectNum = 1; #ifdef _STORAGE - expectNum = 3; + if (s >= 4 ||s <= 0) { +#else + if (s != 1) { #endif - if (s != expectNum) { return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1); } - if ((int32_t)p0->pVar.i64 <= 0) { + tVariantListItem* p0 = taosArrayGet(pKeep, 0); + tVariantListItem* p1 = (s > 1) ? taosArrayGet(pKeep, 1) : p0; + tVariantListItem* p2 = (s > 2) ? taosArrayGet(pKeep, 2) : p1; + + if ((int32_t)p0->pVar.i64 <= 0 || (int32_t)p1->pVar.i64 <= 0 || (int32_t)p2->pVar.i64 <= 0) { return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2); } - pMsg->daysToKeep0 = htonl((int32_t)p0->pVar.i64); - -#ifdef _STORAGE - tVariantListItem* p1 = taosArrayGet(pKeep, 1); - tVariantListItem* p2 = taosArrayGet(pKeep, 2); - - if ((int32_t)p1->pVar.i64 <= 0 || (int32_t)p2->pVar.i64 <= 0) { - return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2); - } - if (!(((int32_t)p0->pVar.i64 <= (int32_t)p1->pVar.i64) && ((int32_t)p1->pVar.i64 <= (int32_t)p2->pVar.i64))) { return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3); } + pMsg->daysToKeep0 = htonl((int32_t)p0->pVar.i64); pMsg->daysToKeep1 = htonl((int32_t)p1->pVar.i64); pMsg->daysToKeep2 = htonl((int32_t)p2->pVar.i64); -#else - UNUSED(msg3); - pMsg->daysToKeep1 = pMsg->daysToKeep0; - pMsg->daysToKeep2 = pMsg->daysToKeep0; -#endif + } return TSDB_CODE_SUCCESS; diff --git a/tests/script/general/parser/alter.sim b/tests/script/general/parser/alter.sim index 5c22f67a0bb2fe2b2fafc1d4bda5ee3fc36d0b0e..d1a4702a69dce22e7de0de005d912e7813648e01 100644 --- a/tests/script/general/parser/alter.sim +++ b/tests/script/general/parser/alter.sim @@ -25,12 +25,12 @@ sql use $db sql_error alter database $db keep "20" sql_error alter database $db keep "20","20","20" -sql_error alter database $db keep 20 +sql_error alter database $db keep 20,19 sql_error alter database $db keep 20.0 sql_error alter database $db keep 20.0,20.0,20.0 sql_error alter database $db keep 0,0,0 sql_error alter database $db keep -1,-1,-1 -sql_error alter database $db keep 20,20 +sql_error alter database $db keep 9,20 sql_error alter database $db keep 9,9,9 sql_error alter database $db keep 20,20,19 sql_error alter database $db keep 20,19,20 @@ -38,6 +38,22 @@ sql_error alter database $db keep 20,19,19 sql_error alter database $db keep 20,19,18 sql_error alter database $db keep 20,20,20,20 sql_error alter database $db keep 365001,365001,365001 +sql alter database $db keep 21 +sql show databases +if $rows != 1 then + return -1 +endi +if $data07 != 21,21,21 then + return -1 +endi +sql alter database $db keep 11,12 +sql show databases +if $rows != 1 then + return -1 +endi +if $data07 != 11,12,12 then + return -1 +endi sql alter database $db keep 20,20,20 sql show databases if $rows != 1 then diff --git a/tests/script/general/parser/create_db.sim b/tests/script/general/parser/create_db.sim index d3b74b697fcc54c534a5051d3912cfd04ea7b838..7881060ad178fe3b3f7a9ea0530a1ac517264a3e 100644 --- a/tests/script/general/parser/create_db.sim +++ b/tests/script/general/parser/create_db.sim @@ -159,8 +159,28 @@ sql_error create database $db keep "11" sql_error create database $db keep 13,12,11 sql_error create database $db keep 11,12,11 sql_error create database $db keep 12,11,12 -sql_error create database $db keep 11,11 +sql_error create database $db keep 8 +sql_error create database $db keep 12,11 sql_error create database $db keep 365001,365001,365001 +sql create database dbk0 keep 19 +sql show databases +if $rows != 1 then + return -1 +endi +if $data07 != 19,19,19 then + return -1 +endi +sql drop database dbk0 +sql create database dbka keep 19,20 +sql show databases +if $rows != 1 then + return -1 +endi +if $data07 != 19,20,20 then + return -1 +endi +sql drop database dbka + sql create database dbk1 keep 11,11,11 sql show databases if $rows != 1 then