104 "Enables automatic summarization on this BRIN index",
112 "autovacuum_enabled",
113 "Enables autovacuum in this relation",
121 "user_catalog_table",
122 "Declare a table as an additional catalog table, e.g. for the purpose of logical replication",
131 "Enables \"fast update\" feature for this GIN index",
140 "View acts as a row security barrier",
149 "Privileges on underlying relations are checked as the invoking user, not the view owner",
158 "Enables \"deduplicate items\" feature for this btree index",
174 "Enables vacuum to truncate empty pages at the end of this table",
192 "Packs table pages only to this percentage",
202 "Packs btree index pages only to this percentage",
212 "Packs hash index pages only to this percentage",
222 "Packs gist index pages only to this percentage",
232 "Packs spgist index pages only to this percentage",
241 "autovacuum_parallel_workers",
242 "Maximum number of parallel autovacuum workers that can be used for processing this table.",
250 "autovacuum_vacuum_threshold",
251 "Minimum number of tuple updates or deletes prior to vacuum",
259 "autovacuum_vacuum_max_threshold",
260 "Maximum number of tuple updates or deletes prior to vacuum",
268 "autovacuum_vacuum_insert_threshold",
269 "Minimum number of tuple inserts prior to vacuum, or -1 to disable insert vacuums",
277 "autovacuum_analyze_threshold",
278 "Minimum number of tuple inserts, updates or deletes prior to analyze",
286 "autovacuum_vacuum_cost_limit",
287 "Vacuum cost amount available before napping, for autovacuum",
295 "autovacuum_freeze_min_age",
296 "Minimum age at which VACUUM should freeze a table row, for autovacuum",
304 "autovacuum_multixact_freeze_min_age",
305 "Minimum multixact age at which VACUUM should freeze a row multixact's, for autovacuum",
313 "autovacuum_freeze_max_age",
314 "Age at which to autovacuum a table to prevent transaction ID wraparound",
318 -1, 100000, 2000000000
322 "autovacuum_multixact_freeze_max_age",
323 "Multixact age at which to autovacuum a table to prevent multixact wraparound",
327 -1, 10000, 2000000000
331 "autovacuum_freeze_table_age",
332 "Age at which VACUUM should perform a full table sweep to freeze row versions",
339 "autovacuum_multixact_freeze_table_age",
340 "Age of multixact at which VACUUM should perform a full table sweep to freeze row versions",
347 "log_autovacuum_min_duration",
348 "Sets the minimum execution time above which vacuum actions by autovacuum will be logged",
356 "log_autoanalyze_min_duration",
357 "Sets the minimum execution time above which analyze actions by autovacuum will be logged",
365 "toast_tuple_target",
366 "Sets the target tuple length at which external columns will be toasted",
375 "Number of pages that each page range covers in a BRIN index",
382 "gin_pending_list_limit",
383 "Maximum size of the pending list for this GIN index, in kilobytes.",
391 "effective_io_concurrency",
392 "Number of simultaneous requests that can be handled efficiently by the disk subsystem.",
400 "maintenance_io_concurrency",
401 "Number of simultaneous requests that can be handled efficiently by the disk subsystem for maintenance work.",
410 "Number of parallel processes that can be used per executor node for this relation.",
425 "autovacuum_vacuum_cost_delay",
426 "Vacuum cost delay in milliseconds, for autovacuum",
434 "autovacuum_vacuum_scale_factor",
435 "Number of tuple updates or deletes prior to vacuum as a fraction of reltuples",
443 "autovacuum_vacuum_insert_scale_factor",
444 "Number of tuple inserts prior to vacuum as a fraction of reltuples",
452 "autovacuum_analyze_scale_factor",
453 "Number of tuple inserts, updates or deletes prior to analyze as a fraction of reltuples",
461 "vacuum_max_eager_freeze_failure_rate",
462 "Fraction of pages in a relation vacuum can scan and fail to freeze before disabling eager scanning.",
472 "Sets the planner's estimate of the cost of a sequentially fetched disk page.",
481 "Sets the planner's estimate of the cost of a nonsequentially fetched disk page.",
490 "Sets the planner's estimate of the number of distinct values appearing in a column (excluding child relations).",
498 "n_distinct_inherited",
499 "Sets the planner's estimate of the number of distinct values appearing in a column (including child relations).",
507 "vacuum_cleanup_index_scale_factor",
508 "Deprecated B-Tree parameter.",
530 {(
const char *)
NULL}
539 {(
const char *)
NULL}
548 {(
const char *)
NULL}
555 "vacuum_index_cleanup",
556 "Controls index vacuuming and index cleanup",
562 gettext_noop(
"Valid values are \"on\", \"off\", and \"auto\".")
567 "Enables buffering build for this GiST index",
573 gettext_noop(
"Valid values are \"on\", \"off\", and \"auto\".")
578 "View has WITH CHECK OPTION defined (local or cascaded).",
584 gettext_noop(
"Valid values are \"local\" and \"cascaded\".")
612#define GET_STRING_RELOPTION_LEN(option) \
613 ((option).isset ? strlen((option).string_val) : \
614 ((relopt_string *) (option).gen)->default_len)
747 errmsg(
"user-defined relation parameter types limit exceeded")));
796 relopts->relopt_struct_size = relopt_struct_size;
894 bool default_val,
LOCKMODE lockmode)
899 name, desc, lockmode);
911 bool default_val,
LOCKMODE lockmode)
914 default_val, lockmode);
927 const char *desc,
bool default_val,
int offset)
976 const char *desc,
int offset)
998 name, desc, lockmode);
1029 const char *desc,
int default_val,
int min_val,
1033 name, desc, default_val,
1051 name, desc, lockmode);
1083 const char *desc,
double default_val,
1101 const char *detailmsg,
LOCKMODE lockmode)
1106 name, desc, lockmode);
1130 const char *detailmsg,
LOCKMODE lockmode)
1133 members, default_val,
1134 detailmsg, lockmode);
1148 int default_val,
const char *detailmsg,
int offset)
1152 members, default_val,
1164 const char *default_val,
1176 name, desc, lockmode);
1229 const char *desc,
const char *default_val,
1341 errmsg(
"RESET must not include values for parameters")));
1374 errmsg(
"unrecognized parameter namespace \"%s\"",
1404 errmsg(
"invalid option name \"%s\": must not contain \"=\"",
1419 errmsg(
"tables declared WITH OIDS are not supported")));
1587 errmsg(
"unrecognized parameter \"%s\"", s)));
1644 reloptions[
j].
isset =
false;
1699 errmsg(
"parameter \"%s\" specified more than once",
1707 switch (
option->gen->type)
1715 errmsg(
"invalid value for boolean option \"%s\": %s",
1729 errmsg(
"invalid value for boolean option \"%s\": %s",
1741 errmsg(
"invalid value for integer option \"%s\": %s",
1747 errmsg(
"value %s out of bounds for option \"%s\"",
1749 errdetail(
"Valid values are between \"%d\" and \"%d\".",
1761 errmsg(
"invalid value for floating point option \"%s\": %s",
1767 errmsg(
"value %s out of bounds for option \"%s\"",
1769 errdetail(
"Valid values are between \"%f\" and \"%f\".",
1791 errmsg(
"invalid value for enum option \"%s\": %s",
1925 string_val =
options[
i].string_val;
1935 (
char *)
rdopts + offset);
1945 else if (string_val ==
NULL)
1951 offset +=
strlen(string_val) + 1;
1955 elog(
ERROR,
"unsupported reloption type %d",
1964 elog(
ERROR,
"reloption \"%s\" not found in parse table",
2055 Size relopt_struct_size,
2134 errmsg(
"cannot specify storage parameters for a partitioned table"),
2135 errhint(
"Specify storage parameters for its leaf partitions instead."));
2176 rdopts->fillfactor = 100;
2177 rdopts->autovacuum.analyze_threshold = -1;
2178 rdopts->autovacuum.analyze_scale_factor = -1;
2207 return amoptions(reloptions,
validate);
2275 if (lockmode <
relOpts[
i]->lockmode)
bytea *(* amoptions_function)(Datum reloptions, bool validate)
#define DatumGetArrayTypeP(X)
ArrayBuildState * accumArrayResult(ArrayBuildState *astate, Datum dvalue, bool disnull, Oid element_type, MemoryContext rcontext)
void deconstruct_array_builtin(const ArrayType *array, Oid elmtype, Datum **elemsp, bool **nullsp, int *nelemsp)
Datum makeArrayResult(ArrayBuildState *astate, MemoryContext rcontext)
static bool validate(Port *port, const char *auth, const char **logdetail)
bool parse_bool(const char *value, bool *result)
static Datum values[MAXATTR]
int maintenance_io_concurrency
int effective_io_concurrency
#define MAX_IO_CONCURRENCY
#define TextDatumGetCString(d)
#define Assert(condition)
memcpy(sums, checksumBaseOffsets, sizeof(checksumBaseOffsets))
char * defGetString(DefElem *def)
bool defGetBoolean(DefElem *def)
int errcode(int sqlerrcode)
int int errdetail_internal(const char *fmt,...) pg_attribute_printf(1
int errhint(const char *fmt,...) pg_attribute_printf(1
int errdetail(const char *fmt,...) pg_attribute_printf(1
#define ereport(elevel,...)
#define palloc_object(type)
#define palloc_array(type, count)
@ GIST_OPTION_BUFFERING_OFF
@ GIST_OPTION_BUFFERING_AUTO
@ GIST_OPTION_BUFFERING_ON
#define GIST_MIN_FILLFACTOR
#define GIST_DEFAULT_FILLFACTOR
bool parse_int(const char *value, int *result, int flags, const char **hintmsg)
bool parse_real(const char *value, double *result, int flags, const char **hintmsg)
#define HASH_DEFAULT_FILLFACTOR
#define HASH_MIN_FILLFACTOR
#define TOAST_TUPLE_TARGET
#define TOAST_TUPLE_TARGET_MAIN
static void * GETSTRUCT(const HeapTupleData *tuple)
static Datum fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull)
List * lappend(List *list, void *datum)
bool DoLockModesConflict(LOCKMODE mode1, LOCKMODE mode2)
#define AccessExclusiveLock
#define ShareUpdateExclusiveLock
DefElem * makeDefElem(char *name, Node *arg, int location)
char * MemoryContextStrdup(MemoryContext context, const char *string)
void * MemoryContextAlloc(MemoryContext context, Size size)
char * pstrdup(const char *in)
void * repalloc(void *pointer, Size size)
void pfree(void *pointer)
void * palloc0(Size size)
MemoryContext TopMemoryContext
MemoryContext CurrentMemoryContext
#define BTREE_MIN_FILLFACTOR
#define BTREE_DEFAULT_FILLFACTOR
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
static AmcheckOptions opts
FormData_pg_class * Form_pg_class
static int list_length(const List *l)
int pg_strcasecmp(const char *s1, const char *s2)
static Datum PointerGetDatum(const void *X)
static Pointer DatumGetPointer(Datum X)
#define HEAP_MIN_FILLFACTOR
@ VIEW_OPTION_CHECK_OPTION_NOT_SET
@ VIEW_OPTION_CHECK_OPTION_LOCAL
@ VIEW_OPTION_CHECK_OPTION_CASCADED
#define HEAP_DEFAULT_FILLFACTOR
@ STDRD_OPTION_VACUUM_INDEX_CLEANUP_AUTO
@ STDRD_OPTION_VACUUM_INDEX_CLEANUP_OFF
@ STDRD_OPTION_VACUUM_INDEX_CLEANUP_ON
static int num_custom_options
void add_local_string_reloption(local_relopts *relopts, const char *name, const char *desc, const char *default_val, validate_string_relopt validator, fill_string_relopt filler, int offset)
static relopt_enum * init_enum_reloption(uint32 kinds, const char *name, const char *desc, relopt_enum_elt_def *members, int default_val, const char *detailmsg, LOCKMODE lockmode)
static relopt_real realRelOpts[]
static relopt_enum_elt_def gistBufferingOptValues[]
bytea * default_reloptions(Datum reloptions, bool validate, relopt_kind kind)
void add_ternary_reloption(uint32 kinds, const char *name, const char *desc, LOCKMODE lockmode)
static relopt_string * init_string_reloption(uint32 kinds, const char *name, const char *desc, const char *default_val, validate_string_relopt validator, fill_string_relopt filler, LOCKMODE lockmode)
static relopt_value * parseLocalRelOptions(local_relopts *relopts, Datum options, bool validate)
void add_int_reloption(uint32 kinds, const char *name, const char *desc, int default_val, int min_val, int max_val, LOCKMODE lockmode)
bytea * tablespace_reloptions(Datum reloptions, bool validate)
static relopt_enum_elt_def StdRdOptIndexCleanupValues[]
#define GET_STRING_RELOPTION_LEN(option)
List * untransformRelOptions(Datum options)
static relopt_int intRelOpts[]
void add_bool_reloption(uint32 kinds, const char *name, const char *desc, bool default_val, LOCKMODE lockmode)
static relopt_enum enumRelOpts[]
static void parse_one_reloption(relopt_value *option, char *text_str, int text_len, bool validate)
static relopt_string stringRelOpts[]
static relopt_ternary * init_ternary_reloption(uint32 kinds, const char *name, const char *desc, LOCKMODE lockmode)
void add_enum_reloption(uint32 kinds, const char *name, const char *desc, relopt_enum_elt_def *members, int default_val, const char *detailmsg, LOCKMODE lockmode)
bytea * view_reloptions(Datum reloptions, bool validate)
void add_real_reloption(uint32 kinds, const char *name, const char *desc, double default_val, double min_val, double max_val, LOCKMODE lockmode)
bytea * index_reloptions(amoptions_function amoptions, Datum reloptions, bool validate)
void * build_reloptions(Datum reloptions, bool validate, relopt_kind kind, Size relopt_struct_size, const relopt_parse_elt *relopt_elems, int num_relopt_elems)
bytea * partitioned_table_reloptions(Datum reloptions, bool validate)
void add_local_bool_reloption(local_relopts *relopts, const char *name, const char *desc, bool default_val, int offset)
static relopt_int * init_int_reloption(uint32 kinds, const char *name, const char *desc, int default_val, int min_val, int max_val, LOCKMODE lockmode)
void init_local_reloptions(local_relopts *relopts, Size relopt_struct_size)
static relopt_enum_elt_def viewCheckOptValues[]
void add_local_real_reloption(local_relopts *relopts, const char *name, const char *desc, double default_val, double min_val, double max_val, int offset)
static void add_reloption(relopt_gen *newoption)
static void add_local_reloption(local_relopts *relopts, relopt_gen *newoption, int offset)
Datum transformRelOptions(Datum oldOptions, List *defList, const char *nameSpace, const char *const validnsps[], bool acceptOidsOff, bool isReset)
void add_local_enum_reloption(local_relopts *relopts, const char *name, const char *desc, relopt_enum_elt_def *members, int default_val, const char *detailmsg, int offset)
bytea * extractRelOptions(HeapTuple tuple, TupleDesc tupdesc, amoptions_function amoptions)
static void parseRelOptionsInternal(Datum options, bool validate, relopt_value *reloptions, int numoptions)
static void fillRelOptions(void *rdopts, Size basesize, relopt_value *options, int numoptions, bool validate, const relopt_parse_elt *elems, int numelems)
static relopt_gen * allocate_reloption(uint32 kinds, int type, const char *name, const char *desc, LOCKMODE lockmode)
static void initialize_reloptions(void)
static relopt_bool * init_bool_reloption(uint32 kinds, const char *name, const char *desc, bool default_val, LOCKMODE lockmode)
relopt_kind add_reloption_kind(void)
void * build_local_reloptions(local_relopts *relopts, Datum options, bool validate)
void register_reloptions_validator(local_relopts *relopts, relopts_validator validator)
static bool need_initialization
static uint32 last_assigned_kind
static relopt_value * parseRelOptions(Datum options, bool validate, relopt_kind kind, int *numrelopts)
static relopt_gen ** relOpts
static relopt_gen ** custom_options
LOCKMODE AlterTableGetRelOptionsLockLevel(List *defList)
bytea * attribute_reloptions(Datum reloptions, bool validate)
static relopt_real * init_real_reloption(uint32 kinds, const char *name, const char *desc, double default_val, double min_val, double max_val, LOCKMODE lockmode)
void add_local_ternary_reloption(local_relopts *relopts, const char *name, const char *desc, int offset)
static relopt_bool boolRelOpts[]
void add_local_int_reloption(local_relopts *relopts, const char *name, const char *desc, int default_val, int min_val, int max_val, int offset)
void add_string_reloption(uint32 kinds, const char *name, const char *desc, const char *default_val, validate_string_relopt validator, LOCKMODE lockmode)
static void * allocateReloptStruct(Size base, relopt_value *options, int numoptions)
bytea * heap_reloptions(char relkind, Datum reloptions, bool validate)
static relopt_ternary ternaryRelOpts[]
Size(* fill_string_relopt)(const char *value, void *ptr)
@ RELOPT_KIND_LAST_DEFAULT
void(* validate_string_relopt)(const char *value)
void(* relopts_validator)(void *parsed_options, relopt_value *vals, int nvals)
#define SPGIST_DEFAULT_FILLFACTOR
#define SPGIST_MIN_FILLFACTOR
double vacuum_max_eager_freeze_failure_rate
String * makeString(char *str)
static Size VARSIZE(const void *PTR)
static char * VARDATA(const void *PTR)
static void SET_VARSIZE(void *PTR, Size len)