From a56959a5b6b5e04e86b03e33fd4eb664322f9342 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 28 Jul 2003 10:57:46 -0400 Subject: changed for AUTO_VALUE_ON_ZERO mysql-test/r/auto_increment.result: added test for AUTO_VALUE_ON_ZERO mysql-test/t/auto_increment.test: added test for AUTO_VALUE_ON_ZERO --- sql/field_conv.cc | 2 +- sql/handler.cc | 9 +++++---- sql/sql_base.cc | 8 ++++---- sql/sql_insert.cc | 1 - sql/table.h | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) (limited to 'sql') diff --git a/sql/field_conv.cc b/sql/field_conv.cc index 40e423a5aca..44e30afb880 100644 --- a/sql/field_conv.cc +++ b/sql/field_conv.cc @@ -173,7 +173,7 @@ set_field_to_null_with_conversions(Field *field, bool no_conversions) field->reset(); 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 } if (current_thd->count_cuted_fields) diff --git a/sql/handler.cc b/sql/handler.cc index 7f4b63e7551..90fd754a4c5 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -697,14 +697,15 @@ void handler::update_auto_increment() longlong nr; THD *thd; DBUG_ENTER("update_auto_increment"); - if (table->auto_increment_field_is_null) - table->auto_increment_field_is_null= false; - else if (table->next_number_field->val_int() != 0 || - current_thd->variables.sql_mode & MODE_NO_AUTO_VALUE_ON_ZERO) + if (table->next_number_field->val_int() != 0 || + table->auto_increment_field_not_null && + current_thd->variables.sql_mode & MODE_NO_AUTO_VALUE_ON_ZERO) { + table->auto_increment_field_not_null= false; auto_increment_column_changed=0; DBUG_VOID_RETURN; } + table->auto_increment_field_not_null= false; thd=current_thd; if ((nr=thd->next_insert_id)) thd->next_insert_id=0; // Clear after use diff --git a/sql/sql_base.cc b/sql/sql_base.cc index a7798588d59..dbb29cf53e3 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -2247,8 +2247,8 @@ fill_record(List &fields,List &values, bool ignore_errors) value=v++; Field *rfield= field->field; TABLE *table= rfield->table; - if (rfield==table->next_number_field) - table->auto_increment_field_is_null= false; + if (rfield == table->next_number_field) + table->auto_increment_field_not_null= true; if (value->save_in_field(rfield, 0) > 0 && !ignore_errors) DBUG_RETURN(1); } @@ -2268,8 +2268,8 @@ fill_record(Field **ptr,List &values, bool ignore_errors) { value=v++; TABLE *table= field->table; - if (field==table->next_number_field) - table->auto_increment_field_is_null= false; + if (field == table->next_number_field) + table->auto_increment_field_not_null= true; if (value->save_in_field(field, 0) == 1 && !ignore_errors) DBUG_RETURN(1); } diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index bddaffd3f4f..947205949f1 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -253,7 +253,6 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list, else bulk_insert=0; - table->auto_increment_field_is_null= true; while ((values= its++)) { if (fields.elements || !value_count) diff --git a/sql/table.h b/sql/table.h index 8137f47aa1f..1831c834de6 100644 --- a/sql/table.h +++ b/sql/table.h @@ -116,7 +116,7 @@ struct st_table { my_bool crashed; my_bool is_view; 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 */ *found_next_number_field, /* Set on open */ *rowid_field; -- cgit v1.2.1