From 57e3c5160b24e61758f817feb7aac152cd695c6f Mon Sep 17 00:00:00 2001 From: Tomas Vondra Date: Sat, 6 Nov 2021 17:00:43 +0100 Subject: Add bool GiST opclass to btree_gist Adds bool opclass to btree_gist extension, to allow creating GiST indexes on bool columns. GiST indexes on a single bool column don't seem particularly useful, but this allows defining exclusion constraings involving a bool column, for example. Author: Emre Hasegeli Reviewed-by: Andrey Borodin Discussion: https://postgr.es/m/CAE2gYzyDKJBZngssR84VGZEN=Ux=V9FV23QfPgo+7-yYnKKg4g@mail.gmail.com --- contrib/btree_gist/btree_utils_num.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'contrib/btree_gist/btree_utils_num.c') diff --git a/contrib/btree_gist/btree_utils_num.c b/contrib/btree_gist/btree_utils_num.c index 7564a403c7d..5632ee0586c 100644 --- a/contrib/btree_gist/btree_utils_num.c +++ b/contrib/btree_gist/btree_utils_num.c @@ -19,6 +19,7 @@ gbt_num_compress(GISTENTRY *entry, const gbtree_ninfo *tinfo) { union { + bool bo; int16 i2; int32 i4; int64 i8; @@ -35,6 +36,10 @@ gbt_num_compress(GISTENTRY *entry, const gbtree_ninfo *tinfo) switch (tinfo->t) { + case gbt_t_bool: + v.bo = DatumGetBool(entry->key); + leaf = &v.bo; + break; case gbt_t_int2: v.i2 = DatumGetInt16(entry->key); leaf = &v.i2; @@ -113,6 +118,9 @@ gbt_num_fetch(GISTENTRY *entry, const gbtree_ninfo *tinfo) */ switch (tinfo->t) { + case gbt_t_bool: + datum = BoolGetDatum(*(bool *) entry->key); + break; case gbt_t_int2: datum = Int16GetDatum(*(int16 *) entry->key); break; -- cgit v1.2.3