summaryrefslogtreecommitdiffstats
path: root/src/backend/access/tablesample/tablesample.c
blob: 02f2a95e84f17c3b33e2eaf44dad98701f519d31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*-------------------------------------------------------------------------
 *
 * tablesample.c
 *		  Support functions for TABLESAMPLE feature
 *
 * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
 * Portions Copyright (c) 1994, Regents of the University of California
 *
 *
 * IDENTIFICATION
 *		  src/backend/access/tablesample/tablesample.c
 *
 * -------------------------------------------------------------------------
 */

#include "postgres.h"

#include "access/tsmapi.h"


/*
 * GetTsmRoutine --- get a TsmRoutine struct by invoking the handler.
 *
 * This is a convenience routine that's just meant to check for errors.
 */
TsmRoutine *
GetTsmRoutine(Oid tsmhandler)
{
	Datum		datum;
	TsmRoutine *routine;

	datum = OidFunctionCall1(tsmhandler, PointerGetDatum(NULL));
	routine = (TsmRoutine *) DatumGetPointer(datum);

	if (routine == NULL || !IsA(routine, TsmRoutine))
		elog(ERROR, "tablesample handler function %u did not return a TsmRoutine struct",
			 tsmhandler);

	return routine;
}