Re: BUG #17950: Incorrect memory access in gtsvector_picksplit()

Поиск
Список
Период
Сортировка
От Alexander Lakhin
Тема Re: BUG #17950: Incorrect memory access in gtsvector_picksplit()
Дата
Msg-id 81a75261-2dec-53f6-40f9-5d3ed13f42ee@gmail.com
обсуждение исходный текст
Ответ на Re: BUG #17950: Incorrect memory access in gtsvector_picksplit()  (Michael Paquier <michael@paquier.xyz>)
Ответы Re: BUG #17950: Incorrect memory access in gtsvector_picksplit()  (Michael Paquier <michael@paquier.xyz>)
Список pgsql-bugs
Hi Mchael,

Thank you for committing the fix!

04.09.2023 09:35, Michael Paquier wrote:
> Regarding the changes in gtsvectorout(), the output produced is indeed
> confusing when ISALLTRUE is set.
>
> -        int            siglen = GETSIGLEN(key);
> -        int            cnttrue = (ISALLTRUE(key)) ? SIGLENBIT(siglen) : sizebitvec(GETSIGN(key), siglen);
> +        if (ISALLTRUE(key))
> +            sprintf(outbuf, "all true bits");
> +        else
> +        {
> +            int            siglen = GETSIGLEN(key);
> +            int            cnttrue = (ISALLTRUE(key)) ? SIGLENBIT(siglen) : sizebitvec(GETSIGN(key), siglen);
>   
> -        sprintf(outbuf, SINGOUTSTR, cnttrue, (int) SIGLENBIT(siglen) - cnttrue);
> +            sprintf(outbuf, SINGOUTSTR, cnttrue, (int) SIGLENBIT(siglen) - cnttrue);
> +        }
>
> In the false branch of ISALLTRUE(key), why isn't cnttrue always
> calculated with sizebitvec()?

Yes, that expression should be simpler there. Please look at the v2 attached.

> It's also not something I would
> backpatch.  That's confusing, for sure, but there is also the argument
> of keeping a consistent output in the stable branches.

I agree. Let's not backpatch it.

Best regards,
Alexander
Вложения

В списке pgsql-bugs по дате отправления:

Предыдущее
От: PG Bug reporting form
Дата:
Сообщение: BUG #18081: Spurious "function with OID ###### does not exist" error
Следующее
От: PG Bug reporting form
Дата:
Сообщение: BUG #18082: coredump during initdb