summaryrefslogtreecommitdiff
path: root/sql/handler.cc
diff options
context:
space:
mode:
authorunknown <mskold/marty@mysql.com/linux.site>2006-09-21 16:49:07 +0200
committerunknown <mskold/marty@mysql.com/linux.site>2006-09-21 16:49:07 +0200
commit1c732a23b83389590355f02adea02c8795b363eb (patch)
tree1406eaaeceff7c9d53f1462bb281671a395661cf /sql/handler.cc
parentdccd2c90266f99d7f1147cf04dacec6d5d5f539f (diff)
downloadmariadb-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.cc20
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;