A fix and test case for bug#5510 "inserting Null in AutoIncrement primary
key Column Fails".
This commit is contained in:
parent
c12c9af224
commit
4230eae857
@ -270,3 +270,22 @@ execute stmt using @var;
|
|||||||
a
|
a
|
||||||
deallocate prepare stmt;
|
deallocate prepare stmt;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (a bigint(20) not null primary key auto_increment);
|
||||||
|
insert into t1 (a) values (null);
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
prepare stmt from "insert into t1 (a) values (?)";
|
||||||
|
set @var=null;
|
||||||
|
execute stmt using @var;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a timestamp not null);
|
||||||
|
prepare stmt from "insert into t1 (a) values (?)";
|
||||||
|
execute stmt using @var;
|
||||||
|
select * from t1;
|
||||||
|
deallocate prepare stmt;
|
||||||
|
drop table t1;
|
||||||
|
@ -1015,7 +1015,7 @@ set @arg00=NULL;
|
|||||||
set @arg01=2;
|
set @arg01=2;
|
||||||
execute stmt1 using @arg00, @arg01;
|
execute stmt1 using @arg00, @arg01;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'a' at row 1
|
Warning 1263 Data truncated; NULL supplied to NOT NULL column 'a' at row 1
|
||||||
select a,b from t1;
|
select a,b from t1;
|
||||||
a b
|
a b
|
||||||
1 one
|
1 one
|
||||||
|
@ -1015,7 +1015,7 @@ set @arg00=NULL;
|
|||||||
set @arg01=2;
|
set @arg01=2;
|
||||||
execute stmt1 using @arg00, @arg01;
|
execute stmt1 using @arg00, @arg01;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'a' at row 1
|
Warning 1263 Data truncated; NULL supplied to NOT NULL column 'a' at row 1
|
||||||
select a,b from t1;
|
select a,b from t1;
|
||||||
a b
|
a b
|
||||||
0 two
|
0 two
|
||||||
|
@ -1016,7 +1016,7 @@ set @arg00=NULL;
|
|||||||
set @arg01=2;
|
set @arg01=2;
|
||||||
execute stmt1 using @arg00, @arg01;
|
execute stmt1 using @arg00, @arg01;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'a' at row 1
|
Warning 1263 Data truncated; NULL supplied to NOT NULL column 'a' at row 1
|
||||||
select a,b from t1;
|
select a,b from t1;
|
||||||
a b
|
a b
|
||||||
1 one
|
1 one
|
||||||
|
@ -1058,7 +1058,7 @@ set @arg00=NULL;
|
|||||||
set @arg01=2;
|
set @arg01=2;
|
||||||
execute stmt1 using @arg00, @arg01;
|
execute stmt1 using @arg00, @arg01;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'a' at row 1
|
Warning 1263 Data truncated; NULL supplied to NOT NULL column 'a' at row 1
|
||||||
select a,b from t1;
|
select a,b from t1;
|
||||||
a b
|
a b
|
||||||
3 three
|
3 three
|
||||||
@ -2253,7 +2253,7 @@ set @arg00=NULL;
|
|||||||
set @arg01=2;
|
set @arg01=2;
|
||||||
execute stmt1 using @arg00, @arg01;
|
execute stmt1 using @arg00, @arg01;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'a' at row 1
|
Warning 1263 Data truncated; NULL supplied to NOT NULL column 'a' at row 1
|
||||||
select a,b from t1;
|
select a,b from t1;
|
||||||
a b
|
a b
|
||||||
3 three
|
3 three
|
||||||
|
@ -1015,7 +1015,7 @@ set @arg00=NULL;
|
|||||||
set @arg01=2;
|
set @arg01=2;
|
||||||
execute stmt1 using @arg00, @arg01;
|
execute stmt1 using @arg00, @arg01;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'a' at row 1
|
Warning 1263 Data truncated; NULL supplied to NOT NULL column 'a' at row 1
|
||||||
select a,b from t1;
|
select a,b from t1;
|
||||||
a b
|
a b
|
||||||
0 two
|
0 two
|
||||||
|
@ -278,3 +278,29 @@ execute stmt using @var;
|
|||||||
deallocate prepare stmt;
|
deallocate prepare stmt;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#5510 "inserting Null in AutoIncrement primary key Column Fails"
|
||||||
|
# (prepared statements)
|
||||||
|
# The cause: misuse of internal MySQL 'Field' API.
|
||||||
|
#
|
||||||
|
|
||||||
|
create table t1 (a bigint(20) not null primary key auto_increment);
|
||||||
|
insert into t1 (a) values (null);
|
||||||
|
select * from t1;
|
||||||
|
prepare stmt from "insert into t1 (a) values (?)";
|
||||||
|
set @var=null;
|
||||||
|
execute stmt using @var;
|
||||||
|
select * from t1;
|
||||||
|
drop table t1;
|
||||||
|
#
|
||||||
|
# check the same for timestamps
|
||||||
|
#
|
||||||
|
create table t1 (a timestamp not null);
|
||||||
|
prepare stmt from "insert into t1 (a) values (?)";
|
||||||
|
execute stmt using @var;
|
||||||
|
--disable_result_log
|
||||||
|
select * from t1;
|
||||||
|
--enable_result_log
|
||||||
|
deallocate prepare stmt;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
@ -891,7 +891,7 @@ int Item_param::save_in_field(Field *field, bool no_conversions)
|
|||||||
return field->store(str_value.ptr(), str_value.length(),
|
return field->store(str_value.ptr(), str_value.length(),
|
||||||
str_value.charset());
|
str_value.charset());
|
||||||
case NULL_VALUE:
|
case NULL_VALUE:
|
||||||
return set_field_to_null(field);
|
return set_field_to_null_with_conversions(field, no_conversions);
|
||||||
case NO_VALUE:
|
case NO_VALUE:
|
||||||
default:
|
default:
|
||||||
DBUG_ASSERT(0);
|
DBUG_ASSERT(0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user