Commit c95bc8dc authored by unknown's avatar unknown
Browse files

For performance reasons we remove the ability in unique indexes on...

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
parent f69cfbf8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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");
+5 −5
Original line number Diff line number Diff line
@@ -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)