maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #12642
Re: 405a89353b2: Don't reset StringBuffers in loops when not needed
Hi, Monty!
On Apr 02, Michael Widenius wrote:
> revision-id: 405a89353b2 (mariadb-10.5.2-542-g405a89353b2)
> parent(s): 2dd8d472fcc
> author: Michael Widenius <michael.widenius@xxxxxxxxx>
> committer: Michael Widenius <michael.widenius@xxxxxxxxx>
> timestamp: 2021-03-24 19:25:08 +0200
> message:
>
> Don't reset StringBuffers in loops when not needed
>
> - Moved out creating StringBuffers in loops and instead create them
> outside and just reset the buffer if it was not allocated (to avoid
> a possible malloc/free for every entry)
>
> diff --git a/sql/sql_string.h b/sql/sql_string.h
> index 29d01779b71..8df50ac5e66 100644
> --- a/sql/sql_string.h
> +++ b/sql/sql_string.h
> @@ -1045,6 +1045,12 @@ class StringBuffer : public String
> {
> length(0);
> }
> + void set_buffer_if_not_allocated(CHARSET_INFO *cs)
> + {
> + if (is_alloced())
> + Static_binary_string::set(buff, buff_sz);
it seems to be doing exactly the opposite of what the name suggests.
It sets the buffer *if allocated*.
Also, it looks logical to do length(0) here, so that this method
would reset the StringBuffer to its initial state.
> + set_charset(cs);
> + }
> };
Regards,
Sergei
VP of MariaDB Server Engineering
and security@xxxxxxxxxxx
Follow ups