Re: [PATCH] Combine same ternary types in GIN and TSearch - Mailing list pgsql-hackers

From Heikki Linnakangas
Subject Re: [PATCH] Combine same ternary types in GIN and TSearch
Date
Msg-id 8384f00f-3013-9320-3158-6a59389e8640@iki.fi
Whole thread Raw
In response to [PATCH] Combine same ternary types in GIN and TSearch  (Pavel Borisov <pashkin.elfe@gmail.com>)
Responses Re: [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  (Tom Lane <tgl@sss.pgh.pa.us>)
List 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 by date:

Previous
From: Georgios
Date:
Subject: Re: Supporting = operator in gin/gist_trgm_ops
Next
From: Bharath Rupireddy
Date:
Subject: Re: Multi Inserts in CREATE TABLE AS - revived patch