Bug #12973 | SHOW TABLE STATUS shows Autoincrement = 0 for InnoDB | ||
---|---|---|---|
Submitted: | 3 Sep 2005 20:51 | Modified: | 8 Sep 2005 20:25 |
Reporter: | MySQL-Front Team | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S3 (Non-critical) |
Version: | 5.0.12-beta/BK source | OS: | Windows (Windows XP/Linux) |
Assigned to: | Heikki Tuuri | CPU Architecture: | Any |
[3 Sep 2005 20:51]
MySQL-Front Team
[3 Sep 2005 21:32]
MySQL Verification Team
Thank you for the bug report. miguel@hegel:~/dbs/5.0> bin/mysqladmin -uroot create jkl miguel@hegel:~/dbs/5.0> bin/mysql -uroot jkl Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 to server version: 5.0.13-beta-debug Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> CREATE TABLE `foo` ( -> `Id` int(11) NOT NULL auto_increment, -> PRIMARY KEY (`Id`) -> ) ENGINE=InnoDB; Query OK, 0 rows affected (0.07 sec) mysql> INSERT INTO `foo` SET `Id`=1; Query OK, 1 row affected (0.01 sec) mysql> INSERT INTO `foo` SET `Id`=2; Query OK, 1 row affected (0.01 sec) mysql> SHOW TABLE STATUS LIKE 'foo'\G *************************** 1. row *************************** Name: foo Engine: InnoDB Version: 10 Row_format: Compact Rows: 2 Avg_row_length: 8192 Data_length: 16384 Max_data_length: 0 Index_length: 0 Data_free: 0 Auto_increment: 0 Create_time: 2005-09-03 18:31:54 Update_time: NULL Check_time: NULL Collation: latin1_swedish_ci Checksum: NULL Create_options: Comment: InnoDB free: 4096 kB 1 row in set (0.00 sec) mysql> mysql> SHOW TABLE STATUS LIKE 'foo'\G *************************** 1. row *************************** Name: foo Engine: InnoDB Version: 10 Row_format: Compact Rows: 2 Avg_row_length: 8192 Data_length: 16384 Max_data_length: 0 Index_length: 0 Data_free: 0 Auto_increment: 3 Create_time: 2005-09-03 18:18:52 Update_time: NULL Check_time: NULL Collation: latin1_swedish_ci Checksum: NULL Create_options: Comment: InnoDB free: 4096 kB 1 row in set (0.00 sec) mysql> select version(); +----------------+ | version() | +----------------+ | 5.0.11-beta-nt | +----------------+ 1 row in set (0.01 sec)
[4 Sep 2005 8:08]
Heikki Tuuri
Hi! The following patch from August 8, 2005 probably introduced this bug. Note the comment: "This allows to avoid locking of tables which is needed when we use handler::update_auto_increment() method" To init the auto-inc counter, InnoDB and BDB need to use some kind of locking, at least internally. Regards, Heikki ------------------------------------------------ D 1.253.2.1 05/08/08 17:46:01+04:00 dlenev@mysql.com 573 555 37/36/3873 P sql/sql_show.cc C get_all_tables(): C Now we use THD::reset_n_/restore_backup_open_tables_state() for C saving/restoring open tables state instead of working with it directly C (This also allows us to have proper content of I_S system tables in C statements with stored functions and in stored functions). We also C ignore possible flushes when opening tables (we may create deadlock C otherwise). Also we do all needed manipulations with LEX in this function C and not in get_schema_tables_result() now. C get_schema_tables_record(): C Let us use handler::info() method with HA_STATUS_AUTO flag for obtaining C information about table's auto-increment value. This allows to avoid locking C of tables which is needed when we use handler::update_auto_increment() metho d. C fill_schema_proc(): C Now we use open_proc_table_for_read/close_proc_table() for access to C mysql.proc table (so we won't cause deadlock if we already have some C tables open and locked, this also allows us to have proper content in C ROUTINES system table in statements using stored functions/in stored C functions). C get_schema_tables_result(): C Moved all manipulations with Open_tables_state and LEX needed for C safe opening of tables to ST_SCHEMA_TABLE::fill_table functions C (i.e. get_all_tables() and fill_schema_proc()). ------------------------------------------------
[4 Sep 2005 8:48]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/internals/29291
[4 Sep 2005 9:22]
Heikki Tuuri
The bug was introduced in 5.0.12 and fixed in 5.0.13.
[8 Sep 2005 20:25]
Paul DuBois
Noted in 5.0.13 changelog.