On 26.06.18 09:10, Kyotaro HORIGUCHI wrote:
> --- a/src/bin/initdb/initdb.c
> +++ b/src/bin/initdb/initdb.c
> @@ -984,6 +984,16 @@ test_config_settings(void)
> ok_buffers = 0;
>
>
> + /*
> + * Server doesn't confirm that the server-default DSM implementation is
> + * actually workable. Choose a fine one for probing then it is used on the
> + * new database.
> + */
> + printf(_("selecting dynamic shared memory implementation ... "));
> + fflush(stdout);
> + dynamic_shared_memory_type = choose_dsm_implementation();
> + printf("%s\n", dynamic_shared_memory_type);
> +
> printf(_("selecting default max_connections ... "));
> fflush(stdout);
>
I don't understand that comment. initdb does test whether dsm=posix
works. What more were you hoping for?
> @@ -996,10 +1006,11 @@ test_config_settings(void)
> "\"%s\" --boot -x0 %s "
> "-c max_connections=%d "
> "-c shared_buffers=%d "
> - "-c dynamic_shared_memory_type=none "
> + "-c dynamic_shared_memory_type=%s "
> "< \"%s\" > \"%s\" 2>&1",
> backend_exec, boot_options,
> test_conns, test_buffs,
> + dynamic_shared_memory_type,
> DEVNULL, DEVNULL);
> status = system(cmd);
> if (status == 0)
We could perhaps avoid some variability here by running the
bootstrapping runs in initdb using hardcoded dsm settings of
"sysv"/"windows".
> --- a/src/include/storage/dsm_impl.h
> +++ b/src/include/storage/dsm_impl.h
> @@ -14,11 +14,10 @@
> #define DSM_IMPL_H
>
> /* Dynamic shared memory implementations. */
> -#define DSM_IMPL_NONE 0
> -#define DSM_IMPL_POSIX 1
> -#define DSM_IMPL_SYSV 2
> -#define DSM_IMPL_WINDOWS 3
> -#define DSM_IMPL_MMAP 4
> +#define DSM_IMPL_POSIX 0
> +#define DSM_IMPL_SYSV 1
> +#define DSM_IMPL_WINDOWS 2
> +#define DSM_IMPL_MMAP 3
I would avoid renumbering here. It was kind of sensible to have NONE =
0, so I'd keep the non-NONE ones as non-zero.
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services