diff options
-rw-r--r-- | myisam/rt_split.c | 20 | ||||
-rw-r--r-- | ndb/src/ndbapi/Ndb.cpp | 3 | ||||
-rw-r--r-- | sql/field_conv.cc | 6 | ||||
-rw-r--r-- | sql/item_sum.cc | 9 | ||||
-rw-r--r-- | sql/sql_delete.cc | 2 | ||||
-rw-r--r-- | sql/sql_parse.cc | 2 | ||||
-rw-r--r-- | sql/sql_select.cc | 4 | ||||
-rw-r--r-- | strings/my_vsnprintf.c | 10 |
8 files changed, 33 insertions, 23 deletions
diff --git a/myisam/rt_split.c b/myisam/rt_split.c index 005e86805bb..31a7d09ab4f 100644 --- a/myisam/rt_split.c +++ b/myisam/rt_split.c @@ -257,18 +257,17 @@ int rtree_split_page(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page, uchar *key, int n_dim; uchar *source_cur, *cur1, *cur2; uchar *new_page; - int err_code = 0; - - uint nod_flag = mi_test_if_nod(page); - uint full_length = key_length + (nod_flag ? nod_flag : - info->s->base.rec_reflength); - - int max_keys = (mi_getint(page)-2) / (full_length); + int err_code= 0; + uint nod_flag= mi_test_if_nod(page); + uint full_length= key_length + (nod_flag ? nod_flag : + info->s->base.rec_reflength); + int max_keys= (mi_getint(page)-2) / (full_length); n_dim = keyinfo->keysegs / 2; - if (!(coord_buf= my_alloca(n_dim * 2 * sizeof(double) * (max_keys + 1 + 4) + - sizeof(SplitStruct) * (max_keys + 1)))) + if (!(coord_buf= (double*) my_alloca(n_dim * 2 * sizeof(double) * + (max_keys + 1 + 4) + + sizeof(SplitStruct) * (max_keys + 1)))) return -1; task= (SplitStruct *)(coord_buf + n_dim * 2 * (max_keys + 1 + 4)); @@ -311,8 +310,7 @@ int rtree_split_page(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page, uchar *key, cur1 = rt_PAGE_FIRST_KEY(page, nod_flag); cur2 = rt_PAGE_FIRST_KEY(new_page, nod_flag); - n1 = 0; - n2 = 0; + n1= n2 = 0; for (cur = task; cur < stop; ++cur) { uchar *to; diff --git a/ndb/src/ndbapi/Ndb.cpp b/ndb/src/ndbapi/Ndb.cpp index 5b1a33ce68f..c48e70f1d51 100644 --- a/ndb/src/ndbapi/Ndb.cpp +++ b/ndb/src/ndbapi/Ndb.cpp @@ -230,9 +230,10 @@ Remark: Disconnect all connections to the database. void Ndb::doDisconnect() { - DBUG_ENTER("Ndb::doDisconnect"); NdbTransaction* tNdbCon; CHECK_STATUS_MACRO_VOID; + /* DBUG_ENTER must be after CHECK_STATUS_MACRO_VOID because of 'return' */ + DBUG_ENTER("Ndb::doDisconnect"); Uint32 tNoOfDbNodes = theImpl->theNoOfDBnodes; Uint8 *theDBnodes= theImpl->theDBnodes; diff --git a/sql/field_conv.cc b/sql/field_conv.cc index ae784ae0293..15598e59bb9 100644 --- a/sql/field_conv.cc +++ b/sql/field_conv.cc @@ -605,7 +605,11 @@ void field_conv(Field *to,Field *from) to->type() != FIELD_TYPE_DATE && to->type() != FIELD_TYPE_DATETIME)) { // Identical fields - memcpy(to->ptr,from->ptr,to->pack_length()); +#ifdef HAVE_purify + /* This may happen if one does 'UPDATE ... SET x=x' */ + if (to->ptr != from->ptr) +#endif + memcpy(to->ptr,from->ptr,to->pack_length()); return; } } diff --git a/sql/item_sum.cc b/sql/item_sum.cc index a5694189976..85abb09531b 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -584,13 +584,8 @@ bool Item_sum_distinct::setup(THD *thd) { List<create_field> field_list; create_field field_def; /* field definition */ - DBUG_ENTER("Item_sum_distinct::setup"); - - /* - Setup can be called twice for ROLLUP items. This is a bug. - Please add DBUG_ASSERT(tree == 0) here when it's fixed. - */ + DBUG_ASSERT(tree == 0); /* Virtual table and the tree are created anew on each re-execution of @@ -610,7 +605,7 @@ bool Item_sum_distinct::setup(THD *thd) args[0]->unsigned_flag); if (! (table= create_virtual_tmp_table(thd, field_list))) - return TRUE; + return TRUE; /* XXX: check that the case of CHAR(0) works OK */ tree_key_length= table->s->reclength - table->s->null_bytes; diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index cded9e2a13e..ca7bf174abf 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -48,7 +48,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, { my_error(ER_VIEW_DELETE_MERGE_VIEW, MYF(0), table_list->view_db.str, table_list->view_name.str); - DBUG_RETURN(-1); + DBUG_RETURN(TRUE); } table->file->info(HA_STATUS_VARIABLE | HA_STATUS_NO_LOCK); thd->proc_info="init"; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index ebbf2d175e6..0e8f7746f0f 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1270,8 +1270,10 @@ void free_items(Item *item) void cleanup_items(Item *item) { + DBUG_ENTER("cleanup_items"); for (; item ; item=item->next) item->cleanup(); + DBUG_VOID_RETURN; } int mysql_table_dump(THD* thd, char* db, char* tbl_name, int fd) diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 99373276410..71414f8cc76 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -12655,8 +12655,10 @@ static bool setup_sum_funcs(THD *thd, Item_sum **func_ptr) Item_sum *func; DBUG_ENTER("setup_sum_funcs"); while ((func= *(func_ptr++))) + { if (func->setup(thd)) DBUG_RETURN(TRUE); + } DBUG_RETURN(FALSE); } @@ -12943,8 +12945,6 @@ bool JOIN::rollup_make_fields(List<Item> &fields_arg, List<Item> &sel_fields, */ item= item->copy_or_same(thd); ((Item_sum*) item)->make_unique(); - if (((Item_sum*) item)->setup(thd)) - return 1; *(*func)= (Item_sum*) item; (*func)++; } diff --git a/strings/my_vsnprintf.c b/strings/my_vsnprintf.c index 4d7c17e977c..935cc2d380d 100644 --- a/strings/my_vsnprintf.c +++ b/strings/my_vsnprintf.c @@ -135,6 +135,16 @@ int my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap) to+= res_length; continue; } + else if (*fmt == 'c') /* Character parameter */ + { + register int larg; + if (to == end) + break; + larg = va_arg(ap, int); + *to++= (char) larg; + continue; + } + /* We come here on '%%', unknown code or too long parameter */ if (to == end) break; |