diff options
author | unknown <gluh@eagle.(none)> | 2007-12-13 15:56:04 +0400 |
---|---|---|
committer | unknown <gluh@eagle.(none)> | 2007-12-13 15:56:04 +0400 |
commit | 9a10c20ba912d8b872dfde7fcfc6e551e0da6118 (patch) | |
tree | e37ba43ba6ed4171e2b64ad9dbba79328c95a875 /storage/archive | |
parent | 0d5caaa4a1213e7d2d52a27ed41de32f3da0c050 (diff) | |
parent | 76a5b3b976de1ad938ae46525f11992fcb392103 (diff) | |
download | mariadb-git-9a10c20ba912d8b872dfde7fcfc6e551e0da6118.tar.gz |
Merge mysql.com:/home/gluh/MySQL/Merge/5.1
into mysql.com:/home/gluh/MySQL/Merge/5.1-opt
BitKeeper/etc/ignore:
auto-union
client/mysql.cc:
Auto merged
client/mysqltest.c:
Auto merged
include/mysql_com.h:
Auto merged
libmysql/CMakeLists.txt:
Auto merged
libmysqld/lib_sql.cc:
Auto merged
mysql-test/r/archive.result:
Auto merged
mysql-test/r/create.result:
Auto merged
mysql-test/r/delayed.result:
Auto merged
mysql-test/r/func_misc.result:
Auto merged
mysql-test/r/innodb.result:
Auto merged
mysql-test/r/innodb_mysql.result:
Auto merged
mysql-test/r/merge.result:
Auto merged
mysql-test/r/ps.result:
Auto merged
mysql-test/r/type_date.result:
Auto merged
mysql-test/suite/rpl/r/rpl_innodb_bug28430.result:
Auto merged
mysql-test/t/create.test:
Auto merged
mysql-test/t/func_misc.test:
Auto merged
mysql-test/t/information_schema.test:
Auto merged
mysql-test/t/merge.test:
Auto merged
mysql-test/t/subselect.test:
Auto merged
mysql-test/t/type_date.test:
Auto merged
mysql-test/t/type_datetime.test:
Auto merged
mysql-test/t/variables.test:
Auto merged
mysys/queues.c:
Auto merged
sql/events.cc:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/ha_partition.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/item.cc:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_func.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/opt_range.cc:
Auto merged
sql/protocol.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/set_var.h:
Auto merged
sql/slave.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_db.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_partition.cc:
Auto merged
sql/sql_plugin.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_string.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
sql/table.h:
Auto merged
storage/myisam/ha_myisam.cc:
Auto merged
storage/myisam/mi_check.c:
Auto merged
storage/myisam/mi_open.c:
Auto merged
tests/mysql_client_test.c:
Auto merged
mysql-test/lib/mtr_report.pl:
manual merge
mysql-test/r/myisam.result:
manual merge
mysql-test/r/partition.result:
manual merge
mysql-test/r/user_var.result:
manual merge
mysql-test/t/myisam.test:
manual merge
mysql-test/t/partition.test:
manual merge
mysql-test/t/user_var.test:
manual merge
sql/item.h:
manual merge
sql/item_func.cc:
manual merge
storage/myisammrg/ha_myisammrg.cc:
manual merge
Diffstat (limited to 'storage/archive')
-rw-r--r-- | storage/archive/ha_archive.cc | 37 |
1 files changed, 14 insertions, 23 deletions
diff --git a/storage/archive/ha_archive.cc b/storage/archive/ha_archive.cc index 84298e785d1..967e315d4a4 100644 --- a/storage/archive/ha_archive.cc +++ b/storage/archive/ha_archive.cc @@ -357,7 +357,7 @@ ARCHIVE_SHARE *ha_archive::get_share(const char *table_name, int *rc) { DBUG_RETURN(NULL); } - stats.auto_increment_value= archive_tmp.auto_increment; + stats.auto_increment_value= archive_tmp.auto_increment + 1; share->rows_recorded= (ha_rows)archive_tmp.rows; share->crashed= archive_tmp.dirty; azclose(&archive_tmp); @@ -586,9 +586,7 @@ int ha_archive::create(const char *name, TABLE *table_arg, DBUG_ENTER("ha_archive::create"); - stats.auto_increment_value= (create_info->auto_increment_value ? - create_info->auto_increment_value -1 : - (ulonglong) 0); + stats.auto_increment_value= create_info->auto_increment_value; for (uint key= 0; key < table_arg->s->keys; key++) { @@ -673,7 +671,8 @@ int ha_archive::create(const char *name, TABLE *table_arg, Yes you need to do this, because the starting value for the autoincrement may not be zero. */ - create_stream.auto_increment= stats.auto_increment_value; + create_stream.auto_increment= stats.auto_increment_value ? + stats.auto_increment_value - 1 : 0; if (azclose(&create_stream)) { error= errno; @@ -871,8 +870,8 @@ int ha_archive::write_row(uchar *buf) else { if (temp_auto > share->archive_write.auto_increment) - stats.auto_increment_value= share->archive_write.auto_increment= - temp_auto; + stats.auto_increment_value= + (share->archive_write.auto_increment= temp_auto) + 1; } } @@ -896,7 +895,7 @@ void ha_archive::get_auto_increment(ulonglong offset, ulonglong increment, ulonglong *first_value, ulonglong *nb_reserved_values) { - *nb_reserved_values= 1; + *nb_reserved_values= ULONGLONG_MAX; *first_value= share->archive_write.auto_increment + 1; } @@ -1315,7 +1314,8 @@ int ha_archive::optimize(THD* thd, HA_CHECK_OPT* check_opt) if (!rc) { share->rows_recorded= 0; - stats.auto_increment_value= share->archive_write.auto_increment= 0; + stats.auto_increment_value= 1; + share->archive_write.auto_increment= 0; my_bitmap_map *org_bitmap= dbug_tmp_use_all_columns(table, table->read_set); while (!(rc= get_row(&archive, table->record[0]))) @@ -1332,8 +1332,8 @@ int ha_archive::optimize(THD* thd, HA_CHECK_OPT* check_opt) (ulonglong) field->val_int(table->record[0] + field->offset(table->record[0])); if (share->archive_write.auto_increment < auto_value) - stats.auto_increment_value= share->archive_write.auto_increment= - auto_value; + stats.auto_increment_value= + (share->archive_write.auto_increment= auto_value) + 1; } } @@ -1418,18 +1418,9 @@ void ha_archive::update_create_info(HA_CREATE_INFO *create_info) DBUG_ENTER("ha_archive::update_create_info"); ha_archive::info(HA_STATUS_AUTO); - if (create_info->used_fields & HA_CREATE_USED_AUTO) + if (!(create_info->used_fields & HA_CREATE_USED_AUTO)) { - /* - Internally Archive keeps track of last used, not next used. - To make the output look like MyISAM we add 1 here. - - This is not completely compatible with MYISAM though, since - MyISAM will record on "SHOW CREATE TABLE" the last position, - where we will report the original position the table was - created with. - */ - create_info->auto_increment_value= stats.auto_increment_value + 1; + create_info->auto_increment_value= stats.auto_increment_value; } if (!(my_readlink(share->real_path, share->data_file_name, MYF(0)))) @@ -1494,7 +1485,7 @@ int ha_archive::info(uint flag) pthread_mutex_lock(&share->mutex); azflush(&archive, Z_SYNC_FLUSH); pthread_mutex_unlock(&share->mutex); - stats.auto_increment_value= archive.auto_increment; + stats.auto_increment_value= archive.auto_increment + 1; } DBUG_RETURN(0); |