Обсуждение: default of max_stack_depth
Hi, The document says that the max_stack_depth is 2MB by default. OTOH, in the source code, the variable max_stack_depth is initialized with 100 (kB), and guc.c also uses 100 as the default. Why? This seems confusing to me though I know that InitializeGUCOptions() sets max_stack_depth to 2MB. Regards, -- Fujii Masao NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center
Fujii Masao <masao.fujii@gmail.com> writes: > The document says that the max_stack_depth is 2MB by default. > OTOH, in the source code, the variable max_stack_depth is > initialized with 100 (kB), and guc.c also uses 100 as the > default. Why? The initial value needs to be small until we have been able to probe rlimit and figure out what is safe. regards, tom lane
On Fri, Aug 6, 2010 at 11:02 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Fujii Masao <masao.fujii@gmail.com> writes: >> The document says that the max_stack_depth is 2MB by default. >> OTOH, in the source code, the variable max_stack_depth is >> initialized with 100 (kB), and guc.c also uses 100 as the >> default. Why? > > The initial value needs to be small until we have been able to probe > rlimit and figure out what is safe. Thanks! How about adding the comment about that as follows? *** a/src/backend/utils/misc/guc.c --- b/src/backend/utils/misc/guc.c *************** *** 1520,1525 **** static struct config_int ConfigureNamesInt[] = --- 1520,1531 ---- 16384, 1024, MAX_KILOBYTES, NULL, NULL }, + /* + * Note: the real default of max_stack_depth is calculated in + * InitializeGUCOptions(). We use 100 as the sufficiently small + * initial value until we have been able to probe rlimit and + * figure out what is safe. + */ { {"max_stack_depth", PGC_SUSET, RESOURCES_MEM, gettext_noop("Setsthe maximum stack depth, in kilobytes."), Regards, -- Fujii Masao NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center
Fujii Masao <masao.fujii@gmail.com> writes: > On Fri, Aug 6, 2010 at 11:02 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: >> The initial value needs to be small until we have been able to probe >> rlimit and figure out what is safe. > Thanks! How about adding the comment about that as follows? I added this: /* * We use the hopefully-safely-small value of 100kB as the compiled-in * default for max_stack_depth. InitializeGUCOptionswill increase it if * possible, depending on the actual platform-specific stack limit. */ although I don't entirely see the point. We are certainly not going to comment every variable whose compiled-in default gets changed by later processing. regards, tom lane