On 2020-Feb-29, Mark Dilger wrote:

> You may want to think about the embedding of InvalidOid into the EndCommand 
> output differently from how you think about the embedding of the rowcount 
> into the EndCommand output, but my preference is to treat these issues the 
> same and make a strong distinction between the commandtag and the embedded 
> oid and/or rowcount.  It's hard to say how many future features would be 
> crippled by having the embedded InvalidOid in the commandtag, but as an 
> example *right now* in the works, we have a feature to count how many 
> commands of a given type have been executed.  It stands to reason that 
> feature, whether accepted in its current form or refactored, would not want 
> to show users a pg_stats table like this:
> 
>    cnt   command
>    ----   -------------
>    5    INSERT 0
>    37  SELECT
>       
> What the heck is the zero doing after the INSERT?  That's the hardcoded 
> InvalidOid that you are apparently arguing for.  You could get around that by 
> having the pg_sql_stats patch have its own separate set of command tag 
> strings, but why would we intentionally design that sort of duplication into 
> the solution?

This is what I think Tom means to use in EndCommand:

            if (command_tag_display_rowcount(tag) && !force_undecorated_output)
                snprintf(completionTag, COMPLETION_TAG_BUFSIZE,
                         tag == CMDTAG_INSERT ?
                         "%s 0 " UINT64_FORMAT : "%s " UINT64_FORMAT,
                         tagname, qc->nprocessed);
            else
                ... no rowcount ...

The point is not to change the returned tag in any way -- just to make
the method to arrive at it not involve the additional data column in the
data file, instead hardcode the behavior in EndCommand.  I don't
understand your point of pg_stats_sql having to deal with this in a
particular way.  How is that patch obtaining the command tags?  I would
hope it calls GetCommandTagName() rather than call CommandEnd, but maybe
I misunderstand where it hooks.

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


Reply via email to