diff options
author | unknown <mskold/marty@mysql.com/linux.site> | 2006-09-21 16:49:07 +0200 |
---|---|---|
committer | unknown <mskold/marty@mysql.com/linux.site> | 2006-09-21 16:49:07 +0200 |
commit | 1c732a23b83389590355f02adea02c8795b363eb (patch) | |
tree | 1406eaaeceff7c9d53f1462bb281671a395661cf /sql/handler.cc | |
parent | dccd2c90266f99d7f1147cf04dacec6d5d5f539f (diff) | |
download | mariadb-git-1c732a23b83389590355f02adea02c8795b363eb.tar.gz |
Bug #21072 Duplicate key error in NDB references wrong key: use MAX_KEY to signal unknown key
Diffstat (limited to 'sql/handler.cc')
-rw-r--r-- | sql/handler.cc | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/sql/handler.cc b/sql/handler.cc index c05fc8ba0e7..be8d2e2aed3 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -1102,12 +1102,22 @@ void handler::print_error(int error, myf errflag) /* Write the dupplicated key in the error message */ char key[MAX_KEY_LENGTH]; String str(key,sizeof(key),system_charset_info); - key_unpack(&str,table,(uint) key_nr); - uint max_length=MYSQL_ERRMSG_SIZE-(uint) strlen(ER(ER_DUP_ENTRY)); - if (str.length() >= max_length) + + if (key_nr == MAX_KEY) + { + /* Key is unknown */ + str.length(0); + key_nr= -1; + } + else { - str.length(max_length-4); - str.append("..."); + key_unpack(&str,table,(uint) key_nr); + uint max_length=MYSQL_ERRMSG_SIZE-(uint) strlen(ER(ER_DUP_ENTRY)); + if (str.length() >= max_length) + { + str.length(max_length-4); + str.append("..."); + } } my_error(ER_DUP_ENTRY,MYF(0),str.c_ptr(),key_nr+1); DBUG_VOID_RETURN; |