> > postgres_fdw, as an example, in which cursor name get reused
> > for different queries. Notice below "c1" and "c2" is reused for different
> > queries, so now what underlying sql is FETCH, i.e. FETCH 100 FROM c1 
> > referring
> > to? v2-0001 does not help us with the FETCH problem
> > because as I mentioned we don't have access to the underlying sql
> > ( and parsing is even too early to do a portal lookup to find the
> > underlying sql to
> > base the queryId on). What v2-0001 will do is at least group the DECLARE 
> > CURSOR
> > statements together for cursors referencing the same query and reduce the #
> > of entries.
>
> This case relies on postgres_fdw's GetCursorNumber() that assigns a
> unique number for a cursor, ensuring uniqueness per connection within
> a transaction, and the counter is reset at the end of the
> transactions.  So good point for this case that this hurts.  If that
> holds for the most common cases where this is seen as bloating pgss,
> that brings some solid ground, especially more for applications that
> use many cursor numbers in long-ish transactions states done under
> postgres_fdw.

Sorry for the delayed response. I’ve been thinking about this a bit, and
I agree that it’s really hard to get a good sense of the use cases out there.

postgres_fdw does have the issue of reusing cursor names, which renders
the stats essentially meaningless, in my opinion—not to mention it contributes
to excessive bloat. Looking at a driver like psycopg, explicit cursors
are supported
through the driver, but the user must define the name of the cursor,
so it's much
more controlled.

I really wonder if the right answer is to have a
pg_stat_statements.track_cursor_utility GUC that can toggle the
reporting of utility statements related to explicit cursors, while
still tracking the
underlying statements. I would even suggest making 'on' the default to
maintain the current behavior.

I don’t like that we have to introduce a new GUC for this,
but I can't think of a better alternative.

Thoughts?

--
Sami Imseih
Amazon Web Services (AWS)


Reply via email to