1 /*------------------------------------------------------------------------- 2 * 3 * tablesample.c 4 * Support functions for TABLESAMPLE feature 5 * 6 * Portions Copyright (c) 1996-2017, 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 * GetTsmRoutine(Oid tsmhandler)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 } 41