Set debug_query_string in worker_spi.
authorNoah Misch <noah@leadboat.com>
Sat, 31 Oct 2020 15:47:02 +0000 (08:47 -0700)
committerNoah Misch <noah@leadboat.com>
Sat, 31 Oct 2020 15:47:02 +0000 (08:47 -0700)
This makes elog.c emit the string, which is good practice for a
background worker that executes SQL strings.

Reviewed by Tom Lane.

Discussion: https://postgr.es/m/20201014022636.GA1962668@rfd.leadboat.com

src/test/modules/worker_spi/worker_spi.c

index 1c7b17c56fecb615b5e0217b9faf851509a05400..258237f9bfe9335cba7a518acd9189ce0189dcb3 100644 (file)
@@ -119,6 +119,7 @@ initialize_worker_spi(worktable *table)
    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);
@@ -134,6 +135,7 @@ initialize_worker_spi(worktable *table)
 
    if (ntup == 0)
    {
+       debug_query_string = NULL;
        resetStringInfo(&buf);
        appendStringInfo(&buf,
                         "CREATE SCHEMA \"%s\" "
@@ -147,15 +149,19 @@ initialize_worker_spi(worktable *table)
        /* set statement start time */
        SetCurrentStatementStartTimestamp();
 
+       debug_query_string = buf.data;
        ret = SPI_execute(buf.data, false, 0);
 
        if (ret != SPI_OK_UTILITY)
            elog(FATAL, "failed to create my schema");
+
+       debug_query_string = NULL;  /* rest is not statement-specific */
    }
 
    SPI_finish();
    PopActiveSnapshot();
    CommitTransactionCommand();
+   debug_query_string = NULL;
    pgstat_report_activity(STATE_IDLE, NULL);
 }
 
@@ -262,6 +268,7 @@ worker_spi_main(Datum main_arg)
        StartTransactionCommand();
        SPI_connect();
        PushActiveSnapshot(GetTransactionSnapshot());
+       debug_query_string = buf.data;
        pgstat_report_activity(STATE_RUNNING, buf.data);
 
        /* We can now execute queries via SPI */
@@ -291,6 +298,7 @@ worker_spi_main(Datum main_arg)
        SPI_finish();
        PopActiveSnapshot();
        CommitTransactionCommand();
+       debug_query_string = NULL;
        pgstat_report_stat(false);
        pgstat_report_activity(STATE_IDLE, NULL);
    }