From 91d6ec343884e7f900dfbac41130d365999240b9 Mon Sep 17 00:00:00 2001 From: "serg@sergbook.mysql.com" <> Date: Mon, 31 Mar 2003 23:14:26 +0400 Subject: don't increment LAST_INSERT_ID() when incremented value cannot be stored in auto_increment column (e.g. is too big) --- mysql-test/r/auto_increment.result | 38 ++++++++++++++++++++++++++++++++++++++ mysql-test/t/auto_increment.test | 30 ++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) (limited to 'mysql-test') diff --git a/mysql-test/r/auto_increment.result b/mysql-test/r/auto_increment.result index e79e6aab56b..2facb504294 100644 --- a/mysql-test/r/auto_increment.result +++ b/mysql-test/r/auto_increment.result @@ -105,3 +105,41 @@ Table Op Msg_type Msg_text test.t1 check warning Found row where the auto_increment column has the value 0 test.t1 check status OK drop table t1; +create table t1 (i tinyint unsigned not null auto_increment primary key); +insert into t1 set i = 254; +insert into t1 set i = null; +select last_insert_id(); +last_insert_id() +255 +insert into t1 set i = null; +Duplicate entry '255' for key 1 +select last_insert_id(); +last_insert_id() +255 +drop table t1; +create table t1 (i tinyint unsigned not null auto_increment, key (i)); +insert into t1 set i = 254; +insert into t1 set i = null; +select last_insert_id(); +last_insert_id() +255 +insert into t1 set i = null; +select last_insert_id(); +last_insert_id() +255 +drop table t1; +create table t1 (i tinyint unsigned not null auto_increment primary key, b int, unique (b)); +insert into t1 values (NULL, 10); +select last_insert_id(); +last_insert_id() +1 +insert into t1 values (NULL, 15); +select last_insert_id(); +last_insert_id() +2 +insert into t1 values (NULL, 10); +Duplicate entry '10' for key 2 +select last_insert_id(); +last_insert_id() +3 +drop table t1; diff --git a/mysql-test/t/auto_increment.test b/mysql-test/t/auto_increment.test index d7f67fe80d4..63fdfded6d0 100644 --- a/mysql-test/t/auto_increment.test +++ b/mysql-test/t/auto_increment.test @@ -72,3 +72,33 @@ select * from t1; check table t1; drop table t1; +# +# last_insert_id() madness +# +create table t1 (i tinyint unsigned not null auto_increment primary key); +insert into t1 set i = 254; +insert into t1 set i = null; +select last_insert_id(); +--error 1062 +insert into t1 set i = null; +select last_insert_id(); +drop table t1; + +create table t1 (i tinyint unsigned not null auto_increment, key (i)); +insert into t1 set i = 254; +insert into t1 set i = null; +select last_insert_id(); +insert into t1 set i = null; +select last_insert_id(); +drop table t1; + +create table t1 (i tinyint unsigned not null auto_increment primary key, b int, unique (b)); +insert into t1 values (NULL, 10); +select last_insert_id(); +insert into t1 values (NULL, 15); +select last_insert_id(); +--error 1062 +insert into t1 values (NULL, 10); +select last_insert_id(); +drop table t1; + -- cgit v1.2.1