34 #define SizeForSortShimExtra(nargs) (offsetof(SortShimExtra, fcinfo) + SizeForFunctionCallInfo(nargs)) 97 Oid sortSupportFunction;
119 elog(
ERROR,
"missing support function %d(%u,%u) in opfamily %u",
146 elog(
ERROR,
"operator %u is not a valid ordering operator",
170 if (indexRel->
rd_rel->relam != BTREE_AM_OID)
174 elog(
ERROR,
"unexpected sort support strategy: %d", strategy);
193 Oid sortSupportFunction;
197 if (indexRel->
rd_rel->relam != GIST_AM_OID)
208 elog(
ERROR,
"missing support function %d(%u,%u) in opfamily %u",
#define BTGreaterStrategyNumber
#define BTSORTSUPPORT_PROC
void PrepareSortSupportComparisonShim(Oid cmpFunc, SortSupport ssup)
#define PointerGetDatum(X)
#define GIST_SORTSUPPORT_PROC
void PrepareSortSupportFromOrderingOp(Oid orderingOp, SortSupport ssup)
#define OidIsValid(objectId)
#define SizeForSortShimExtra(nargs)
void PrepareSortSupportFromGistIndexRel(Relation indexRel, SortSupport ssup)
NullableDatum args[FLEXIBLE_ARRAY_MEMBER]
#define OidFunctionCall1(functionId, arg1)
int(* comparator)(Datum x, Datum y, SortSupport ssup)
#define FunctionCallInvoke(fcinfo)
void PrepareSortSupportFromIndexRel(Relation indexRel, int16 strategy, SortSupport ssup)
void fmgr_info_cxt(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt)
static int comparison_shim(Datum x, Datum y, SortSupport ssup)
static void FinishSortSupportFunction(Oid opfamily, Oid opcintype, SortSupport ssup)
#define Assert(condition)
Oid get_opfamily_proc(Oid opfamily, Oid lefttype, Oid righttype, int16 procnum)
bool get_ordering_op_properties(Oid opno, Oid *opfamily, Oid *opcintype, int16 *strategy)
#define InitFunctionCallInfoData(Fcinfo, Flinfo, Nargs, Collation, Context, Resultinfo)
void * MemoryContextAlloc(MemoryContext context, Size size)
#define BTLessStrategyNumber