mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Conflicts resolving
This commit is contained in:
@ -287,6 +287,20 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
|
||||
{
|
||||
if (lf_info.wrote_create_file)
|
||||
{
|
||||
/*
|
||||
Make sure last block (the one which caused the error) gets logged.
|
||||
This is needed because otherwise after write of
|
||||
(to the binlog, not to read_info (which is a cache))
|
||||
Delete_file_log_event the bad block will remain in read_info.
|
||||
At the end of mysql_load(), the destructor of read_info will call
|
||||
end_io_cache() which will flush read_info, so we will finally have
|
||||
this in the binlog:
|
||||
Append_block # The last successfull block
|
||||
Delete_file
|
||||
Append_block # The failing block
|
||||
which is nonsense.
|
||||
*/
|
||||
read_info.end_io_cache();
|
||||
Delete_file_log_event d(thd, log_delayed);
|
||||
mysql_bin_log.write(&d);
|
||||
}
|
||||
@ -348,8 +362,10 @@ read_fixed_length(THD *thd,COPY_INFO &info,TABLE *table,List<Item> &fields,
|
||||
{
|
||||
List_iterator_fast<Item> it(fields);
|
||||
Item_field *sql_field;
|
||||
ulonglong id;
|
||||
DBUG_ENTER("read_fixed_length");
|
||||
|
||||
id=0;
|
||||
/* No fields can be null in this format. mark all fields as not null */
|
||||
while ((sql_field= (Item_field*) it++))
|
||||
sql_field->field->set_notnull();
|
||||
@ -392,6 +408,14 @@ read_fixed_length(THD *thd,COPY_INFO &info,TABLE *table,List<Item> &fields,
|
||||
thd->cuted_fields++; /* To long row */
|
||||
if (write_record(table,&info))
|
||||
DBUG_RETURN(1);
|
||||
/*
|
||||
If auto_increment values are used, save the first one
|
||||
for LAST_INSERT_ID() and for the binary/update log.
|
||||
We can't use insert_id() as we don't want to touch the
|
||||
last_insert_id_used flag.
|
||||
*/
|
||||
if (!id && thd->insert_id_used)
|
||||
id= thd->last_insert_id;
|
||||
if (table->next_number_field)
|
||||
table->next_number_field->reset(); // Clear for next record
|
||||
if (read_info.next_line()) // Skip to next line
|
||||
@ -399,6 +423,8 @@ read_fixed_length(THD *thd,COPY_INFO &info,TABLE *table,List<Item> &fields,
|
||||
if (read_info.line_cuted)
|
||||
thd->cuted_fields++; /* To long row */
|
||||
}
|
||||
if (id && !read_info.error)
|
||||
thd->insert_id(id); // For binary/update log
|
||||
DBUG_RETURN(test(read_info.error));
|
||||
}
|
||||
|
||||
@ -412,10 +438,12 @@ read_sep_field(THD *thd,COPY_INFO &info,TABLE *table,
|
||||
List_iterator_fast<Item> it(fields);
|
||||
Item_field *sql_field;
|
||||
uint enclosed_length;
|
||||
ulonglong id;
|
||||
DBUG_ENTER("read_sep_field");
|
||||
|
||||
enclosed_length=enclosed.length();
|
||||
|
||||
id=0;
|
||||
|
||||
for (;;it.rewind())
|
||||
{
|
||||
if (thd->killed)
|
||||
@ -468,6 +496,14 @@ read_sep_field(THD *thd,COPY_INFO &info,TABLE *table,
|
||||
}
|
||||
if (write_record(table,&info))
|
||||
DBUG_RETURN(1);
|
||||
/*
|
||||
If auto_increment values are used, save the first one
|
||||
for LAST_INSERT_ID() and for the binary/update log.
|
||||
We can't use insert_id() as we don't want to touch the
|
||||
last_insert_id_used flag.
|
||||
*/
|
||||
if (!id && thd->insert_id_used)
|
||||
id= thd->last_insert_id;
|
||||
if (table->next_number_field)
|
||||
table->next_number_field->reset(); // Clear for next record
|
||||
if (read_info.next_line()) // Skip to next line
|
||||
@ -475,6 +511,8 @@ read_sep_field(THD *thd,COPY_INFO &info,TABLE *table,
|
||||
if (read_info.line_cuted)
|
||||
thd->cuted_fields++; /* To long row */
|
||||
}
|
||||
if (id && !read_info.error)
|
||||
thd->insert_id(id); // For binary/update log
|
||||
DBUG_RETURN(test(read_info.error));
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user