List:Commits« Previous MessageNext Message »
From:Konstantin Osipov Date:February 8 2008 11:32am
Subject:Re: bk commit into 5.0 tree (davi:1.2570) BUG#33798
View as plain text  
* Davi Arnaut <davi@stripped> [08/02/08 14:00]:

> ChangeSet@stripped, 2008-02-08 08:55:55-02:00, davi@stripped +5 -0
>   Bug#33798 prepared statements improperly handle large unsigned ints
>   
>   The unsignedness of large integer user variables was not being
>   properly preserved when feeded to prepared statements. This was
>   happening because the unsigned flags wasn't being updated when
>   converting the user variable is converted to a parameter.
>   
>   The solution is to copy the unsigned flag when converting the
>   user variable to a parameter and take the unsigned flag into
>   account when converting the integer to a string.

The patch is OK to push, see one item below.

> --- a/sql/item.cc	2008-01-11 15:57:33 -02:00
> +++ b/sql/item.cc	2008-02-08 08:55:54 -02:00
> @@ -2580,6 +2580,7 @@ bool Item_param::set_from_user_var(THD *
>    if (entry && entry->value)
>    {
>      item_result_type= entry->type;
> +    unsigned_flag= entry->unsigned_flag;

That assignment should be enough -- set() does not truncate
anything anyway.
>      if (strict_type && required_result_type != item_result_type)
>        DBUG_RETURN(1);
>      switch (item_result_type) {
> @@ -2875,7 +2876,10 @@ const String *Item_param::query_val_str(
>  {
>    switch (state) {
>    case INT_VALUE:
> -    str->set(value.integer, &my_charset_bin);
> +    if (unsigned_flag)
> +      str->set((ulonglong) value.integer, &my_charset_bin);
> +    else
> +      str->set(value.integer, &my_charset_bin);

In other words, this change does not seem to be necessary.

-- 
-- Konstantin Osipov              Software Developer, Moscow, Russia
-- MySQL AB, www.mysql.com   The best DATABASE COMPANY in the GALAXY
Thread
bk commit into 5.0 tree (davi:1.2570) BUG#33798Davi Arnaut8 Feb
  • Re: bk commit into 5.0 tree (davi:1.2570) BUG#33798Konstantin Osipov8 Feb
    • Re: bk commit into 5.0 tree (davi:1.2570) BUG#33798Davi Arnaut8 Feb
      • Re: bk commit into 5.0 tree (davi:1.2570) BUG#33798Konstantin Osipov8 Feb