mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 19:37:16 +02:00
Apply InnoDB snapshot innodb-5.1-ss2858, part 15. Fixes
Bug #39830: Table autoinc value not updated on first insert. Bug #35498: Cannot get table test/table1 auto-inccounter value in ::info Bug #36411: Failed to read auto-increment value from storage engine" in 5.1.24 auto-inc Detailed revision comments: r2854 | sunny | 2008-10-23 08:30:32 +0300 (Thu, 23 Oct 2008) | 13 lines branches/5.1: Backport changes from branches/zip r2725 Simplify the autoinc initialization code. This removes the non-determinism related to reading the table's autoinc value for the first time. This change has also reduced the sizeof dict_table_t by sizeof(ibool) bytes because we don't need the dict_table_t::autoinc_inited field anymore. rb://16
This commit is contained in:
parent
2ae86017c5
commit
03b790c2a7
7 changed files with 137 additions and 212 deletions
|
|
@ -178,8 +178,7 @@ dict_table_autoinc_lock(
|
|||
/*====================*/
|
||||
dict_table_t* table); /* in: table */
|
||||
/************************************************************************
|
||||
Initializes the autoinc counter. It is not an error to initialize an already
|
||||
initialized counter. */
|
||||
Unconditionally set the autoinc counter. */
|
||||
|
||||
void
|
||||
dict_table_autoinc_initialize(
|
||||
|
|
@ -196,12 +195,12 @@ dict_table_autoinc_read(
|
|||
/* out: value for a new row, or 0 */
|
||||
dict_table_t* table); /* in: table */
|
||||
/************************************************************************
|
||||
Updates the autoinc counter if the value supplied is equal or bigger than the
|
||||
current value. If not inited, does nothing. */
|
||||
Updates the autoinc counter if the value supplied is greater than the
|
||||
current value. */
|
||||
|
||||
void
|
||||
dict_table_autoinc_update(
|
||||
/*======================*/
|
||||
dict_table_autoinc_update_if_greater(
|
||||
/*=================================*/
|
||||
|
||||
dict_table_t* table, /* in: table */
|
||||
ib_ulonglong value); /* in: value which was assigned to a row */
|
||||
|
|
|
|||
|
|
@ -405,10 +405,6 @@ struct dict_table_struct{
|
|||
mutex_t autoinc_mutex;
|
||||
/* mutex protecting the autoincrement
|
||||
counter */
|
||||
ibool autoinc_inited;
|
||||
/* TRUE if the autoinc counter has been
|
||||
inited; MySQL gets the init value by executing
|
||||
SELECT MAX(auto inc column) */
|
||||
ib_ulonglong autoinc;/* autoinc counter value to give to the
|
||||
next inserted row */
|
||||
ulong n_waiting_or_granted_auto_inc_locks;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue