mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
Merge mysql.com:/home/my/mysql-5.1
into mysql.com:/home/my/mysql-5.1-TDC
This commit is contained in:
commit
b0aecee8af
6 changed files with 10 additions and 8 deletions
|
@ -84,6 +84,7 @@ extern void bitmap_lock_xor(MY_BITMAP *map, const MY_BITMAP *map2);
|
||||||
extern void bitmap_lock_invert(MY_BITMAP *map);
|
extern void bitmap_lock_invert(MY_BITMAP *map);
|
||||||
#endif
|
#endif
|
||||||
/* Fast, not thread safe, bitmap functions */
|
/* Fast, not thread safe, bitmap functions */
|
||||||
|
#define bitmap_buffer_size(bits) 4*(((bits)+31)/32);
|
||||||
#define no_bytes_in_map(map) (((map)->n_bits + 7)/8)
|
#define no_bytes_in_map(map) (((map)->n_bits + 7)/8)
|
||||||
#define no_words_in_map(map) (((map)->n_bits + 31)/32)
|
#define no_words_in_map(map) (((map)->n_bits + 31)/32)
|
||||||
#define bytes_word_aligned(bytes) (4*((bytes + 3)/4))
|
#define bytes_word_aligned(bytes) (4*((bytes + 3)/4))
|
||||||
|
|
|
@ -1327,7 +1327,7 @@ int handler::ha_initialise()
|
||||||
|
|
||||||
int handler::ha_allocate_read_write_set(ulong no_fields)
|
int handler::ha_allocate_read_write_set(ulong no_fields)
|
||||||
{
|
{
|
||||||
uint bitmap_size= 4*(((no_fields+1)+31)/32);
|
uint bitmap_size= bitmap_buffer_size(no_fields+1);
|
||||||
uint32 *read_buf, *write_buf;
|
uint32 *read_buf, *write_buf;
|
||||||
DBUG_ENTER("ha_allocate_read_write_set");
|
DBUG_ENTER("ha_allocate_read_write_set");
|
||||||
DBUG_PRINT("enter", ("no_fields = %d", no_fields));
|
DBUG_PRINT("enter", ("no_fields = %d", no_fields));
|
||||||
|
|
|
@ -1654,11 +1654,10 @@ public:
|
||||||
static int fill_used_fields_bitmap(PARAM *param)
|
static int fill_used_fields_bitmap(PARAM *param)
|
||||||
{
|
{
|
||||||
TABLE *table= param->table;
|
TABLE *table= param->table;
|
||||||
param->fields_bitmap_size= (table->s->fields/8 + 1);
|
param->fields_bitmap_size= bitmap_buffer_size(table->s->fields+1);
|
||||||
uint32 *tmp;
|
uint32 *tmp;
|
||||||
uint pk;
|
uint pk;
|
||||||
if (!(tmp= (uint32*)alloc_root(param->mem_root,
|
if (!(tmp= (uint32*) alloc_root(param->mem_root,param->fields_bitmap_size)) ||
|
||||||
bytes_word_aligned(param->fields_bitmap_size))) ||
|
|
||||||
bitmap_init(¶m->needed_fields, tmp, param->fields_bitmap_size*8,
|
bitmap_init(¶m->needed_fields, tmp, param->fields_bitmap_size*8,
|
||||||
FALSE))
|
FALSE))
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -2417,7 +2416,7 @@ ROR_SCAN_INFO *make_ror_scan(const PARAM *param, int idx, SEL_ARG *sel_arg)
|
||||||
ror_scan->records= param->table->quick_rows[keynr];
|
ror_scan->records= param->table->quick_rows[keynr];
|
||||||
|
|
||||||
if (!(bitmap_buf= (uint32*)alloc_root(param->mem_root,
|
if (!(bitmap_buf= (uint32*)alloc_root(param->mem_root,
|
||||||
bytes_word_aligned(param->fields_bitmap_size))))
|
param->fields_bitmap_size)))
|
||||||
DBUG_RETURN(NULL);
|
DBUG_RETURN(NULL);
|
||||||
|
|
||||||
if (bitmap_init(&ror_scan->covered_fields, bitmap_buf,
|
if (bitmap_init(&ror_scan->covered_fields, bitmap_buf,
|
||||||
|
@ -2537,7 +2536,7 @@ ROR_INTERSECT_INFO* ror_intersect_init(const PARAM *param)
|
||||||
return NULL;
|
return NULL;
|
||||||
info->param= param;
|
info->param= param;
|
||||||
if (!(buf= (uint32*)alloc_root(param->mem_root,
|
if (!(buf= (uint32*)alloc_root(param->mem_root,
|
||||||
bytes_word_aligned(param->fields_bitmap_size))))
|
param->fields_bitmap_size)))
|
||||||
return NULL;
|
return NULL;
|
||||||
if (bitmap_init(&info->covered_fields, buf, param->fields_bitmap_size*8,
|
if (bitmap_init(&info->covered_fields, buf, param->fields_bitmap_size*8,
|
||||||
FALSE))
|
FALSE))
|
||||||
|
|
|
@ -700,7 +700,7 @@ static bool check_view_insertability(THD * thd, TABLE_LIST *view)
|
||||||
*trans_end= trans_start + num;
|
*trans_end= trans_start + num;
|
||||||
Field_translator *trans;
|
Field_translator *trans;
|
||||||
Field **field_ptr= table->field;
|
Field **field_ptr= table->field;
|
||||||
uint used_fields_buff_size= (table->s->fields + 7) / 8;
|
uint used_fields_buff_size= bitmap_buffer_size(table->s->fields);
|
||||||
uint32 *used_fields_buff= (uint32*)thd->alloc(used_fields_buff_size);
|
uint32 *used_fields_buff= (uint32*)thd->alloc(used_fields_buff_size);
|
||||||
MY_BITMAP used_fields;
|
MY_BITMAP used_fields;
|
||||||
DBUG_ENTER("check_key_in_view");
|
DBUG_ENTER("check_key_in_view");
|
||||||
|
@ -710,7 +710,7 @@ static bool check_view_insertability(THD * thd, TABLE_LIST *view)
|
||||||
|
|
||||||
DBUG_ASSERT(view->table != 0 && view->field_translation != 0);
|
DBUG_ASSERT(view->table != 0 && view->field_translation != 0);
|
||||||
|
|
||||||
bitmap_init(&used_fields, used_fields_buff, used_fields_buff_size * 8, 0);
|
bitmap_init(&used_fields, used_fields_buff, table->s->fields, 0);
|
||||||
bitmap_clear_all(&used_fields);
|
bitmap_clear_all(&used_fields);
|
||||||
|
|
||||||
view->contain_auto_increment= 0;
|
view->contain_auto_increment= 0;
|
||||||
|
|
|
@ -1176,6 +1176,7 @@ end_thread:
|
||||||
or this thread has been schedule to handle the next query
|
or this thread has been schedule to handle the next query
|
||||||
*/
|
*/
|
||||||
thd= current_thd;
|
thd= current_thd;
|
||||||
|
thd->thread_stack= (char*) &thd;
|
||||||
} while (!(test_flags & TEST_NO_THREADS));
|
} while (!(test_flags & TEST_NO_THREADS));
|
||||||
/* The following is only executed if we are not using --one-thread */
|
/* The following is only executed if we are not using --one-thread */
|
||||||
return(0); /* purecov: deadcode */
|
return(0); /* purecov: deadcode */
|
||||||
|
|
|
@ -446,6 +446,7 @@ void plugin_init(void)
|
||||||
}
|
}
|
||||||
init_sql_alloc(&mem, 1024, 0);
|
init_sql_alloc(&mem, 1024, 0);
|
||||||
initialized= 1;
|
initialized= 1;
|
||||||
|
new_thd->thread_stack= (char*) &tables;
|
||||||
new_thd->store_globals();
|
new_thd->store_globals();
|
||||||
new_thd->db= my_strdup("mysql", MYF(0));
|
new_thd->db= my_strdup("mysql", MYF(0));
|
||||||
new_thd->db_length= 5;
|
new_thd->db_length= 5;
|
||||||
|
|
Loading…
Reference in a new issue