mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
Remove wrong bug fix when calling create_sort_index.
Fix possible replication bug with LOAD DATA ... IGNORE LINES # mysql-test/r/rpl_log.result: Test of load data ... ignore # lines mysql-test/t/rpl_log.test: Test of load data ... ignore # lines sql/log_event.cc: Fix replication bug with LOAD DATA ... IGNORE LINES # (Note that the code that is probably not executed in 4.0) sql/sql_parse.cc: Indentation fix sql/sql_select.cc: Remove wrong bug fix (all tests passes) sql/sql_yacc.yy: Indentation cleanup
This commit is contained in:
parent
6db21de014
commit
20901edafb
6 changed files with 28 additions and 19 deletions
|
@ -12,7 +12,10 @@ create table t1(n int not null auto_increment primary key);
|
|||
insert into t1 values (NULL);
|
||||
drop table t1;
|
||||
create table t1 (word char(20) not null);
|
||||
load data infile '../../std_data/words.dat' into table t1;
|
||||
load data infile '../../std_data/words.dat' into table t1 ignore 1 lines;
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
69
|
||||
drop table t1;
|
||||
show binlog events;
|
||||
Log_name Pos Event_type Server_id Orig_log_pos Info
|
||||
|
|
|
@ -13,7 +13,8 @@ create table t1(n int not null auto_increment primary key);
|
|||
insert into t1 values (NULL);
|
||||
drop table t1;
|
||||
create table t1 (word char(20) not null);
|
||||
load data infile '../../std_data/words.dat' into table t1;
|
||||
load data infile '../../std_data/words.dat' into table t1 ignore 1 lines;
|
||||
select count(*) from t1;
|
||||
drop table t1;
|
||||
--replace_result $VERSION VERSION
|
||||
show binlog events;
|
||||
|
@ -35,8 +36,8 @@ flush logs;
|
|||
# So, depending on a few milliseconds, we end up with 2 rotate events in the
|
||||
# relay log or one, which influences the output of SHOW SLAVE STATUS, making
|
||||
# it not predictable and causing random test failures.
|
||||
# To make it predictable, we do a useless update now, but which has the interest
|
||||
# of making the slave catch both rotate events.
|
||||
# To make it predictable, we do a useless update now, but which has the
|
||||
# interest of making the slave catch both rotate events.
|
||||
|
||||
create table t5 (a int);
|
||||
drop table t5;
|
||||
|
|
|
@ -329,8 +329,14 @@ void Load_log_event::pack_info(String* packet)
|
|||
pretty_print_str(&tmp, sql_ex.line_start, sql_ex.line_start_len);
|
||||
}
|
||||
|
||||
if ((int)skip_lines > 0)
|
||||
tmp.append( " IGNORE %ld LINES ", (long) skip_lines);
|
||||
if ((long) skip_lines > 0)
|
||||
{
|
||||
char nr_buff[32], *end;
|
||||
tmp.append( " IGNORE ");
|
||||
end= longlong10_to_str((longlong) skip_lines, nr_buff, 10);
|
||||
tmp.append(nr_buff, (uint) (end-nr_buff));
|
||||
tmp.append( " LINES");
|
||||
}
|
||||
|
||||
if (num_fields)
|
||||
{
|
||||
|
@ -1338,8 +1344,8 @@ void Load_log_event::print(FILE* file, bool short_form, char* last_db)
|
|||
pretty_print_str(file, sql_ex.line_start, sql_ex.line_start_len);
|
||||
}
|
||||
|
||||
if ((int)skip_lines > 0)
|
||||
fprintf(file, " IGNORE %ld LINES ", (long) skip_lines);
|
||||
if ((long) skip_lines > 0)
|
||||
fprintf(file, " IGNORE %ld LINES", (long) skip_lines);
|
||||
|
||||
if (num_fields)
|
||||
{
|
||||
|
@ -1934,20 +1940,22 @@ int Load_log_event::exec_event(NET* net, struct st_relay_log_info* rli,
|
|||
else if (sql_ex.opt_flags & IGNORE_FLAG)
|
||||
handle_dup= DUP_IGNORE;
|
||||
else
|
||||
{
|
||||
/*
|
||||
Note that when replication is running fine, if it was DUP_ERROR on the
|
||||
When replication is running fine, if it was DUP_ERROR on the
|
||||
master then we could choose DUP_IGNORE here, because if DUP_ERROR
|
||||
suceeded on master, and data is identical on the master and slave,
|
||||
then there should be no uniqueness errors on slave, so DUP_IGNORE is
|
||||
the same as DUP_ERROR. But in the unlikely case of uniqueness errors
|
||||
(because the data on the master and slave happen to be different (user
|
||||
error or bug), we want LOAD DATA to print an error message on the
|
||||
slave to discover the problem.
|
||||
(because the data on the master and slave happen to be different
|
||||
(user error or bug), we want LOAD DATA to print an error message on
|
||||
the slave to discover the problem.
|
||||
|
||||
If reading from net (a 3.23 master), mysql_load() will change this
|
||||
to DUP_IGNORE.
|
||||
*/
|
||||
handle_dup= DUP_ERROR;
|
||||
}
|
||||
|
||||
sql_exchange ex((char*)fname, sql_ex.opt_flags & DUMPFILE_FLAG);
|
||||
String field_term(sql_ex.field_term,sql_ex.field_term_len);
|
||||
|
|
|
@ -3579,8 +3579,8 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables)
|
|||
if (options & REFRESH_LOG)
|
||||
{
|
||||
/*
|
||||
Flush the normal query log, the update log, the binary log, the slow query
|
||||
log, and the relay log (if it exists).
|
||||
Flush the normal query log, the update log, the binary log,
|
||||
the slow query log, and the relay log (if it exists).
|
||||
*/
|
||||
mysql_log.new_file(1);
|
||||
mysql_update_log.new_file(1);
|
||||
|
|
|
@ -972,10 +972,7 @@ mysql_select(THD *thd,TABLE_LIST *tables,List<Item> &fields,COND *conds,
|
|||
group ? group : order,
|
||||
select_limit,
|
||||
thd->select_limit))
|
||||
{
|
||||
if (!join.join_tab[join.const_tables].select->quick)
|
||||
goto err;
|
||||
}
|
||||
goto err;
|
||||
}
|
||||
join.having=having; // Actually a parameter
|
||||
thd->proc_info="Sending data";
|
||||
|
|
|
@ -2024,7 +2024,7 @@ simple_expr:
|
|||
{
|
||||
LEX *lex=Lex;
|
||||
$$= new Item_func_week($3,new Item_int((char*) "0",
|
||||
lex->thd->variables.default_week_format,1));
|
||||
lex->thd->variables.default_week_format,1));
|
||||
}
|
||||
| WEEK_SYM '(' expr ',' expr ')'
|
||||
{ $$= new Item_func_week($3,$5); }
|
||||
|
|
Loading…
Reference in a new issue