|
|
|
|
@ -42,9 +42,9 @@ |
|
|
|
|
* |
|
|
|
|
* To add an option: |
|
|
|
|
* |
|
|
|
|
* (i) decide on a type (integer, real, bool, string), name, default value, |
|
|
|
|
* upper and lower bounds (if applicable); for strings, consider a validation |
|
|
|
|
* routine. |
|
|
|
|
* (i) decide on a type (bool, integer, real, enum, string), name, default |
|
|
|
|
* value, upper and lower bounds (if applicable); for strings, consider a |
|
|
|
|
* validation routine. |
|
|
|
|
* (ii) add a record below (or use add_<type>_reloption). |
|
|
|
|
* (iii) add it to the appropriate options struct (perhaps StdRdOptions) |
|
|
|
|
* (iv) add it to the appropriate handling routine (perhaps |
|
|
|
|
@ -68,24 +68,24 @@ |
|
|
|
|
* since they are only used by the AV procs and don't change anything |
|
|
|
|
* currently executing. |
|
|
|
|
* |
|
|
|
|
* Fillfactor can be set because it applies only to subsequent changes made to |
|
|
|
|
* data blocks, as documented in hio.c |
|
|
|
|
* Fillfactor can be set at ShareUpdateExclusiveLock because it applies only to |
|
|
|
|
* subsequent changes made to data blocks, as documented in hio.c |
|
|
|
|
* |
|
|
|
|
* n_distinct options can be set at ShareUpdateExclusiveLock because they |
|
|
|
|
* are only used during ANALYZE, which uses a ShareUpdateExclusiveLock, |
|
|
|
|
* so the ANALYZE will not be affected by in-flight changes. Changing those |
|
|
|
|
* values has no effect until the next ANALYZE, so no need for stronger lock. |
|
|
|
|
* |
|
|
|
|
* Planner-related parameters can be set with ShareUpdateExclusiveLock because |
|
|
|
|
* Planner-related parameters can be set at ShareUpdateExclusiveLock because |
|
|
|
|
* they only affect planning and not the correctness of the execution. Plans |
|
|
|
|
* cannot be changed in mid-flight, so changes here could not easily result in |
|
|
|
|
* new improved plans in any case. So we allow existing queries to continue |
|
|
|
|
* and existing plans to survive, a small price to pay for allowing better |
|
|
|
|
* plans to be introduced concurrently without interfering with users. |
|
|
|
|
* |
|
|
|
|
* Setting parallel_workers is safe, since it acts the same as |
|
|
|
|
* max_parallel_workers_per_gather which is a USERSET parameter that doesn't |
|
|
|
|
* affect existing plans or queries. |
|
|
|
|
* Setting parallel_workers at ShareUpdateExclusiveLock is safe, since it acts |
|
|
|
|
* the same as max_parallel_workers_per_gather which is a USERSET parameter |
|
|
|
|
* that doesn't affect existing plans or queries. |
|
|
|
|
* |
|
|
|
|
* vacuum_truncate can be set at ShareUpdateExclusiveLock because it |
|
|
|
|
* is only used during VACUUM, which uses a ShareUpdateExclusiveLock, |
|
|
|
|
|