Commit 2d3d9773 authored by unknown's avatar unknown

Merge mysql.com:/home/my/mysql-5.1

into  mysql.com:/home/my/mysql-5.1-TDC


sql/handler.cc:
  Auto merged
sql/opt_range.cc:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
parents 7f10ea43 0db7a010
...@@ -84,6 +84,7 @@ extern void bitmap_lock_xor(MY_BITMAP *map, const MY_BITMAP *map2); ...@@ -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() ...@@ -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: ...@@ -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(&param->needed_fields, tmp, param->fields_bitmap_size*8, bitmap_init(&param->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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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: ...@@ -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) ...@@ -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;
......
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