Re: RFC: Logging plan of the running query
От | torikoshia |
---|---|
Тема | Re: RFC: Logging plan of the running query |
Дата | |
Msg-id | da0d42ad12efd9cf13ddbe4c04dbb978@oss.nttdata.com обсуждение исходный текст |
Ответ на | Re: RFC: Logging plan of the running query (Andrey Lepikhov <a.lepikhov@postgrespro.ru>) |
Ответы |
Re: RFC: Logging plan of the running query
|
Список | pgsql-hackers |
On 2023-09-25 18:49, Andrey Lepikhov wrote: > On 25/9/2023 14:21, torikoshia wrote: >> On 2023-09-20 14:39, Lepikhov Andrei wrote: >> Hmm, as a test, I made sure to call ProcessLogQueryPlanInterrupt() on >> all CFI using >> v28-0002-Testing-attempt-logging-plan-on-ever-CFI-call.patch, and then >> ran the following query but did not cause any problems. >> >> ``` >> =# CREATE TABLE test(); >> =# CREATE OR REPLACE FUNCTION ddl() RETURNS void AS $$ >> BEGIN >> EXECUTE format('ALTER TABLE test ADD COLUMN x integer;'); >> PERFORM pg_sleep(5); >> END; $$ LANGUAGE plpgsql VOLATILE; >> =# SELECT ddl(); >> ``` >> >> Is this the case you're worrying about? > > I didn't find a problem either. I just feel uncomfortable if, at the > moment of interruption, we have a descriptor of another query than the > query have been executing and holding resources. I think that "descriptor" here refers to ActiveQueryDesc, in which case it is updated at the beginning of ExecutorRun(), so I am wondering if the situation you're worried about would not occur. --------- @@ -303,10 +306,21 @@ ExecutorRun(QueryDesc *queryDesc, ScanDirection direction, uint64 count, bool execute_once) { + /* + * Update ActiveQueryDesc here to enable retrieval of the currently + * running queryDesc for nested queries. + */ + QueryDesc *save_ActiveQueryDesc; + + save_ActiveQueryDesc = ActiveQueryDesc; + ActiveQueryDesc = queryDesc; --------- -- Regards, -- Atsushi Torikoshi NTT DATA Group Corporation
В списке pgsql-hackers по дате отправления: