aboutsummaryrefslogtreecommitdiff
path: root/contrib/worker_spi/worker_spi.c
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2013-07-22 15:41:44 -0400
committerRobert Haas <rhaas@postgresql.org>2013-07-22 15:41:44 -0400
commit026bc46da33ab6a6f720b0d0500e8a95d075ab92 (patch)
treed3c618d874a2e7f2ca919f5e5232983b0cfb5d46 /contrib/worker_spi/worker_spi.c
parent295f9bbf1d2d1e985471bd523c7c9bfd3d134759 (diff)
downloadpostgresql-026bc46da33ab6a6f720b0d0500e8a95d075ab92.tar.gz
postgresql-026bc46da33ab6a6f720b0d0500e8a95d075ab92.zip
Back-patch bgworker API changes to 9.3.
Commit 7f7485a0cde92aa4ba235a1ffe4dda0ca0b6cc9a made these changes in master; per discussion, backport the API changes (but not the functional changes), so that people don't get used to the 9.3 API only to see it get broken in the next release. There are already some people coding to the original 9.3 API, and this will cause minor breakage, but there will be even more if we wait until next year to roll out these changes.
Diffstat (limited to 'contrib/worker_spi/worker_spi.c')
-rw-r--r--contrib/worker_spi/worker_spi.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/contrib/worker_spi/worker_spi.c b/contrib/worker_spi/worker_spi.c
index 84ac1b7730b..3a75bb3f4eb 100644
--- a/contrib/worker_spi/worker_spi.c
+++ b/contrib/worker_spi/worker_spi.c
@@ -154,10 +154,17 @@ initialize_worker_spi(worktable *table)
}
static void
-worker_spi_main(void *main_arg)
+worker_spi_main(Datum main_arg)
{
- worktable *table = (worktable *) main_arg;
+ int index = DatumGetInt32(main_arg);
+ worktable *table;
StringInfoData buf;
+ char name[20];
+
+ table = palloc(sizeof(worktable));
+ sprintf(name, "schema%d", index);
+ table->schema = pstrdup(name);
+ table->name = pstrdup("counted");
/* Establish signal handlers before unblocking signals. */
pqsignal(SIGHUP, worker_spi_sighup);
@@ -296,9 +303,7 @@ void
_PG_init(void)
{
BackgroundWorker worker;
- worktable *table;
unsigned int i;
- char name[20];
/* get the configuration */
DefineCustomIntVariable("worker_spi.naptime",
@@ -338,14 +343,8 @@ _PG_init(void)
*/
for (i = 1; i <= worker_spi_total_workers; i++)
{
- sprintf(name, "worker %d", i);
- worker.bgw_name = pstrdup(name);
-
- table = palloc(sizeof(worktable));
- sprintf(name, "schema%d", i);
- table->schema = pstrdup(name);
- table->name = pstrdup("counted");
- worker.bgw_main_arg = (void *) table;
+ snprintf(worker.bgw_name, BGW_MAXLEN, "worker %d", i);
+ worker.bgw_main_arg = Int32GetDatum(i);
RegisterBackgroundWorker(&worker);
}