worker_spi-debug_query_string-v0.patch

text/plain

Filename: worker_spi-debug_query_string-v0.patch
Type: text/plain
Part: 0
Message: Re: pgstat_report_activity() and parallel CREATE INDEX (was: Parallel index creation & pg_stat_activity)

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: unified
Series: patch v0
File+
src/test/modules/worker_spi/worker_spi.c 4 0
commit 753a321
Author:     Noah Misch <noah@leadboat.com>
AuthorDate: Tue Oct 13 17:01:40 2020 -0700
Commit:     Noah Misch <noah@leadboat.com>
CommitDate: Tue Oct 13 17:01:40 2020 -0700

    worker_spi: set debug_query_string for each SPI_execute
---
 src/test/modules/worker_spi/worker_spi.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/test/modules/worker_spi/worker_spi.c b/src/test/modules/worker_spi/worker_spi.c
index 1c7b17c..daf6c1d 100644
--- a/src/test/modules/worker_spi/worker_spi.c
+++ b/src/test/modules/worker_spi/worker_spi.c
@@ -113,16 +113,17 @@ initialize_worker_spi(worktable *table)
 	SPI_connect();
 	PushActiveSnapshot(GetTransactionSnapshot());
 	pgstat_report_activity(STATE_RUNNING, "initializing worker_spi schema");
 
 	/* XXX could we use CREATE SCHEMA IF NOT EXISTS? */
 	initStringInfo(&buf);
 	appendStringInfo(&buf, "select count(*) from pg_namespace where nspname = '%s'",
 					 table->schema);
+	debug_query_string = buf.data;
 
 	ret = SPI_execute(buf.data, true, 0);
 	if (ret != SPI_OK_SELECT)
 		elog(FATAL, "SPI_execute failed: error code %d", ret);
 
 	if (SPI_processed != 1)
 		elog(FATAL, "not a singleton result");
 
@@ -138,30 +139,32 @@ initialize_worker_spi(worktable *table)
 		appendStringInfo(&buf,
 						 "CREATE SCHEMA \"%s\" "
 						 "CREATE TABLE \"%s\" ("
 						 "		type text CHECK (type IN ('total', 'delta')), "
 						 "		value	integer)"
 						 "CREATE UNIQUE INDEX \"%s_unique_total\" ON \"%s\" (type) "
 						 "WHERE type = 'total'",
 						 table->schema, table->name, table->name, table->name);
+		debug_query_string = buf.data;
 
 		/* set statement start time */
 		SetCurrentStatementStartTimestamp();
 
 		ret = SPI_execute(buf.data, false, 0);
 
 		if (ret != SPI_OK_UTILITY)
 			elog(FATAL, "failed to create my schema");
 	}
 
 	SPI_finish();
 	PopActiveSnapshot();
 	CommitTransactionCommand();
 	pgstat_report_activity(STATE_IDLE, NULL);
+	debug_query_string = NULL;
 }
 
 void
 worker_spi_main(Datum main_arg)
 {
 	int			index = DatumGetInt32(main_arg);
 	worktable  *table;
 	StringInfoData buf;
@@ -206,16 +209,17 @@ worker_spi_main(Datum main_arg)
 					 "UPDATE %s.%s "
 					 "SET value = %s.value + total.sum "
 					 "FROM total WHERE type = 'total' "
 					 "RETURNING %s.value",
 					 table->schema, table->name,
 					 table->schema, table->name,
 					 table->name,
 					 table->name);
+	debug_query_string = buf.data;
 
 	/*
 	 * Main loop: do this until the SIGTERM handler tells us to terminate
 	 */
 	while (!got_sigterm)
 	{
 		int			ret;