Commit d48cea15 authored by Mikael Ronstrom's avatar Mikael Ronstrom

Workaround for DTrace-related bugs.

Bumped up version number to 0.2.1
parent 8ea8ab63
...@@ -1401,7 +1401,7 @@ set_solaris_configs() ...@@ -1401,7 +1401,7 @@ set_solaris_configs()
compiler_flags="$compiler_flags -xregs=frameptr" compiler_flags="$compiler_flags -xregs=frameptr"
compiler_flags="$compiler_flags -xO4" compiler_flags="$compiler_flags -xO4"
elif test "x$fast_flag" = "xgeneric" ; then elif test "x$fast_flag" = "xgeneric" ; then
compiler_flags="$compiler_flags -xO3" compiler_flags="$compiler_flags -xO2"
else else
compiler_flags="$compiler_flags -xO" compiler_flags="$compiler_flags -xO"
fi fi
......
...@@ -10,7 +10,7 @@ AC_CANONICAL_SYSTEM ...@@ -10,7 +10,7 @@ AC_CANONICAL_SYSTEM
# #
# When changing major version number please also check switch statement # When changing major version number please also check switch statement
# in mysqlbinlog::check_master_version(). # in mysqlbinlog::check_master_version().
AM_INIT_AUTOMAKE(mysql, 5.1.31-pv-0.2.0) AM_INIT_AUTOMAKE(mysql, 5.1.31-pv-0.2.1)
AM_CONFIG_HEADER([include/config.h:config.h.in]) AM_CONFIG_HEADER([include/config.h:config.h.in])
PROTOCOL_VERSION=10 PROTOCOL_VERSION=10
......
...@@ -1226,7 +1226,8 @@ bool mysql_multi_update(THD *thd, TABLE_LIST *table_list, ...@@ -1226,7 +1226,8 @@ bool mysql_multi_update(THD *thd, TABLE_LIST *table_list,
List<Item> *fields, List<Item> *values, List<Item> *fields, List<Item> *values,
COND *conds, ulonglong options, COND *conds, ulonglong options,
enum enum_duplicates handle_duplicates, bool ignore, enum enum_duplicates handle_duplicates, bool ignore,
SELECT_LEX_UNIT *unit, SELECT_LEX *select_lex); SELECT_LEX_UNIT *unit, SELECT_LEX *select_lex,
multi_update **result);
bool mysql_prepare_insert(THD *thd, TABLE_LIST *table_list, TABLE *table, bool mysql_prepare_insert(THD *thd, TABLE_LIST *table_list, TABLE *table,
List<Item> &fields, List_item *values, List<Item> &fields, List_item *values,
List<Item> &update_fields, List<Item> &update_fields,
......
...@@ -3046,13 +3046,31 @@ mysql_execute_command(THD *thd) ...@@ -3046,13 +3046,31 @@ mysql_execute_command(THD *thd)
#ifdef HAVE_REPLICATION #ifdef HAVE_REPLICATION
} /* unlikely */ } /* unlikely */
#endif #endif
{
multi_update *result_obj;
MYSQL_MULTI_UPDATE_START(thd->query); MYSQL_MULTI_UPDATE_START(thd->query);
res= mysql_multi_update(thd, all_tables, res= mysql_multi_update(thd, all_tables,
&select_lex->item_list, &select_lex->item_list,
&lex->value_list, &lex->value_list,
select_lex->where, select_lex->where,
select_lex->options, select_lex->options,
lex->duplicates, lex->ignore, unit, select_lex); lex->duplicates,
lex->ignore,
unit,
select_lex,
&result_obj);
if (result_obj)
{
MYSQL_MULTI_UPDATE_DONE(res, result_obj->num_found(),
result_obj->num_updated());
res= FALSE; /* Ignore errors here */
delete result_obj;
}
else
{
MYSQL_MULTI_UPDATE_DONE(1, 0, 0);
}
}
break; break;
} }
case SQLCOM_REPLACE: case SQLCOM_REPLACE:
......
...@@ -1193,19 +1193,20 @@ bool mysql_multi_update(THD *thd, ...@@ -1193,19 +1193,20 @@ bool mysql_multi_update(THD *thd,
List<Item> *values, List<Item> *values,
COND *conds, COND *conds,
ulonglong options, ulonglong options,
enum enum_duplicates handle_duplicates, bool ignore, enum enum_duplicates handle_duplicates,
SELECT_LEX_UNIT *unit, SELECT_LEX *select_lex) bool ignore,
SELECT_LEX_UNIT *unit,
SELECT_LEX *select_lex,
multi_update **result)
{ {
multi_update *result;
bool res; bool res;
DBUG_ENTER("mysql_multi_update"); DBUG_ENTER("mysql_multi_update");
if (!(result= new multi_update(table_list, if (!(*result= new multi_update(table_list,
thd->lex->select_lex.leaf_tables, thd->lex->select_lex.leaf_tables,
fields, values, fields, values,
handle_duplicates, ignore))) handle_duplicates, ignore)))
{ {
MYSQL_MULTI_UPDATE_DONE(1, 0, 0);
DBUG_RETURN(TRUE); DBUG_RETURN(TRUE);
} }
...@@ -1221,20 +1222,18 @@ bool mysql_multi_update(THD *thd, ...@@ -1221,20 +1222,18 @@ bool mysql_multi_update(THD *thd,
(ORDER *)NULL, (ORDER *)NULL,
options | SELECT_NO_JOIN_CACHE | SELECT_NO_UNLOCK | options | SELECT_NO_JOIN_CACHE | SELECT_NO_UNLOCK |
OPTION_SETUP_TABLES_DONE, OPTION_SETUP_TABLES_DONE,
result, unit, select_lex); *result, unit, select_lex);
DBUG_PRINT("info",("res: %d report_error: %d", res, DBUG_PRINT("info",("res: %d report_error: %d", res,
(int) thd->is_error())); (int) thd->is_error()));
res|= thd->is_error(); res|= thd->is_error();
if (unlikely(res)) if (unlikely(res))
{ {
/* If we had a another error reported earlier then this will be ignored */ /* If we had a another error reported earlier then this will be ignored */
result->send_error(ER_UNKNOWN_ERROR, ER(ER_UNKNOWN_ERROR)); (*result)->send_error(ER_UNKNOWN_ERROR, ER(ER_UNKNOWN_ERROR));
result->abort(); (*result)->abort();
} }
MYSQL_MULTI_UPDATE_DONE(res, result->num_found(), result->num_updated());
delete result;
thd->abort_on_warning= 0; thd->abort_on_warning= 0;
DBUG_RETURN(FALSE); DBUG_RETURN(res);
} }
......
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