summaryrefslogtreecommitdiff
path: root/sql/handler.cc
diff options
context:
space:
mode:
authorunknown <mskold/marty@mysql.com/linux.site>2006-10-16 10:07:19 +0200
committerunknown <mskold/marty@mysql.com/linux.site>2006-10-16 10:07:19 +0200
commit8a88e57c28c4020982fa5b2d9a03fd17149cbe3b (patch)
tree321c29c068b3a9984c08d48de5d5e2e7d9760c7e /sql/handler.cc
parent0079ce3b2ca38f79fce8fa3779a627149a92d465 (diff)
parente4cc40f88c23ea3d6649c7ca19380696e413be5f (diff)
downloadmariadb-git-8a88e57c28c4020982fa5b2d9a03fd17149cbe3b.tar.gz
Merge mysql.com:/windows/Linux_space/MySQL/mysql-4.1
into mysql.com:/windows/Linux_space/MySQL/mysql-5.0 mysql-test/r/ndb_charset.result: Auto merged mysql-test/r/ndb_index_unique.result: Auto merged mysql-test/r/ndb_update.result: Auto merged sql/ha_ndbcluster.cc: Merg sql/handler.cc: Merge
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 4accc746664..c95102c4bc0 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -1774,12 +1774,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(STRING_WITH_LEN("..."));
+ 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(STRING_WITH_LEN("..."));
+ }
}
my_error(ER_DUP_ENTRY, MYF(0), str.c_ptr(), key_nr+1);
DBUG_VOID_RETURN;