Re: Avoid mix char with bool type in comparisons
От | Ranier Vilela |
---|---|
Тема | Re: Avoid mix char with bool type in comparisons |
Дата | |
Msg-id | CAEudQArFXKtgt5Kv8j-D34zTLCGNuNZ6wdPbRaS0nS5Qom6wnA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Avoid mix char with bool type in comparisons (Ranier Vilela <ranier.vf@gmail.com>) |
Список | pgsql-hackers |
Em sex., 7 de out. de 2022 às 15:45, Ranier Vilela <ranier.vf@gmail.com> escreveu:
Em sex., 7 de out. de 2022 às 14:44, Tom Lane <tgl@sss.pgh.pa.us> escreveu:Ranier Vilela <ranier.vf@gmail.com> writes:
> Anyway, it's not *true* that collectMatchesForHeapRow deals
> only "true" and "false", once that key->entryRes is initialized with
> GIN_FALSE not false.
Look: GinTernaryValue is carefully designed so that it is
representation-compatible with bool, including that GIN_FALSE is
identical to false and GIN_TRUE is identical to true. I'm quite
uninterested in debating whether that's a good idea or not.
Moreover, there are a ton of other places besides this one where
the GIN code relies on that equivalence, so we'd have to do a
lot more than what's in this patch if we wanted to decouple that.Just now I checked all the places where GinTernaryValue is used and they all trust using GIN_TRUE, GIN_FALSE and GIN_MAYBE.
The only problematic place I found was at ginget.c and jsonb_gin.cjsonb_gin.c:The function execute_jsp_gin_node returns GIN_TRUE if the node->type is JSP_GIN_ENTRY and the value is GIN_MAYBE.IMO, it should be GIN_FALSE?
I spend more time checking this and I think that answer is not.
So, in the patch attached it changes only ginget.c, to avoid mixing GinTernaryValue with bool.
And add comments to warn that GIN_MAYBE comparison is equal GIN_TRUE in jsonb_gin.c
I think that's all that needs to be changed at the moment.
I'm also glad there are no bugs, and IMO I hope the code has become more readable and secure.
I'm also glad there are no bugs, and IMO I hope the code has become more readable and secure.
regards,
Ranier Vilela
Вложения
В списке pgsql-hackers по дате отправления: