aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bin/scripts/reindexdb.c4
-rw-r--r--src/bin/scripts/scripts_parallel.c14
-rw-r--r--src/bin/scripts/scripts_parallel.h2
-rw-r--r--src/bin/scripts/vacuumdb.c4
4 files changed, 20 insertions, 4 deletions
diff --git a/src/bin/scripts/reindexdb.c b/src/bin/scripts/reindexdb.c
index 14a4f4a91c7..f93f7dd5fec 100644
--- a/src/bin/scripts/reindexdb.c
+++ b/src/bin/scripts/reindexdb.c
@@ -153,10 +153,10 @@ main(int argc, char *argv[])
pg_log_error("number of parallel jobs must be at least 1");
exit(1);
}
- if (concurrentCons > FD_SETSIZE - 1)
+ if (concurrentCons > ParallelSlotsMax())
{
pg_log_error("too many parallel jobs requested (maximum: %d)",
- FD_SETSIZE - 1);
+ ParallelSlotsMax());
exit(1);
}
break;
diff --git a/src/bin/scripts/scripts_parallel.c b/src/bin/scripts/scripts_parallel.c
index ffdc4e49ef8..10379a1f99b 100644
--- a/src/bin/scripts/scripts_parallel.c
+++ b/src/bin/scripts/scripts_parallel.c
@@ -95,6 +95,20 @@ select_loop(int maxFd, fd_set *workerset, bool *aborting)
}
/*
+ * ParallelSlotsMax
+ * Returns the maximum number of parallel slots supported.
+ *
+ * Note that this is included here as FD_SETSIZE is declared in sys/select.h
+ * per POSIX.
+ */
+int
+ParallelSlotsMax(void)
+{
+ /* leave some room for pre-existing fds */
+ return FD_SETSIZE - 10;
+}
+
+/*
* ParallelSlotsGetIdle
* Return a connection slot that is ready to execute a command.
*
diff --git a/src/bin/scripts/scripts_parallel.h b/src/bin/scripts/scripts_parallel.h
index ab82c5e6a96..8042345072a 100644
--- a/src/bin/scripts/scripts_parallel.h
+++ b/src/bin/scripts/scripts_parallel.h
@@ -21,6 +21,8 @@ typedef struct ParallelSlot
bool isFree; /* Is it known to be idle? */
} ParallelSlot;
+extern int ParallelSlotsMax(void);
+
extern ParallelSlot *ParallelSlotsGetIdle(ParallelSlot *slots, int numslots);
extern ParallelSlot *ParallelSlotsSetup(const char *dbname, const char *host,
diff --git a/src/bin/scripts/vacuumdb.c b/src/bin/scripts/vacuumdb.c
index d81bfa3a6b4..c5c38692ede 100644
--- a/src/bin/scripts/vacuumdb.c
+++ b/src/bin/scripts/vacuumdb.c
@@ -181,10 +181,10 @@ main(int argc, char *argv[])
pg_log_error("number of parallel jobs must be at least 1");
exit(1);
}
- if (concurrentCons > FD_SETSIZE - 1)
+ if (concurrentCons > ParallelSlotsMax())
{
pg_log_error("too many parallel jobs requested (maximum: %d)",
- FD_SETSIZE - 1);
+ ParallelSlotsMax());
exit(1);
}
break;