PostgreSQL Source Code  git master
tablesample.c
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2  *
3  * tablesample.c
4  * Support functions for TABLESAMPLE feature
5  *
6  * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
7  * Portions Copyright (c) 1994, Regents of the University of California
8  *
9  *
10  * IDENTIFICATION
11  * src/backend/access/tablesample/tablesample.c
12  *
13  * -------------------------------------------------------------------------
14  */
15 
16 #include "postgres.h"
17 
18 #include "access/tsmapi.h"
19 
20 
21 /*
22  * GetTsmRoutine --- get a TsmRoutine struct by invoking the handler.
23  *
24  * This is a convenience routine that's just meant to check for errors.
25  */
26 TsmRoutine *
27 GetTsmRoutine(Oid tsmhandler)
28 {
29  Datum datum;
30  TsmRoutine *routine;
31 
32  datum = OidFunctionCall1(tsmhandler, PointerGetDatum(NULL));
33  routine = (TsmRoutine *) DatumGetPointer(datum);
34 
35  if (routine == NULL || !IsA(routine, TsmRoutine))
36  elog(ERROR, "tablesample handler function %u did not return a TsmRoutine struct",
37  tsmhandler);
38 
39  return routine;
40 }
#define ERROR
Definition: elog.h:39
#define elog(elevel,...)
Definition: elog.h:224
#define OidFunctionCall1(functionId, arg1)
Definition: fmgr.h:680
#define IsA(nodeptr, _type_)
Definition: nodes.h:158
static Datum PointerGetDatum(const void *X)
Definition: postgres.h:322
uintptr_t Datum
Definition: postgres.h:64
static Pointer DatumGetPointer(Datum X)
Definition: postgres.h:312
unsigned int Oid
Definition: postgres_ext.h:31
TsmRoutine * GetTsmRoutine(Oid tsmhandler)
Definition: tablesample.c:27