From 1c732a23b83389590355f02adea02c8795b363eb Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 21 Sep 2006 16:49:07 +0200 Subject: Bug #21072 Duplicate key error in NDB references wrong key: use MAX_KEY to signal unknown key --- sql/handler.cc | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'sql/handler.cc') 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; -- cgit v1.2.1