Hi, Vladislav!

On Jun 08, Vladislav Vaintroub wrote:
> ------------------------------------------------------------
> revno: 3426
> revision-id: [email protected]
> parent: [email protected]
> fixes bug(s): https://launchpad.net/bugs/1008334
> committer: Vladislav Vaintroub <[email protected]>
> branch nick: 5.5
> timestamp: Fri 2012-06-08 02:08:41 +0200
> message:
>   LP1008334 : Speedup specific datetime queries that got slower with 
> introduction of microseconds
>   
>   - Item::get_seconds() now skips decimal arithmetic, if decimals is 0. This 
> significantly speeds up from_unixtime() if no fractional part is passed.
>   - replace sprintfs used to format temporal values  by hand-coded formatting 

Looks ok.

Would be good to mention the ~25% speedup in the comment above
fmt_number. Like "Gives 25% speedup when converting temporal values to
strings, as compared to sprintf".

So that one wouldn't need to dig up bzr history every time.

> === modified file 'sql/item.cc'
> --- a/sql/item.cc     2012-05-21 18:54:41 +0000
> +++ b/sql/item.cc     2012-06-08 00:08:41 +0000
> @@ -1265,7 +1265,7 @@
>  
>  bool Item::get_seconds(ulonglong *sec, ulong *sec_part)
>  {
> -  if (result_type() == INT_RESULT)
> +  if (decimals == 0 || result_type() == INT_RESULT)

I'd expect that checking for decimals==0 alone should be enough.
Could you try to run the test suite with the

  DBUG_ASSERT(result_type() != INT_RESULT || decimals == 0);

please?

>    { // optimize for an important special case
>      longlong val= val_int();
>      bool neg= val < 0 && !unsigned_flag;

Regards,
Sergei

_______________________________________________
Mailing list: https://launchpad.net/~maria-developers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to