37 .
name =
"tsm_system_time",
88 tsm->repeatable_across_queries =
false;
89 tsm->repeatable_across_scans =
false;
113 double spc_random_page_cost;
125 if (millis < 0 ||
isnan(millis))
139 &spc_random_page_cost,
148 if (spc_random_page_cost > 0)
149 npages = millis / spc_random_page_cost;
198 if (millis < 0 ||
isnan(millis))
201 errmsg(
"sample collection time must not be negative")));
275 }
while (
sampler->lb >= nblocks);
352 }
while (r == 0 ||
gcd(r, n) > 1);
#define InvalidBlockNumber
Node * estimate_expression_value(PlannerInfo *root, Node *node)
double clamp_row_est(double nrows)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
#define palloc0_object(type)
#define PG_MODULE_MAGIC_EXT(...)
#define PG_FUNCTION_INFO_V1(funcname)
#define PG_RETURN_POINTER(x)
#define INSTR_TIME_SET_CURRENT(t)
#define INSTR_TIME_SUBTRACT(x, y)
#define INSTR_TIME_GET_MILLISEC(t)
#define CHECK_FOR_INTERRUPTS()
#define IsA(nodeptr, _type_)
#define InvalidOffsetNumber
#define FirstOffsetNumber
#define list_make1_oid(x1)
static float8 DatumGetFloat8(Datum X)
double sampler_random_fract(pg_prng_state *randstate)
void sampler_random_init_state(uint32 seed, pg_prng_state *randstate)
void get_tablespace_page_costs(Oid spcid, double *spc_random_page_cost, double *spc_seq_page_cost)
Datum tsm_system_time_handler(PG_FUNCTION_ARGS)
static void system_time_samplescangetsamplesize(PlannerInfo *root, RelOptInfo *baserel, List *paramexprs, BlockNumber *pages, double *tuples)
static uint32 random_relative_prime(uint32 n, pg_prng_state *randstate)
static void system_time_beginsamplescan(SampleScanState *node, Datum *params, int nparams, uint32 seed)
static uint32 gcd(uint32 a, uint32 b)
static void system_time_initsamplescan(SampleScanState *node, int eflags)
static OffsetNumber system_time_nextsampletuple(SampleScanState *node, BlockNumber blockno, OffsetNumber maxoffset)
static BlockNumber system_time_nextsampleblock(SampleScanState *node, BlockNumber nblocks)