Index: src/backend/access/common/reloptions.c =================================================================== RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/access/common/reloptions.c,v retrieving revision 1.28.2.2 diff -c -p -r1.28.2.2 reloptions.c *** src/backend/access/common/reloptions.c 11 Mar 2010 21:47:25 -0000 1.28.2.2 --- src/backend/access/common/reloptions.c 18 May 2010 19:54:57 -0000 *************** *** 44,49 **** --- 44,52 ---- * * Note that we don't handle "oids" in relOpts because it is handled by * interpretOidsOption(). + * + * Note that any option that exists for RELOPT_KIND_HEAP must also exist for + * RELOPT_KIND_TOAST. */ static relopt_bool boolRelOpts[] = *************** static relopt_int intRelOpts[] = *** 81,86 **** --- 84,97 ---- { { "fillfactor", + "Toast default fillfactor, cannot be changed", + RELOPT_KIND_TOAST, true + }, + 100, 100, 100 + }, + { + { + "fillfactor", "Packs btree index pages only to this percentage", RELOPT_KIND_BTREE }, *************** parse_one_reloption(relopt_value *option *** 886,891 **** --- 897,908 ---- errmsg("parameter \"%s\" specified more than once", option->gen->name))); + if (option->gen->default_only && validate) + ereport(ERROR, + (errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM), /* ERRCODE_INVALID_PARAMETER_VALUE */ + errmsg("parameter \"%s\" cannot be changed", + option->gen->name))); + value_len = text_len - option->gen->namelen - 1; value = (char *) palloc(value_len + 1); memcpy(value, text_str + option->gen->namelen + 1, value_len); Index: src/include/access/reloptions.h =================================================================== RCS file: /home/alvherre/Code/cvs/pgsql/src/include/access/reloptions.h,v retrieving revision 1.16 diff -c -p -r1.16 reloptions.h *** src/include/access/reloptions.h 11 Jun 2009 14:49:09 -0000 1.16 --- src/include/access/reloptions.h 18 May 2010 20:43:40 -0000 *************** typedef struct relopt_gen *** 55,60 **** --- 55,61 ---- * marker) */ const char *desc; bits32 kinds; + bool default_only; /* not settable? */ int namelen; relopt_type type; } relopt_gen;