1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

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
This commit is contained in:
monty@mysql.com
2005-06-28 15:06:16 +03:00
parent 46536c3a60
commit 10c4678def
5 changed files with 8 additions and 3 deletions

View File

@ -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);
}

View File

@ -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);

View File

@ -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);
}

View File

@ -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)

View File

@ -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;