summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <brian@zim.(none)>2007-01-26 14:17:45 -0800
committerunknown <brian@zim.(none)>2007-01-26 14:17:45 -0800
commitc95bc8dcdbe50614bcd00051424d388fed42f999 (patch)
tree3da125d6fec077faefad6e7cd699a550a5c5b1a0
parentf69cfbf857475d416e549ff1403947d61396201f (diff)
downloadmariadb-git-c95bc8dcdbe50614bcd00051424d388fed42f999.tar.gz
For performance reasons we remove the ability in unique indexes on autoincrements to remove the ability to insert key lower then the current autoincrement value.
mysql-test/r/archive.result: Modified error output mysql-test/t/archive.test: Fix for the change in behavior storage/archive/ha_archive.cc: ifdef of the search record code
-rw-r--r--mysql-test/r/archive.result2
-rw-r--r--mysql-test/t/archive.test1
-rw-r--r--storage/archive/ha_archive.cc10
3 files changed, 7 insertions, 6 deletions
diff --git a/mysql-test/r/archive.result b/mysql-test/r/archive.result
index d15103be011..8ccd2f7e17f 100644
--- a/mysql-test/r/archive.result
+++ b/mysql-test/r/archive.result
@@ -12367,6 +12367,7 @@ INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (32, "foo");
INSERT INTO t5 VALUES (23, "foo");
+ERROR 23000: Can't write; duplicate key in table 't5'
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (3, "foo");
@@ -12380,7 +12381,6 @@ a b
4 foo
5 foo
32 foo
-23 foo
33 foo
34 foo
35 foo
diff --git a/mysql-test/t/archive.test b/mysql-test/t/archive.test
index ddb313217a6..1f4cf6ea132 100644
--- a/mysql-test/t/archive.test
+++ b/mysql-test/t/archive.test
@@ -1379,6 +1379,7 @@ INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (32, "foo");
+--error 1022
INSERT INTO t5 VALUES (23, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
INSERT INTO t5 VALUES (NULL, "foo");
diff --git a/storage/archive/ha_archive.cc b/storage/archive/ha_archive.cc
index 6a03783ac3f..584de61ca10 100644
--- a/storage/archive/ha_archive.cc
+++ b/storage/archive/ha_archive.cc
@@ -784,23 +784,22 @@ int ha_archive::write_row(byte *buf)
temp_auto= table->next_number_field->val_int();
/*
- Simple optimization to see if we fail for duplicate key immediatly
- because we have just given out this value.
+ We don't support decremening auto_increment. They make the performance
+ just cry.
*/
- if (temp_auto == share->archive_write.auto_increment &&
+ if (temp_auto <= share->archive_write.auto_increment &&
mkey->flags & HA_NOSAME)
{
rc= HA_ERR_FOUND_DUPP_KEY;
goto error;
}
+#ifdef DEAD_CODE
/*
Bad news, this will cause a search for the unique value which is very
expensive since we will have to do a table scan which will lock up
all other writers during this period. This could perhaps be optimized
in the future.
*/
- if (temp_auto < share->archive_write.auto_increment &&
- mkey->flags & HA_NOSAME)
{
/*
First we create a buffer that we can use for reading rows, and can pass
@@ -838,6 +837,7 @@ int ha_archive::write_row(byte *buf)
}
}
}
+#endif
else
{
if (temp_auto > share->archive_write.auto_increment)