Re: Passing query string to workers

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Rafia Sabih <rafia(dot)sabih(at)enterprisedb(dot)com>
Cc: PostgreSQL Developers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Passing query string to workers
Date: 2017-01-11 12:37:40
Message-ID: 13030.1484138260@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Rafia Sabih <rafia(dot)sabih(at)enterprisedb(dot)com> writes:
> Approach:
> A token for query string is created in the shared memory, this token is
> populated with the query string using the global string --
> debug_query_string. Now, for each of the worker when
> ExecGetParallelQueryDesc is called, we retrieve the query text from shared
> memory and pass it to CreateQueryDesc.

This is simply wrong, because debug_query_string need have nothing to do
with what the actual parallel query is. I'm all for sending over the
correct query, but if you aren't bothering to accurately reproduce the
master's query descriptor, I think you will increase confusion not
reduce it.

As far as reproducing the pg_stat_activity query goes, you could probably
grab that string out of the master backend's pgstat entry and pass it over
at parallel query start. But please don't confuse it with either
debug_query_string or the string referenced by the QueryDesc; I do not
think there's any guarantee that those are the same.

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2017-01-11 12:46:20 Re: Do we support using agg or window functions in delete statement?
Previous Message Beena Emerson 2017-01-11 12:36:00 Re: Re: Clarifying "server starting" messaging in pg_ctl start without --wait