@@ -800,7 +800,9 @@ func getRedisTblToYangList(tableName, key string) (yangList string) {
800800
801801// Convert Redis key to Yang keys, if multiple key components are there,
802802// they are separated based on Yang schema
803- func getRedisToYangKeys (tableName string , redisKey string ) []keyValuePairStruct {
803+ func getRedisToYangKeys (tableName string , redisKey string ) ([]keyValuePairStruct , CVLErrorInfo ) {
804+ var cvlErrObj CVLErrorInfo
805+
804806 keyNames := modelInfo .tableInfo [tableName ].keys
805807 //First split all the keys components
806808 keyVals := strings .Split (redisKey , modelInfo .tableInfo [tableName ].redisKeyDelim ) //split by DB separator
@@ -809,7 +811,16 @@ func getRedisToYangKeys(tableName string, redisKey string) []keyValuePairStruct
809811 modelInfo .tableInfo [tableName ].redisKeyDelim ) //split by DB separator
810812
811813 if len (keyNames ) != len (keyVals ) {
812- return nil //number key names and values does not match
814+ cvlErrObj .ErrCode = CVL_SEMANTIC_KEY_INVALID
815+ cvlErrObj .TableName = tableName
816+ cvlErrObj .Keys = keyNames
817+ if len (keyNames ) < len (keyVals ) {
818+ cvlErrObj .Msg = "Too many keys specified."
819+ } else {
820+ cvlErrObj .Msg = "Missing Key \" " + keyNames [len (keyVals )] + "\" ."
821+ cvlErrObj .Field = keyNames [len (keyVals )]
822+ }
823+ return nil , cvlErrObj //number key names and values does not match
813824 }
814825
815826 mkeys := []keyValuePairStruct {}
@@ -829,7 +840,7 @@ func getRedisToYangKeys(tableName string, redisKey string) []keyValuePairStruct
829840 TRACE_LOG (TRACE_SYNTAX , "getRedisToYangKeys() returns %v " +
830841 "from Redis Table '%s', Key '%s'" , mkeys , tableName , redisKey )
831842
832- return mkeys
843+ return mkeys , cvlErrObj
833844}
834845
835846// Checks field map values and removes "NULL" entry, create array for leaf-list
0 commit comments