Thomas Munro <thomas.mu...@enterprisedb.com> writes: > One problem is that pgss_planner_hook doesn't have the source query > text. That problem could be solved by adding a query_string argument > to the planner hook function type and also planner(), > standard_planner(), pg_plan_query(), pg_plan_queries(). I don't know > if that change would be acceptable or if there is a better way that > doesn't change extern functions that will annoy extension owners.
Within the planner, I'd be inclined to store the query string pointer in PlannerGlobal (which is accessible from PlannerInfo "root"), but I'm not sure how many of the functions you mention would still need an explicit signature change. Anyway that doesn't particularly bother me --- it's something that might need to happen anyway, if we ever hope to throw errors with location pointers from inside the planner. > Something I wondered about but didn't try: we could skip the above > problem AND the extra pgss_store() by instead pushing (query ID, > planning time) into a backend-private buffer and then later pushing it > into shmem when we eventually call pgss_store() for the execution > counters. Meh. Part of the reason I don't like what you submitted before is that it supposes there's a mostly one-to-one relationship between planner calls and executor calls; which there is not, when you start considering edge cases like prepared statements. A global would make that worse. > Unfortunately I'm not going to have bandwidth to figure this out > during this commitfest due to other priorities so I'm going to call > this "returned with feedback". OK. There's still time to get it done in the March 'fest. regards, tom lane