Loading client/mysqltest.c +1 −0 Original line number Diff line number Diff line Loading @@ -3914,6 +3914,7 @@ int main(int argc, char **argv) error|= run_query(&cur_con->mysql, q, QUERY_REAP|QUERY_SEND); display_result_vertically= old_display_result_vertically; q->last_argument= q->end; query_executed= 1; break; } case Q_QUERY: Loading mysql-test/r/loaddata.result +10 −0 Original line number Diff line number Diff line Loading @@ -66,3 +66,13 @@ a b 3 row 3 0 drop table t1; SET @OLD_SQL_MODE=@@SQL_MODE, @@SQL_MODE=NO_AUTO_VALUE_ON_ZERO; create table t1(id integer not null auto_increment primary key); insert into t1 values(0); select * from t1; id 0 select * from t1; id 0 SET @@SQL_MODE=@OLD_SQL_MODE; mysql-test/t/loaddata.test +27 −0 Original line number Diff line number Diff line Loading @@ -31,4 +31,31 @@ load data infile '../../std_data/loaddata4.dat' into table t1 fields terminated select * from t1; drop table t1; # # Bug #12053 LOAD DATA INFILE ignores NO_AUTO_VALUE_ON_ZERO setting # SET @OLD_SQL_MODE=@@SQL_MODE, @@SQL_MODE=NO_AUTO_VALUE_ON_ZERO; create table t1(id integer not null auto_increment primary key); insert into t1 values(0); disable_query_log; eval SELECT * INTO OUTFILE '$MYSQL_TEST_DIR/var/tmp/t1' from t1; delete from t1; eval load data infile '$MYSQL_TEST_DIR/var/tmp/t1' into table t1; enable_query_log; select * from t1; --exec rm $MYSQL_TEST_DIR/var/tmp/t1 disable_query_log; eval SELECT * INTO OUTFILE '$MYSQL_TEST_DIR/var/tmp/t1' FIELDS TERMINATED BY '' OPTIONALLY ENCLOSED BY '' LINES TERMINATED BY '\r\n' FROM t1; delete from t1; eval load data infile '$MYSQL_TEST_DIR/var/tmp/t1' into table t1 FIELDS TERMINATED BY '' OPTIONALLY ENCLOSED BY '' LINES TERMINATED BY '\r\n'; enable_query_log; select * from t1; --exec rm $MYSQL_TEST_DIR/var/tmp/t1 SET @@SQL_MODE=@OLD_SQL_MODE; # End of 4.1 tests sql/sql_load.cc +4 −0 Original line number Diff line number Diff line Loading @@ -429,6 +429,8 @@ read_fixed_length(THD *thd,COPY_INFO &info,TABLE *table,List<Item> &fields, while ((sql_field= (Item_field*) it++)) { Field *field= sql_field->field; if (field == table->next_number_field) table->auto_increment_field_not_null= TRUE; if (pos == read_info.row_end) { thd->cuted_fields++; /* Not enough fields */ Loading Loading @@ -520,6 +522,8 @@ read_sep_field(THD *thd,COPY_INFO &info,TABLE *table, length=(uint) (read_info.row_end-pos); Field *field=sql_field->field; if (field == table->next_number_field) table->auto_increment_field_not_null= TRUE; if (!read_info.enclosed && (enclosed_length && length == 4 && !memcmp(pos,"NULL",4)) || (length == 1 && read_info.found_null)) Loading sql/sql_yacc.yy +20 −4 Original line number Diff line number Diff line Loading @@ -644,7 +644,8 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); NUM_literal %type <item_list> expr_list udf_expr_list when_list ident_list ident_list_arg expr_list udf_expr_list udf_sum_expr_list when_list ident_list ident_list_arg %type <key_type> key_type opt_unique_or_fulltext constraint_key_type Loading Loading @@ -3137,21 +3138,21 @@ simple_expr: { $$= new Item_func_trim($5,$3); } | TRUNCATE_SYM '(' expr ',' expr ')' { $$= new Item_func_round($3,$5,1); } | UDA_CHAR_SUM '(' udf_expr_list ')' | UDA_CHAR_SUM '(' udf_sum_expr_list ')' { if ($3 != NULL) $$ = new Item_sum_udf_str($1, *$3); else $$ = new Item_sum_udf_str($1); } | UDA_FLOAT_SUM '(' udf_expr_list ')' | UDA_FLOAT_SUM '(' udf_sum_expr_list ')' { if ($3 != NULL) $$ = new Item_sum_udf_float($1, *$3); else $$ = new Item_sum_udf_float($1); } | UDA_INT_SUM '(' udf_expr_list ')' | UDA_INT_SUM '(' udf_sum_expr_list ')' { if ($3 != NULL) $$ = new Item_sum_udf_int($1, *$3); Loading Loading @@ -3289,6 +3290,21 @@ udf_expr_list: /* empty */ { $$= NULL; } | expr_list { $$= $1;}; udf_sum_expr_list: { LEX *lex= Lex; if (lex->current_select->inc_in_sum_expr()) { yyerror(ER(ER_SYNTAX_ERROR)); YYABORT; } } udf_expr_list { Select->in_sum_expr--; $$= $2; }; sum_expr: AVG_SYM '(' in_sum_expr ')' { $$=new Item_sum_avg($3); } Loading Loading
client/mysqltest.c +1 −0 Original line number Diff line number Diff line Loading @@ -3914,6 +3914,7 @@ int main(int argc, char **argv) error|= run_query(&cur_con->mysql, q, QUERY_REAP|QUERY_SEND); display_result_vertically= old_display_result_vertically; q->last_argument= q->end; query_executed= 1; break; } case Q_QUERY: Loading
mysql-test/r/loaddata.result +10 −0 Original line number Diff line number Diff line Loading @@ -66,3 +66,13 @@ a b 3 row 3 0 drop table t1; SET @OLD_SQL_MODE=@@SQL_MODE, @@SQL_MODE=NO_AUTO_VALUE_ON_ZERO; create table t1(id integer not null auto_increment primary key); insert into t1 values(0); select * from t1; id 0 select * from t1; id 0 SET @@SQL_MODE=@OLD_SQL_MODE;
mysql-test/t/loaddata.test +27 −0 Original line number Diff line number Diff line Loading @@ -31,4 +31,31 @@ load data infile '../../std_data/loaddata4.dat' into table t1 fields terminated select * from t1; drop table t1; # # Bug #12053 LOAD DATA INFILE ignores NO_AUTO_VALUE_ON_ZERO setting # SET @OLD_SQL_MODE=@@SQL_MODE, @@SQL_MODE=NO_AUTO_VALUE_ON_ZERO; create table t1(id integer not null auto_increment primary key); insert into t1 values(0); disable_query_log; eval SELECT * INTO OUTFILE '$MYSQL_TEST_DIR/var/tmp/t1' from t1; delete from t1; eval load data infile '$MYSQL_TEST_DIR/var/tmp/t1' into table t1; enable_query_log; select * from t1; --exec rm $MYSQL_TEST_DIR/var/tmp/t1 disable_query_log; eval SELECT * INTO OUTFILE '$MYSQL_TEST_DIR/var/tmp/t1' FIELDS TERMINATED BY '' OPTIONALLY ENCLOSED BY '' LINES TERMINATED BY '\r\n' FROM t1; delete from t1; eval load data infile '$MYSQL_TEST_DIR/var/tmp/t1' into table t1 FIELDS TERMINATED BY '' OPTIONALLY ENCLOSED BY '' LINES TERMINATED BY '\r\n'; enable_query_log; select * from t1; --exec rm $MYSQL_TEST_DIR/var/tmp/t1 SET @@SQL_MODE=@OLD_SQL_MODE; # End of 4.1 tests
sql/sql_load.cc +4 −0 Original line number Diff line number Diff line Loading @@ -429,6 +429,8 @@ read_fixed_length(THD *thd,COPY_INFO &info,TABLE *table,List<Item> &fields, while ((sql_field= (Item_field*) it++)) { Field *field= sql_field->field; if (field == table->next_number_field) table->auto_increment_field_not_null= TRUE; if (pos == read_info.row_end) { thd->cuted_fields++; /* Not enough fields */ Loading Loading @@ -520,6 +522,8 @@ read_sep_field(THD *thd,COPY_INFO &info,TABLE *table, length=(uint) (read_info.row_end-pos); Field *field=sql_field->field; if (field == table->next_number_field) table->auto_increment_field_not_null= TRUE; if (!read_info.enclosed && (enclosed_length && length == 4 && !memcmp(pos,"NULL",4)) || (length == 1 && read_info.found_null)) Loading
sql/sql_yacc.yy +20 −4 Original line number Diff line number Diff line Loading @@ -644,7 +644,8 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); NUM_literal %type <item_list> expr_list udf_expr_list when_list ident_list ident_list_arg expr_list udf_expr_list udf_sum_expr_list when_list ident_list ident_list_arg %type <key_type> key_type opt_unique_or_fulltext constraint_key_type Loading Loading @@ -3137,21 +3138,21 @@ simple_expr: { $$= new Item_func_trim($5,$3); } | TRUNCATE_SYM '(' expr ',' expr ')' { $$= new Item_func_round($3,$5,1); } | UDA_CHAR_SUM '(' udf_expr_list ')' | UDA_CHAR_SUM '(' udf_sum_expr_list ')' { if ($3 != NULL) $$ = new Item_sum_udf_str($1, *$3); else $$ = new Item_sum_udf_str($1); } | UDA_FLOAT_SUM '(' udf_expr_list ')' | UDA_FLOAT_SUM '(' udf_sum_expr_list ')' { if ($3 != NULL) $$ = new Item_sum_udf_float($1, *$3); else $$ = new Item_sum_udf_float($1); } | UDA_INT_SUM '(' udf_expr_list ')' | UDA_INT_SUM '(' udf_sum_expr_list ')' { if ($3 != NULL) $$ = new Item_sum_udf_int($1, *$3); Loading Loading @@ -3289,6 +3290,21 @@ udf_expr_list: /* empty */ { $$= NULL; } | expr_list { $$= $1;}; udf_sum_expr_list: { LEX *lex= Lex; if (lex->current_select->inc_in_sum_expr()) { yyerror(ER(ER_SYNTAX_ERROR)); YYABORT; } } udf_expr_list { Select->in_sum_expr--; $$= $2; }; sum_expr: AVG_SYM '(' in_sum_expr ')' { $$=new Item_sum_avg($3); } Loading