Loading mysql-test/r/loaddata.result +9 −0 Original line number Diff line number Diff line Loading @@ -156,3 +156,12 @@ select load_file("MYSQL_TEST_DIR/t/loaddata.test"); load_file("MYSQL_TEST_DIR/t/loaddata.test") NULL drop table t1, t2; create table t1(f1 int); insert into t1 values(1),(null); create table t2(f2 int auto_increment primary key); select * from t2; f2 1 2 SET @@SQL_MODE=@OLD_SQL_MODE; drop table t1,t2; mysql-test/t/loaddata.test +16 −0 Original line number Diff line number Diff line Loading @@ -136,4 +136,20 @@ eval select load_file("$MYSQL_TEST_DIR/t/loaddata.test"); # cleanup drop table t1, t2; # # Bug#27586: Wrong autoinc value assigned by LOAD DATA in the # NO_AUTO_VALUE_ON_ZERO mode # create table t1(f1 int); insert into t1 values(1),(null); create table t2(f2 int auto_increment primary key); disable_query_log; eval select * into outfile '$MYSQLTEST_VARDIR/tmp/t1' from t1; SET @OLD_SQL_MODE=@@SQL_MODE, @@SQL_MODE=NO_AUTO_VALUE_ON_ZERO; eval load data infile '$MYSQLTEST_VARDIR/tmp/t1' into table t2; enable_query_log; select * from t2; --exec rm $MYSQLTEST_VARDIR/tmp/t1 SET @@SQL_MODE=@OLD_SQL_MODE; drop table t1,t2; # End of 5.0 tests sql/sql_load.cc +8 −7 Original line number Diff line number Diff line Loading @@ -532,7 +532,7 @@ read_fixed_length(THD *thd, COPY_INFO &info, TABLE_LIST *table_list, Item_field *sql_field; TABLE *table= table_list->table; ulonglong id; bool no_trans_update; bool no_trans_update, err; DBUG_ENTER("read_fixed_length"); id= 0; Loading Loading @@ -624,7 +624,9 @@ read_fixed_length(THD *thd, COPY_INFO &info, TABLE_LIST *table_list, DBUG_RETURN(-1); } if (write_record(thd, table, &info)) err= write_record(thd, table, &info); table->auto_increment_field_not_null= FALSE; if (err) DBUG_RETURN(1); thd->no_trans_update= no_trans_update; Loading Loading @@ -669,7 +671,7 @@ read_sep_field(THD *thd, COPY_INFO &info, TABLE_LIST *table_list, TABLE *table= table_list->table; uint enclosed_length; ulonglong id; bool no_trans_update; bool no_trans_update, err; DBUG_ENTER("read_sep_field"); enclosed_length=enclosed.length(); Loading Loading @@ -716,8 +718,6 @@ read_sep_field(THD *thd, COPY_INFO &info, TABLE_LIST *table_list, DBUG_RETURN(1); } field->set_null(); if (field == table->next_number_field) table->auto_increment_field_not_null= TRUE; if (!field->maybe_null()) { if (field->type() == FIELD_TYPE_TIMESTAMP) Loading Loading @@ -803,8 +803,9 @@ read_sep_field(THD *thd, COPY_INFO &info, TABLE_LIST *table_list, DBUG_RETURN(-1); } if (write_record(thd, table, &info)) err= write_record(thd, table, &info); table->auto_increment_field_not_null= FALSE; if (err) DBUG_RETURN(1); /* If auto_increment values are used, save the first one for Loading Loading
mysql-test/r/loaddata.result +9 −0 Original line number Diff line number Diff line Loading @@ -156,3 +156,12 @@ select load_file("MYSQL_TEST_DIR/t/loaddata.test"); load_file("MYSQL_TEST_DIR/t/loaddata.test") NULL drop table t1, t2; create table t1(f1 int); insert into t1 values(1),(null); create table t2(f2 int auto_increment primary key); select * from t2; f2 1 2 SET @@SQL_MODE=@OLD_SQL_MODE; drop table t1,t2;
mysql-test/t/loaddata.test +16 −0 Original line number Diff line number Diff line Loading @@ -136,4 +136,20 @@ eval select load_file("$MYSQL_TEST_DIR/t/loaddata.test"); # cleanup drop table t1, t2; # # Bug#27586: Wrong autoinc value assigned by LOAD DATA in the # NO_AUTO_VALUE_ON_ZERO mode # create table t1(f1 int); insert into t1 values(1),(null); create table t2(f2 int auto_increment primary key); disable_query_log; eval select * into outfile '$MYSQLTEST_VARDIR/tmp/t1' from t1; SET @OLD_SQL_MODE=@@SQL_MODE, @@SQL_MODE=NO_AUTO_VALUE_ON_ZERO; eval load data infile '$MYSQLTEST_VARDIR/tmp/t1' into table t2; enable_query_log; select * from t2; --exec rm $MYSQLTEST_VARDIR/tmp/t1 SET @@SQL_MODE=@OLD_SQL_MODE; drop table t1,t2; # End of 5.0 tests
sql/sql_load.cc +8 −7 Original line number Diff line number Diff line Loading @@ -532,7 +532,7 @@ read_fixed_length(THD *thd, COPY_INFO &info, TABLE_LIST *table_list, Item_field *sql_field; TABLE *table= table_list->table; ulonglong id; bool no_trans_update; bool no_trans_update, err; DBUG_ENTER("read_fixed_length"); id= 0; Loading Loading @@ -624,7 +624,9 @@ read_fixed_length(THD *thd, COPY_INFO &info, TABLE_LIST *table_list, DBUG_RETURN(-1); } if (write_record(thd, table, &info)) err= write_record(thd, table, &info); table->auto_increment_field_not_null= FALSE; if (err) DBUG_RETURN(1); thd->no_trans_update= no_trans_update; Loading Loading @@ -669,7 +671,7 @@ read_sep_field(THD *thd, COPY_INFO &info, TABLE_LIST *table_list, TABLE *table= table_list->table; uint enclosed_length; ulonglong id; bool no_trans_update; bool no_trans_update, err; DBUG_ENTER("read_sep_field"); enclosed_length=enclosed.length(); Loading Loading @@ -716,8 +718,6 @@ read_sep_field(THD *thd, COPY_INFO &info, TABLE_LIST *table_list, DBUG_RETURN(1); } field->set_null(); if (field == table->next_number_field) table->auto_increment_field_not_null= TRUE; if (!field->maybe_null()) { if (field->type() == FIELD_TYPE_TIMESTAMP) Loading Loading @@ -803,8 +803,9 @@ read_sep_field(THD *thd, COPY_INFO &info, TABLE_LIST *table_list, DBUG_RETURN(-1); } if (write_record(thd, table, &info)) err= write_record(thd, table, &info); table->auto_increment_field_not_null= FALSE; if (err) DBUG_RETURN(1); /* If auto_increment values are used, save the first one for Loading