Commit 10c4678d authored by monty@mysql.com's avatar monty@mysql.com

Move reset of insert_values to ensure it's done also during error conditions

This fixed a failure of insert_update.test on some platforms
parent 46536c3a
......@@ -86,6 +86,7 @@ void init_thr_alarm(uint max_alarms)
{
struct sigaction sact;
sact.sa_flags = 0;
bzero((char*) &sact, sizeof(sact));
sact.sa_handler = thread_alarm;
sigaction(THR_CLIENT_ALARM, &sact, (struct sigaction*) 0);
}
......
......@@ -981,8 +981,7 @@ get_mm_parts(PARAM *param, COND *cond_func, Field *field,
SEL_TREE *tree2= get_mm_parts(param, cond_func,
field, Item_func::GT_FUNC,
value, cmp_type);
if (!tree2)
DBUG_RETURN(0);
/* tree_or() will return 0 if tree2 is 0 */
tree= tree_or(param,tree,tree2);
}
DBUG_RETURN(tree);
......
......@@ -979,6 +979,7 @@ TABLE *open_table(THD *thd,const char *db,const char *table_name,
if (table->timestamp_field)
table->timestamp_field_type= table->timestamp_field->get_auto_set_type();
DBUG_ASSERT(table->key_read == 0);
DBUG_ASSERT(table->insert_values == 0);
DBUG_RETURN(table);
}
......
......@@ -516,6 +516,10 @@ abort:
ON DUPLICATE KEY ...
we should be able to refer to sum1 in the ON DUPLICATE KEY part
WARNING
You MUST set table->insert_values to 0 after calling this function
before releasing the table object.
RETURN VALUE
0 OK
-1 error (message is not sent to user)
......
......@@ -2891,12 +2891,12 @@ unsent_create_error:
/* revert changes for SP */
lex->select_lex.resolve_mode= SELECT_LEX::INSERT_MODE;
delete result;
insert_table->insert_values= 0;
if (thd->net.report_error)
res= -1;
}
else
res= -1;
insert_table->insert_values= 0; // Set by mysql_prepare_insert()
first_local_table->next= tables;
lex->select_lex.table_list.first= (byte*) first_local_table;
break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment