Re: [PATCH] Combine same ternary types in GIN and TSearch
От | Heikki Linnakangas |
---|---|
Тема | Re: [PATCH] Combine same ternary types in GIN and TSearch |
Дата | |
Msg-id | 8384f00f-3013-9320-3158-6a59389e8640@iki.fi обсуждение исходный текст |
Ответ на | [PATCH] Combine same ternary types in GIN and TSearch (Pavel Borisov <pashkin.elfe@gmail.com>) |
Ответы |
Re: [PATCH] Combine same ternary types in GIN and TSearch
Re: [PATCH] Combine same ternary types in GIN and TSearch |
Список | pgsql-hackers |
On 13/11/2020 11:04, Pavel Borisov wrote: > Hi, hackers! > > For historical reasons, now we have two differently named but similar > ternary data types in TSearch and Gin text-related types. Before v13 > there was also Gin's private TS_execute() version, from which we > eventually shifted to Tsearch's TS_execute(). > > To make things more even and beautiful I've made a minor refactor to > combine two left ternary types into one. > > <gin.h> > typedef char GinTernaryValue > #define GIN_FALSE 0 > #define GIN_TRUE 1 > #define GIN_MAYBE 2 > > <ts_utils.h> > typedef enum { TS_NO, TS_YES, TS_MAYBE } TSTernaryValue; > > The change is simple and most of it is just the text replacement. The > only thing worth noting is that some code does pointer cast between > *bool and *TernaryValue so the size of them should coincide. > (Declaration done in /char/ type because simple enum on most > architectures will be of /int/ size). There is no actual change in the > code despite the order of header files inclusion in some modules. > > What do you think about this? GIN is not just for full-text search, so using TSTernaryValue in GinScanKeyData is wrong. And it would break existing extensions. I didn't look much further than that, but I've got a feeling that combining those is a bad idea. TSTernaryValue is used in text-search code, even when there is no GIN involved. It's a separate concept, even though it happens to have the same values. - Heikki
В списке pgsql-hackers по дате отправления: