mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 23:04:20 +01:00
Merge reggie@linux:/home/reggie/work/mysql-5.1
into big_geek.:C:/Work/mysql/mysql-5.1-bug17720
This commit is contained in:
commit
3388a7632f
3 changed files with 42 additions and 1 deletions
|
@ -3736,6 +3736,7 @@ static void fix_win_paths(const char* val, int len)
|
|||
{
|
||||
const char** pattern= dynamic_element(&patterns, i, const char**);
|
||||
DBUG_PRINT("info", ("pattern: %s", *pattern));
|
||||
if (strlen(*pattern) == 0) continue;
|
||||
/* Search for the path in string */
|
||||
while ((p= strstr(val, *pattern)))
|
||||
{
|
||||
|
|
|
@ -218,6 +218,7 @@ void ha_partition::init_handler_variables()
|
|||
m_engine_array= NULL;
|
||||
m_file= NULL;
|
||||
m_reorged_file= NULL;
|
||||
m_new_file= NULL;
|
||||
m_reorged_parts= 0;
|
||||
m_added_file= NULL;
|
||||
m_tot_parts= 0;
|
||||
|
@ -4680,11 +4681,13 @@ int ha_partition::extra(enum ha_extra_function operation)
|
|||
}
|
||||
|
||||
/* Category 3), used by MyISAM handlers */
|
||||
case HA_EXTRA_PREPARE_FOR_DELETE:
|
||||
DBUG_RETURN(prepare_for_delete());
|
||||
break;
|
||||
case HA_EXTRA_NORMAL:
|
||||
case HA_EXTRA_QUICK:
|
||||
case HA_EXTRA_NO_READCHECK:
|
||||
case HA_EXTRA_PREPARE_FOR_UPDATE:
|
||||
case HA_EXTRA_PREPARE_FOR_DELETE:
|
||||
case HA_EXTRA_FORCE_REOPEN:
|
||||
case HA_EXTRA_FLUSH_CACHE:
|
||||
{
|
||||
|
@ -4793,6 +4796,41 @@ void ha_partition::prepare_extra_cache(uint cachesize)
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
Prepares our new and reorged handlers for rename or delete
|
||||
|
||||
SYNOPSIS
|
||||
prepare_for_delete()
|
||||
|
||||
RETURN VALUE
|
||||
>0 Error code
|
||||
0 Success
|
||||
*/
|
||||
|
||||
int ha_partition::prepare_for_delete()
|
||||
{
|
||||
int result= 0, tmp;
|
||||
handler **file;
|
||||
DBUG_ENTER("ha_partition::prepare_for_delete()");
|
||||
|
||||
if (m_new_file != NULL)
|
||||
{
|
||||
for (file= m_new_file; *file; file++)
|
||||
if ((tmp= (*file)->extra(HA_EXTRA_PREPARE_FOR_DELETE)))
|
||||
result= tmp;
|
||||
for (file= m_reorged_file; *file; file++)
|
||||
if ((tmp= (*file)->extra(HA_EXTRA_PREPARE_FOR_DELETE)))
|
||||
result= tmp;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (file= m_file; *file; file++)
|
||||
if ((tmp= (*file)->extra(HA_EXTRA_PREPARE_FOR_DELETE)))
|
||||
result= tmp;
|
||||
}
|
||||
DBUG_RETURN(result);
|
||||
}
|
||||
|
||||
/*
|
||||
Call extra on all partitions
|
||||
|
||||
|
@ -4810,6 +4848,7 @@ int ha_partition::loop_extra(enum ha_extra_function operation)
|
|||
int result= 0, tmp;
|
||||
handler **file;
|
||||
DBUG_ENTER("ha_partition::loop_extra()");
|
||||
|
||||
/*
|
||||
TODO, 5.2: this is where you could possibly add optimisations to add the bitmap
|
||||
_if_ a SELECT.
|
||||
|
|
|
@ -197,6 +197,7 @@ public:
|
|||
DBUG_RETURN(0);
|
||||
}
|
||||
private:
|
||||
int prepare_for_delete();
|
||||
int copy_partitions(ulonglong *copied, ulonglong *deleted);
|
||||
void cleanup_new_partition(uint part_count);
|
||||
int prepare_new_partition(TABLE *table, HA_CREATE_INFO *create_info,
|
||||
|
|
Loading…
Add table
Reference in a new issue