summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Munro2022-08-04 21:18:34 +0000
committerThomas Munro2022-08-04 21:18:34 +0000
commitbdb657edd6db1e471437d62f4642674a801ef32c (patch)
tree74ae928e3976d43b74af6c76f13255bd87a5e3ac
parentca1e85513e1c92afb80a74935cbbb6f7e4a3ccf9 (diff)
Remove configure probe and related tests for getrlimit.
getrlimit() is in SUSv2 and all targeted systems have it. Windows doesn't have it. We could just use #ifndef WIN32, but for a little more explanation about why we're making things conditional, let's retain the HAVE_GETRLIMIT macro. It's defined in port.h for Unix systems. On systems that have it, it's not necessary to test for RLIMIT_CORE, RLIMIT_STACK or RLIMIT_NOFILE macros, since SUSv2 requires those and all targeted systems have them. Also remove references to a pre-historic alternative spelling of RLIMIT_NOFILE, and coding that seemed to believe that Cygwin didn't have it. Reviewed-by: Tom Lane <[email protected]> Reviewed-by: Andres Freund <[email protected]> Discussion: https://postgr.es/m/CA+hUKGJ3LHeP9w5Fgzdr4G8AnEtJ=z=p6hGDEm4qYGEUX5B6fQ@mail.gmail.com
-rwxr-xr-xconfigure2
-rw-r--r--configure.ac1
-rw-r--r--src/backend/storage/file/fd.c4
-rw-r--r--src/backend/tcop/postgres.c8
-rw-r--r--src/bin/pg_ctl/pg_ctl.c8
-rw-r--r--src/bin/pgbench/pgbench.c4
-rw-r--r--src/include/pg_config.h.in3
-rw-r--r--src/include/port.h8
-rw-r--r--src/test/regress/pg_regress.c4
-rw-r--r--src/tools/msvc/Solution.pm1
10 files changed, 17 insertions, 26 deletions
diff --git a/configure b/configure
index 2583a04a87..691cdd9d61 100755
--- a/configure
+++ b/configure
@@ -16039,7 +16039,7 @@ fi
LIBS_including_readline="$LIBS"
LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'`
-for ac_func in backtrace_symbols clock_gettime copyfile fdatasync getifaddrs getpeerucred getrlimit inet_pton kqueue mbstowcs_l memset_s poll posix_fallocate ppoll pthread_is_threaded_np readlink readv setproctitle setproctitle_fast setsid shm_open strchrnul strsignal symlink syncfs sync_file_range uselocale wcstombs_l writev
+for ac_func in backtrace_symbols clock_gettime copyfile fdatasync getifaddrs getpeerucred inet_pton kqueue mbstowcs_l memset_s poll posix_fallocate ppoll pthread_is_threaded_np readlink readv setproctitle setproctitle_fast setsid shm_open strchrnul strsignal symlink syncfs sync_file_range uselocale wcstombs_l writev
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
diff --git a/configure.ac b/configure.ac
index 84bdaeb46c..39a55f6264 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1797,7 +1797,6 @@ AC_CHECK_FUNCS(m4_normalize([
fdatasync
getifaddrs
getpeerucred
- getrlimit
inet_pton
kqueue
mbstowcs_l
diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c
index f904f60c08..447d5a86c3 100644
--- a/src/backend/storage/file/fd.c
+++ b/src/backend/storage/file/fd.c
@@ -895,11 +895,7 @@ count_usable_fds(int max_to_probe, int *usable_fds, int *already_open)
fd = (int *) palloc(size * sizeof(int));
#ifdef HAVE_GETRLIMIT
-#ifdef RLIMIT_NOFILE /* most platforms use RLIMIT_NOFILE */
getrlimit_status = getrlimit(RLIMIT_NOFILE, &rlim);
-#else /* but BSD doesn't ... */
- getrlimit_status = getrlimit(RLIMIT_OFILE, &rlim);
-#endif /* RLIMIT_NOFILE */
if (getrlimit_status != 0)
ereport(WARNING, (errmsg("getrlimit failed: %m")));
#endif /* HAVE_GETRLIMIT */
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 078fbdb5a0..11e802eba9 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -4770,7 +4770,7 @@ forbidden_in_wal_sender(char firstchar)
long
get_stack_depth_rlimit(void)
{
-#if defined(HAVE_GETRLIMIT) && defined(RLIMIT_STACK)
+#if defined(HAVE_GETRLIMIT)
static long val = 0;
/* This won't change after process launch, so check just once */
@@ -4789,13 +4789,9 @@ get_stack_depth_rlimit(void)
val = rlim.rlim_cur;
}
return val;
-#else /* no getrlimit */
-#if defined(WIN32) || defined(__CYGWIN__)
+#else
/* On Windows we set the backend stack size in src/backend/Makefile */
return WIN32_STACK_RLIMIT;
-#else /* not windows ... give up */
- return -1;
-#endif
#endif
}
diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
index ef58883a5c..2762e8590d 100644
--- a/src/bin/pg_ctl/pg_ctl.c
+++ b/src/bin/pg_ctl/pg_ctl.c
@@ -160,7 +160,7 @@ static bool wait_for_postmaster_stop(void);
static bool wait_for_postmaster_promote(void);
static bool postmaster_is_alive(pid_t pid);
-#if defined(HAVE_GETRLIMIT) && defined(RLIMIT_CORE)
+#if defined(HAVE_GETRLIMIT)
static void unlimit_core_size(void);
#endif
@@ -776,7 +776,7 @@ wait_for_postmaster_promote(void)
}
-#if defined(HAVE_GETRLIMIT) && defined(RLIMIT_CORE)
+#if defined(HAVE_GETRLIMIT)
static void
unlimit_core_size(void)
{
@@ -949,7 +949,7 @@ do_start(void)
if (exec_path == NULL)
exec_path = find_other_exec_or_die(argv0, "postgres", PG_BACKEND_VERSIONSTR);
-#if defined(HAVE_GETRLIMIT) && defined(RLIMIT_CORE)
+#if defined(HAVE_GETRLIMIT)
if (allow_core_files)
unlimit_core_size();
#endif
@@ -2069,7 +2069,7 @@ do_help(void)
printf(_("If the -D option is omitted, the environment variable PGDATA is used.\n"));
printf(_("\nOptions for start or restart:\n"));
-#if defined(HAVE_GETRLIMIT) && defined(RLIMIT_CORE)
+#if defined(HAVE_GETRLIMIT)
printf(_(" -c, --core-files allow postgres to produce core files\n"));
#else
printf(_(" -c, --core-files not applicable on this platform\n"));
diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c
index bcaea8f5ea..0778656794 100644
--- a/src/bin/pgbench/pgbench.c
+++ b/src/bin/pgbench/pgbench.c
@@ -6662,11 +6662,7 @@ main(int argc, char **argv)
exit(1);
}
#ifdef HAVE_GETRLIMIT
-#ifdef RLIMIT_NOFILE /* most platforms use RLIMIT_NOFILE */
if (getrlimit(RLIMIT_NOFILE, &rlim) == -1)
-#else /* but BSD doesn't ... */
- if (getrlimit(RLIMIT_OFILE, &rlim) == -1)
-#endif /* RLIMIT_NOFILE */
pg_fatal("getrlimit failed: %m");
if (rlim.rlim_cur < nclients + 3)
{
diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in
index ab812bca89..93173d67c0 100644
--- a/src/include/pg_config.h.in
+++ b/src/include/pg_config.h.in
@@ -229,9 +229,6 @@
/* Define to 1 if you have the `getpeerucred' function. */
#undef HAVE_GETPEERUCRED
-/* Define to 1 if you have the `getrlimit' function. */
-#undef HAVE_GETRLIMIT
-
/* Define to 1 if you have the `gettimeofday' function. */
#undef HAVE_GETTIMEOFDAY
diff --git a/src/include/port.h b/src/include/port.h
index 323df8f9ed..2c25498add 100644
--- a/src/include/port.h
+++ b/src/include/port.h
@@ -519,4 +519,12 @@ extern char *wait_result_to_str(int exit_status);
extern bool wait_result_is_signal(int exit_status, int signum);
extern bool wait_result_is_any_signal(int exit_status, bool include_command_not_found);
+/*
+ * Interfaces that we assume all Unix system have. We retain individual macros
+ * for better documentation.
+ */
+#ifndef WIN32
+#define HAVE_GETRLIMIT 1
+#endif
+
#endif /* PG_PORT_H */
diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c
index 982801e029..04ab513b7c 100644
--- a/src/test/regress/pg_regress.c
+++ b/src/test/regress/pg_regress.c
@@ -129,7 +129,7 @@ static void psql_end_command(StringInfo buf, const char *database);
/*
* allow core files if possible.
*/
-#if defined(HAVE_GETRLIMIT) && defined(RLIMIT_CORE)
+#if defined(HAVE_GETRLIMIT)
static void
unlimit_core_size(void)
{
@@ -2229,7 +2229,7 @@ regression_main(int argc, char *argv[],
initialize_environment();
-#if defined(HAVE_GETRLIMIT) && defined(RLIMIT_CORE)
+#if defined(HAVE_GETRLIMIT)
unlimit_core_size();
#endif
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index a7a5c31a5b..c703708b50 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -271,7 +271,6 @@ sub GenerateFiles
HAVE_GETOPT_LONG => undef,
HAVE_GETPEEREID => undef,
HAVE_GETPEERUCRED => undef,
- HAVE_GETRLIMIT => undef,
HAVE_GETTIMEOFDAY => undef,
HAVE_GSSAPI_GSSAPI_H => undef,
HAVE_GSSAPI_H => undef,