At Thu, 13 May 2021 12:33:47 +0800, Julien Rouhaud <rjuju...@gmail.com> wrote in > Le jeu. 13 mai 2021 à 12:26, Kyotaro Horiguchi <horikyota....@gmail.com> a > écrit : > > > At Thu, 13 May 2021 12:11:12 +0900 (JST), Kyotaro Horiguchi < > > horikyota....@gmail.com> wrote in > > pg_stat_statemnts defines its own query-id provider function in > > pg_stat_statements which calls in-core DefaultJumbeQuery (end emits a > > log line). > > > > If server started with query_id_provider='auto' and pg_stat_statements > > is not loaded, pg_stat_activity.query_id is null. > > > > If query_id_provider='auto' and pg_stat_statements is loaded, > > pg_stat_activity.query_id is filled in with a query id. > > > > If query_id_provider='default' or 'pg_stat_statements' and > > pg_stat_statements is not loaded, pg_stat_activity.query_id is filled > > in with a query id. > > > > If query_id_provider='none' and pg_stat_statements is loaded, it > > complains as "query id provider is not available" and refuss to start. > > > > If showing the variable, it shows the real provider name instead of > > the setting in postgresql.conf. > > > > what if you want to have some other extensions like pg_stat_kcache or > pg_store_plans that need a query_id but don't really care if > pg_stat_statements is enabled or not? should they all declare their own
Thanks for looking it. The addtional provider function in pg_stat_statements is just an example to show what if it needs its own query-id provider, which is useless in reality. In reality pg_stat_statements just calls "queryIdWanted("default", true)" to use any query-id provider and use the in-core one as the fallback implement, and no need to define its own one. Any extension can use the in-core provider and accepting any other ones by calling queryIdWanted("default", true) then get what they want regardless of existence of pg_stat_statements. > wrapper too? should the system complain or silently ignore when they all > try to install their provider function? Of course if two extensions require diffrent query-id providers, they just cannot coexist (that is, server refuses to start). It is quite sane behavior in the standpoint of safety. I think almost all query-id users don't insist on a specific implmentation. (So the second parameter to queryIdWanted() could be omtted and assumed to be true.) reagrds. -- Kyotaro Horiguchi NTT Open Source Software Center