mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Fixed stack overrun with some INSERT ... SELECT ... GROUP BY queries (Bug #3265)
Ensure that raid_chunks is not set to higher than 255 as this could cause problems with DROP DATABASE. (Bug #3182)
This commit is contained in:
@ -391,6 +391,7 @@ int write_record(TABLE *table,COPY_INFO *info)
|
||||
{
|
||||
int error;
|
||||
char *key=0;
|
||||
DBUG_ENTER("write_record");
|
||||
|
||||
info->records++;
|
||||
if (info->handle_duplicates == DUP_REPLACE)
|
||||
@ -474,14 +475,14 @@ int write_record(TABLE *table,COPY_INFO *info)
|
||||
info->copied++;
|
||||
if (key)
|
||||
my_safe_afree(key,table->max_unique_length,MAX_KEY_LENGTH);
|
||||
return 0;
|
||||
DBUG_RETURN(0);
|
||||
|
||||
err:
|
||||
if (key)
|
||||
my_afree(key);
|
||||
info->last_errno= error;
|
||||
table->file->print_error(error,MYF(0));
|
||||
return 1;
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
|
||||
@ -1342,24 +1343,25 @@ select_insert::~select_insert()
|
||||
|
||||
bool select_insert::send_data(List<Item> &values)
|
||||
{
|
||||
DBUG_ENTER("select_insert::send_data");
|
||||
if (thd->offset_limit)
|
||||
{ // using limit offset,count
|
||||
thd->offset_limit--;
|
||||
return 0;
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
if (fields->elements)
|
||||
fill_record(*fields, values, 1);
|
||||
else
|
||||
fill_record(table->field, values, 1);
|
||||
if (write_record(table,&info))
|
||||
return 1;
|
||||
DBUG_RETURN(1);
|
||||
if (table->next_number_field) // Clear for next record
|
||||
{
|
||||
table->next_number_field->reset();
|
||||
if (! last_insert_id && thd->insert_id_used)
|
||||
last_insert_id=thd->insert_id();
|
||||
}
|
||||
return 0;
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user