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-2025, 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 */
27GetTsmRoutine(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:225
#define OidFunctionCall1(functionId, arg1)
Definition: fmgr.h:679
#define IsA(nodeptr, _type_)
Definition: nodes.h:160
static Datum PointerGetDatum(const void *X)
Definition: postgres.h:327
uintptr_t Datum
Definition: postgres.h:69
static Pointer DatumGetPointer(Datum X)
Definition: postgres.h:317
unsigned int Oid
Definition: postgres_ext.h:32
TsmRoutine * GetTsmRoutine(Oid tsmhandler)
Definition: tablesample.c:27