1
0
mirror of https://github.com/postgres/postgres.git synced 2025-04-20 00:42:27 +03:00
postgres/contrib/btree_gist/btree_gist.c
Peter Eisentraut 119fc30dd5 Move CompareType to separate header file
We'll want to make use of it in more places, and we'd prefer to not
have to include all of primnodes.h everywhere.

Author: Mark Dilger <mark.dilger@enterprisedb.com>
Reviewed-by: Peter Eisentraut <peter@eisentraut.org>
Discussion: https://www.postgresql.org/message-id/flat/E72EAA49-354D-4C2E-8EB9-255197F55330@enterprisedb.com
2025-02-02 08:11:57 +01:00

82 lines
1.7 KiB
C

/*
* contrib/btree_gist/btree_gist.c
*/
#include "postgres.h"
#include "access/cmptype.h"
#include "access/stratnum.h"
#include "utils/builtins.h"
PG_MODULE_MAGIC;
PG_FUNCTION_INFO_V1(gbt_decompress);
PG_FUNCTION_INFO_V1(gbtreekey_in);
PG_FUNCTION_INFO_V1(gbtreekey_out);
PG_FUNCTION_INFO_V1(gist_stratnum_btree);
/**************************************************
* In/Out for keys
**************************************************/
Datum
gbtreekey_in(PG_FUNCTION_ARGS)
{
Oid typioparam = PG_GETARG_OID(1);
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("cannot accept a value of type %s",
format_type_extended(typioparam, -1,
FORMAT_TYPE_ALLOW_INVALID))));
PG_RETURN_VOID(); /* keep compiler quiet */
}
Datum
gbtreekey_out(PG_FUNCTION_ARGS)
{
/* Sadly, we do not receive any indication of the specific type */
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("cannot display a value of type %s", "gbtreekey?")));
PG_RETURN_VOID(); /* keep compiler quiet */
}
/*
** GiST DeCompress methods
** do not do anything.
*/
Datum
gbt_decompress(PG_FUNCTION_ARGS)
{
PG_RETURN_POINTER(PG_GETARG_POINTER(0));
}
/*
* Returns the btree number for supported operators, otherwise invalid.
*/
Datum
gist_stratnum_btree(PG_FUNCTION_ARGS)
{
CompareType cmptype = PG_GETARG_INT32(0);
switch (cmptype)
{
case COMPARE_EQ:
PG_RETURN_UINT16(BTEqualStrategyNumber);
case COMPARE_LT:
PG_RETURN_UINT16(BTLessStrategyNumber);
case COMPARE_LE:
PG_RETURN_UINT16(BTLessEqualStrategyNumber);
case COMPARE_GT:
PG_RETURN_UINT16(BTGreaterStrategyNumber);
case COMPARE_GE:
PG_RETURN_UINT16(BTGreaterEqualStrategyNumber);
default:
PG_RETURN_UINT16(InvalidStrategy);
}
}