diff options
Diffstat (limited to 'contrib/btree_gin/btree_gin.c')
-rw-r--r-- | contrib/btree_gin/btree_gin.c | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/contrib/btree_gin/btree_gin.c b/contrib/btree_gin/btree_gin.c index 2473f79ca19..a660681e581 100644 --- a/contrib/btree_gin/btree_gin.c +++ b/contrib/btree_gin/btree_gin.c @@ -14,6 +14,7 @@ #include "utils/numeric.h" #include "utils/timestamp.h" #include "utils/varbit.h" +#include "utils/uuid.h" PG_MODULE_MAGIC; @@ -350,6 +351,8 @@ leftmostvalue_text(void) GIN_SUPPORT(text, true, leftmostvalue_text, bttextcmp) +GIN_SUPPORT(bpchar, true, leftmostvalue_text, bpcharcmp) + static Datum leftmostvalue_char(void) { @@ -437,7 +440,6 @@ GIN_SUPPORT(numeric, true, leftmostvalue_numeric, gin_numeric_cmp) * routines it needs it, so we can't use DirectFunctionCall2. */ - #define ENUM_IS_LEFTMOST(x) ((x) == InvalidOid) PG_FUNCTION_INFO_V1(gin_enum_cmp); @@ -477,3 +479,30 @@ leftmostvalue_enum(void) } GIN_SUPPORT(anyenum, false, leftmostvalue_enum, gin_enum_cmp) + +static Datum +leftmostvalue_uuid(void) +{ + /* palloc0 will create the UUID with all zeroes: "00000000-0000-0000-0000-000000000000" */ + pg_uuid_t *retval = (pg_uuid_t *) palloc0(sizeof(pg_uuid_t)); + return UUIDPGetDatum(retval); +} + +GIN_SUPPORT(uuid, false, leftmostvalue_uuid, uuid_cmp) + +static Datum +leftmostvalue_name(void) +{ + NameData* result = (NameData *) palloc0(NAMEDATALEN); + return NameGetDatum(result); +} + +GIN_SUPPORT(name, false, leftmostvalue_name, btnamecmp) + +static Datum +leftmostvalue_bool(void) +{ + return BoolGetDatum(false); +} + +GIN_SUPPORT(bool, false, leftmostvalue_bool, btboolcmp) |