Line data Source code
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 1228 : GetTsmRoutine(Oid tsmhandler) 28 : { 29 : Datum datum; 30 : TsmRoutine *routine; 31 : 32 1228 : datum = OidFunctionCall1(tsmhandler, PointerGetDatum(NULL)); 33 1228 : routine = (TsmRoutine *) DatumGetPointer(datum); 34 : 35 1228 : if (routine == NULL || !IsA(routine, TsmRoutine)) 36 0 : elog(ERROR, "tablesample handler function %u did not return a TsmRoutine struct", 37 : tsmhandler); 38 : 39 1228 : return routine; 40 : }