diff options
author | unknown <guilhem@gbichot3.local> | 2006-07-06 14:42:47 +0200 |
---|---|---|
committer | unknown <guilhem@gbichot3.local> | 2006-07-06 14:42:47 +0200 |
commit | 90cf816f74333f1f8888f59362a95d68a92532d9 (patch) | |
tree | 5761a8928255aabd55b3b41f2b257a6fdc2fb3a6 /sql/handler.cc | |
parent | 8646be88a1c03f9063d95a470aa510a66d18c25c (diff) | |
parent | 4e9d7d6c4bfec9fc803b0db9624d255c25319bfb (diff) | |
download | mariadb-git-90cf816f74333f1f8888f59362a95d68a92532d9.tar.gz |
Merge gbichot3.local:/home/mysql_src/mysql-5.0-20524
into gbichot3.local:/home/mysql_src/mysql-5.0
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/sql_insert.cc:
Auto merged
Diffstat (limited to 'sql/handler.cc')
-rw-r--r-- | sql/handler.cc | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/sql/handler.cc b/sql/handler.cc index 9259bc85aa0..9c03a9ef88f 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -1471,6 +1471,26 @@ next_insert_id(ulonglong nr,struct system_variables *variables) } +void handler::adjust_next_insert_id_after_explicit_value(ulonglong nr) +{ + /* + If we have set THD::next_insert_id previously and plan to insert an + explicitely-specified value larger than this, we need to increase + THD::next_insert_id to be greater than the explicit value. + */ + THD *thd= table->in_use; + if (thd->clear_next_insert_id && (nr >= thd->next_insert_id)) + { + if (thd->variables.auto_increment_increment != 1) + nr= next_insert_id(nr, &thd->variables); + else + nr++; + thd->next_insert_id= nr; + DBUG_PRINT("info",("next_insert_id: %lu", (ulong) nr)); + } +} + + /* Computes the largest number X: - smaller than or equal to "nr" @@ -1587,17 +1607,7 @@ bool handler::update_auto_increment() /* Clear flag for next row */ /* Mark that we didn't generate a new value **/ auto_increment_column_changed=0; - - /* Update next_insert_id if we have already generated a value */ - if (thd->clear_next_insert_id && nr >= thd->next_insert_id) - { - if (variables->auto_increment_increment != 1) - nr= next_insert_id(nr, variables); - else - nr++; - thd->next_insert_id= nr; - DBUG_PRINT("info",("next_insert_id: %lu", (ulong) nr)); - } + adjust_next_insert_id_after_explicit_value(nr); DBUG_RETURN(0); } if (!(nr= thd->next_insert_id)) |