mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
changed for AUTO_VALUE_ON_ZERO
This commit is contained in:
@ -150,28 +150,91 @@ select last_insert_id();
|
|||||||
last_insert_id()
|
last_insert_id()
|
||||||
0
|
0
|
||||||
drop table t1;
|
drop table t1;
|
||||||
drop table if exists t1;
|
|
||||||
Warnings:
|
|
||||||
Note 1051 Unknown table 't1'
|
|
||||||
create table t1(a int auto_increment,b int null,primary key(a));
|
create table t1(a int auto_increment,b int null,primary key(a));
|
||||||
SET SQL_MODE=NO_AUTO_VALUE_ON_ZERO;
|
SET SQL_MODE=NO_AUTO_VALUE_ON_ZERO;
|
||||||
insert into t1(a,b)values(NULL,1);
|
insert into t1(a,b)values(NULL,1);
|
||||||
insert into t1(a,b)values(200,2);
|
insert into t1(a,b)values(200,2);
|
||||||
insert into t1(a,b)values(0,3);
|
insert into t1(a,b)values(0,3);
|
||||||
insert into t1(b)values(4);
|
insert into t1(b)values(4);
|
||||||
SET SQL_MODE='';
|
insert into t1(b)values(5);
|
||||||
insert into t1(a,b)values(NULL,5);
|
insert into t1(b)values(6);
|
||||||
insert into t1(a,b)values(300,6);
|
insert into t1(b)values(7);
|
||||||
insert into t1(a,b)values(0,7);
|
select * from t1 order by b;
|
||||||
insert into t1(b)values(8);
|
|
||||||
select * from t1;
|
|
||||||
a b
|
a b
|
||||||
1 1
|
1 1
|
||||||
200 2
|
200 2
|
||||||
0 3
|
0 3
|
||||||
201 4
|
201 4
|
||||||
202 5
|
202 5
|
||||||
300 6
|
203 6
|
||||||
301 7
|
204 7
|
||||||
302 8
|
delete from t1 where a=0;
|
||||||
|
update t1 set a=0 where b=5;
|
||||||
|
select * from t1 order by b;
|
||||||
|
a b
|
||||||
|
1 1
|
||||||
|
200 2
|
||||||
|
201 4
|
||||||
|
0 5
|
||||||
|
203 6
|
||||||
|
204 7
|
||||||
|
delete from t1 where a=0;
|
||||||
|
update t1 set a=NULL where b=6;
|
||||||
|
Warnings:
|
||||||
|
Warning 1261 Data truncated, NULL supplied to NOT NULL column 'a' at row 4
|
||||||
|
update t1 set a=300 where b=7;
|
||||||
|
SET SQL_MODE='';
|
||||||
|
insert into t1(a,b)values(NULL,8);
|
||||||
|
insert into t1(a,b)values(400,9);
|
||||||
|
insert into t1(a,b)values(0,10);
|
||||||
|
insert into t1(b)values(11);
|
||||||
|
insert into t1(b)values(12);
|
||||||
|
insert into t1(b)values(13);
|
||||||
|
insert into t1(b)values(14);
|
||||||
|
select * from t1 order by b;
|
||||||
|
a b
|
||||||
|
1 1
|
||||||
|
200 2
|
||||||
|
201 4
|
||||||
|
0 6
|
||||||
|
300 7
|
||||||
|
301 8
|
||||||
|
400 9
|
||||||
|
401 10
|
||||||
|
402 11
|
||||||
|
403 12
|
||||||
|
404 13
|
||||||
|
405 14
|
||||||
|
delete from t1 where a=0;
|
||||||
|
update t1 set a=0 where b=12;
|
||||||
|
select * from t1 order by b;
|
||||||
|
a b
|
||||||
|
1 1
|
||||||
|
200 2
|
||||||
|
201 4
|
||||||
|
300 7
|
||||||
|
301 8
|
||||||
|
400 9
|
||||||
|
401 10
|
||||||
|
402 11
|
||||||
|
0 12
|
||||||
|
404 13
|
||||||
|
405 14
|
||||||
|
delete from t1 where a=0;
|
||||||
|
update t1 set a=NULL where b=13;
|
||||||
|
Warnings:
|
||||||
|
Warning 1261 Data truncated, NULL supplied to NOT NULL column 'a' at row 9
|
||||||
|
update t1 set a=500 where b=14;
|
||||||
|
select * from t1 order by b;
|
||||||
|
a b
|
||||||
|
1 1
|
||||||
|
200 2
|
||||||
|
201 4
|
||||||
|
300 7
|
||||||
|
301 8
|
||||||
|
400 9
|
||||||
|
401 10
|
||||||
|
402 11
|
||||||
|
0 13
|
||||||
|
500 14
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -106,17 +106,36 @@ select last_insert_id();
|
|||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
drop table if exists t1;
|
|
||||||
create table t1(a int auto_increment,b int null,primary key(a));
|
create table t1(a int auto_increment,b int null,primary key(a));
|
||||||
SET SQL_MODE=NO_AUTO_VALUE_ON_ZERO;
|
SET SQL_MODE=NO_AUTO_VALUE_ON_ZERO;
|
||||||
insert into t1(a,b)values(NULL,1);
|
insert into t1(a,b)values(NULL,1);
|
||||||
insert into t1(a,b)values(200,2);
|
insert into t1(a,b)values(200,2);
|
||||||
insert into t1(a,b)values(0,3);
|
insert into t1(a,b)values(0,3);
|
||||||
insert into t1(b)values(4);
|
insert into t1(b)values(4);
|
||||||
|
insert into t1(b)values(5);
|
||||||
|
insert into t1(b)values(6);
|
||||||
|
insert into t1(b)values(7);
|
||||||
|
select * from t1 order by b;
|
||||||
|
delete from t1 where a=0;
|
||||||
|
update t1 set a=0 where b=5;
|
||||||
|
select * from t1 order by b;
|
||||||
|
delete from t1 where a=0;
|
||||||
|
update t1 set a=NULL where b=6;
|
||||||
|
update t1 set a=300 where b=7;
|
||||||
SET SQL_MODE='';
|
SET SQL_MODE='';
|
||||||
insert into t1(a,b)values(NULL,5);
|
insert into t1(a,b)values(NULL,8);
|
||||||
insert into t1(a,b)values(300,6);
|
insert into t1(a,b)values(400,9);
|
||||||
insert into t1(a,b)values(0,7);
|
insert into t1(a,b)values(0,10);
|
||||||
insert into t1(b)values(8);
|
insert into t1(b)values(11);
|
||||||
select * from t1;
|
insert into t1(b)values(12);
|
||||||
|
insert into t1(b)values(13);
|
||||||
|
insert into t1(b)values(14);
|
||||||
|
select * from t1 order by b;
|
||||||
|
delete from t1 where a=0;
|
||||||
|
update t1 set a=0 where b=12;
|
||||||
|
select * from t1 order by b;
|
||||||
|
delete from t1 where a=0;
|
||||||
|
update t1 set a=NULL where b=13;
|
||||||
|
update t1 set a=500 where b=14;
|
||||||
|
select * from t1 order by b;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -173,7 +173,7 @@ set_field_to_null_with_conversions(Field *field, bool no_conversions)
|
|||||||
field->reset();
|
field->reset();
|
||||||
if (field == field->table->next_number_field)
|
if (field == field->table->next_number_field)
|
||||||
{
|
{
|
||||||
field->table->auto_increment_field_is_null= true;
|
field->table->auto_increment_field_not_null= false;
|
||||||
return 0; // field is set in handler.cc
|
return 0; // field is set in handler.cc
|
||||||
}
|
}
|
||||||
if (current_thd->count_cuted_fields)
|
if (current_thd->count_cuted_fields)
|
||||||
|
@ -697,14 +697,15 @@ void handler::update_auto_increment()
|
|||||||
longlong nr;
|
longlong nr;
|
||||||
THD *thd;
|
THD *thd;
|
||||||
DBUG_ENTER("update_auto_increment");
|
DBUG_ENTER("update_auto_increment");
|
||||||
if (table->auto_increment_field_is_null)
|
if (table->next_number_field->val_int() != 0 ||
|
||||||
table->auto_increment_field_is_null= false;
|
table->auto_increment_field_not_null &&
|
||||||
else if (table->next_number_field->val_int() != 0 ||
|
current_thd->variables.sql_mode & MODE_NO_AUTO_VALUE_ON_ZERO)
|
||||||
current_thd->variables.sql_mode & MODE_NO_AUTO_VALUE_ON_ZERO)
|
|
||||||
{
|
{
|
||||||
|
table->auto_increment_field_not_null= false;
|
||||||
auto_increment_column_changed=0;
|
auto_increment_column_changed=0;
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
table->auto_increment_field_not_null= false;
|
||||||
thd=current_thd;
|
thd=current_thd;
|
||||||
if ((nr=thd->next_insert_id))
|
if ((nr=thd->next_insert_id))
|
||||||
thd->next_insert_id=0; // Clear after use
|
thd->next_insert_id=0; // Clear after use
|
||||||
|
@ -2247,8 +2247,8 @@ fill_record(List<Item> &fields,List<Item> &values, bool ignore_errors)
|
|||||||
value=v++;
|
value=v++;
|
||||||
Field *rfield= field->field;
|
Field *rfield= field->field;
|
||||||
TABLE *table= rfield->table;
|
TABLE *table= rfield->table;
|
||||||
if (rfield==table->next_number_field)
|
if (rfield == table->next_number_field)
|
||||||
table->auto_increment_field_is_null= false;
|
table->auto_increment_field_not_null= true;
|
||||||
if (value->save_in_field(rfield, 0) > 0 && !ignore_errors)
|
if (value->save_in_field(rfield, 0) > 0 && !ignore_errors)
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
@ -2268,8 +2268,8 @@ fill_record(Field **ptr,List<Item> &values, bool ignore_errors)
|
|||||||
{
|
{
|
||||||
value=v++;
|
value=v++;
|
||||||
TABLE *table= field->table;
|
TABLE *table= field->table;
|
||||||
if (field==table->next_number_field)
|
if (field == table->next_number_field)
|
||||||
table->auto_increment_field_is_null= false;
|
table->auto_increment_field_not_null= true;
|
||||||
if (value->save_in_field(field, 0) == 1 && !ignore_errors)
|
if (value->save_in_field(field, 0) == 1 && !ignore_errors)
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
|
@ -253,7 +253,6 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list,
|
|||||||
else
|
else
|
||||||
bulk_insert=0;
|
bulk_insert=0;
|
||||||
|
|
||||||
table->auto_increment_field_is_null= true;
|
|
||||||
while ((values= its++))
|
while ((values= its++))
|
||||||
{
|
{
|
||||||
if (fields.elements || !value_count)
|
if (fields.elements || !value_count)
|
||||||
|
@ -116,7 +116,7 @@ struct st_table {
|
|||||||
my_bool crashed;
|
my_bool crashed;
|
||||||
my_bool is_view;
|
my_bool is_view;
|
||||||
my_bool no_keyread;
|
my_bool no_keyread;
|
||||||
my_bool auto_increment_field_is_null;
|
my_bool auto_increment_field_not_null;
|
||||||
Field *next_number_field, /* Set if next_number is activated */
|
Field *next_number_field, /* Set if next_number is activated */
|
||||||
*found_next_number_field, /* Set on open */
|
*found_next_number_field, /* Set on open */
|
||||||
*rowid_field;
|
*rowid_field;
|
||||||
|
Reference in New Issue
Block a user