Hi,

On 3/24/23 1:04 AM, Michael Paquier wrote:
On Thu, Mar 02, 2023 at 08:39:14AM +0100, Drouvot, Bertrand wrote:
Yeah, there is some dependencies around this one.

[1]: depends on it
Current one depends of [2], [3] and [4]

Waiting on Author is then the right state, thanks for having moved it to that 
state.

[1]: 
https://www.postgresql.org/message-id/flat/f572abe7-a1bb-e13b-48c7-2ca150546...@gmail.com
[2]: 
https://www.postgresql.org/message-id/flat/b9e1f543-ee93-8168-d530-d961708ad...@gmail.com
[3]: 
https://www.postgresql.org/message-id/flat/11d531fe-52fc-c6ea-7e8e-62f1b6ec6...@gmail.com
[4]: 
https://www.postgresql.org/message-id/flat/9142f62a-a422-145c-bde0-b5bc498a4...@gmail.com

[3] and [4] have been applied.

Thanks for your help on this!

 [2] is more sensitive than it looks,
and [1] for the split of index and table stats can feed on the one of
this thread.

Roma wasn't built in one day, and from what I can see you can still do
some progress with the refactoring of pgstatfuncs.c with what's
already on HEAD.  So how about handling doing that first as much as we
can based on the state of HEAD?  That looks like 50~60% (?) of the
original goal to switch pgstatfuncs.c to use more macros to generate
the definition of all these SQL functions.

I think that's a good idea, so please find enclosed V2 which as compare to V1:

- Does not include the refactoring for pg_stat_get_xact_tuples_inserted(), 
pg_stat_get_xact_tuples_updated()
and pg_stat_get_xact_tuples_deleted() (as they depend of [2] mentioned above)

- Does not include the refactoring for pg_stat_get_xact_function_total_time(), 
pg_stat_get_xact_function_self_time(),
pg_stat_get_function_total_time() and pg_stat_get_function_self_time(). I think 
they can be done in a dedicated commit once
we agree on the renaming for PG_STAT_GET_DBENTRY_FLOAT8 (see Andres's comment 
up-thread) so that the new macros can match the future agreement.

- Does include the refactoring of the new 
pg_stat_get_xact_tuples_newpage_updated() function (added in ae4fdde135)

Regards,

--
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com
diff --git a/src/backend/utils/adt/pgstatfuncs.c 
b/src/backend/utils/adt/pgstatfuncs.c
index c7ba86b3dc..e1dd1e0ad3 100644
--- a/src/backend/utils/adt/pgstatfuncs.c
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -1498,50 +1498,42 @@ pg_stat_get_slru(PG_FUNCTION_ARGS)
        return (Datum) 0;
 }
 
-Datum
-pg_stat_get_xact_numscans(PG_FUNCTION_ARGS)
-{
-       Oid                     relid = PG_GETARG_OID(0);
-       int64           result;
-       PgStat_TableStatus *tabentry;
-
-       if ((tabentry = find_tabstat_entry(relid)) == NULL)
-               result = 0;
-       else
-               result = (int64) (tabentry->counts.numscans);
-
-       PG_RETURN_INT64(result);
+#define PG_STAT_GET_XACT_RELENTRY_INT64(stat)                  \
+Datum                                                                          
                        \
+CppConcat(pg_stat_get_xact_,stat)(PG_FUNCTION_ARGS)            \
+{                                                                              
                                \
+       Oid         relid = PG_GETARG_OID(0);                           \
+       int64       result;                                                     
                \
+       PgStat_TableStatus *tabentry;                                           
\
+                                                                               
                                \
+       if ((tabentry = find_tabstat_entry(relid)) == NULL)     \
+               result = 0;                                                     
                        \
+       else                                                                    
                        \
+               result = (int64) (tabentry->counts.stat);               \
+                                                                               
                                \
+       PG_RETURN_INT64(result);                                                
        \
 }
 
-Datum
-pg_stat_get_xact_tuples_returned(PG_FUNCTION_ARGS)
-{
-       Oid                     relid = PG_GETARG_OID(0);
-       int64           result;
-       PgStat_TableStatus *tabentry;
+/* pg_stat_get_xact_numscans */
+PG_STAT_GET_XACT_RELENTRY_INT64(numscans)
 
-       if ((tabentry = find_tabstat_entry(relid)) == NULL)
-               result = 0;
-       else
-               result = (int64) (tabentry->counts.tuples_returned);
+/* pg_stat_get_xact_tuples_returned */
+PG_STAT_GET_XACT_RELENTRY_INT64(tuples_returned)
 
-       PG_RETURN_INT64(result);
-}
+/* pg_stat_get_xact_tuples_fetched */
+PG_STAT_GET_XACT_RELENTRY_INT64(tuples_fetched)
 
-Datum
-pg_stat_get_xact_tuples_fetched(PG_FUNCTION_ARGS)
-{
-       Oid                     relid = PG_GETARG_OID(0);
-       int64           result;
-       PgStat_TableStatus *tabentry;
+/* pg_stat_get_xact_tuples_hot_updated */
+PG_STAT_GET_XACT_RELENTRY_INT64(tuples_hot_updated)
 
-       if ((tabentry = find_tabstat_entry(relid)) == NULL)
-               result = 0;
-       else
-               result = (int64) (tabentry->counts.tuples_fetched);
+/* pg_stat_get_xact_tuples_newpage_updated */
+PG_STAT_GET_XACT_RELENTRY_INT64(tuples_newpage_updated)
 
-       PG_RETURN_INT64(result);
-}
+/* pg_stat_get_xact_blocks_fetched */
+PG_STAT_GET_XACT_RELENTRY_INT64(blocks_fetched)
+
+/* pg_stat_get_xact_blocks_hit */
+PG_STAT_GET_XACT_RELENTRY_INT64(blocks_hit)
 
 Datum
 pg_stat_get_xact_tuples_inserted(PG_FUNCTION_ARGS)
@@ -1606,66 +1598,6 @@ pg_stat_get_xact_tuples_deleted(PG_FUNCTION_ARGS)
        PG_RETURN_INT64(result);
 }
 
-Datum
-pg_stat_get_xact_tuples_hot_updated(PG_FUNCTION_ARGS)
-{
-       Oid                     relid = PG_GETARG_OID(0);
-       int64           result;
-       PgStat_TableStatus *tabentry;
-
-       if ((tabentry = find_tabstat_entry(relid)) == NULL)
-               result = 0;
-       else
-               result = (int64) (tabentry->counts.tuples_hot_updated);
-
-       PG_RETURN_INT64(result);
-}
-
-Datum
-pg_stat_get_xact_tuples_newpage_updated(PG_FUNCTION_ARGS)
-{
-       Oid                     relid = PG_GETARG_OID(0);
-       int64           result;
-       PgStat_TableStatus *tabentry;
-
-       if ((tabentry = find_tabstat_entry(relid)) == NULL)
-               result = 0;
-       else
-               result = (int64) (tabentry->counts.tuples_newpage_updated);
-
-       PG_RETURN_INT64(result);
-}
-
-Datum
-pg_stat_get_xact_blocks_fetched(PG_FUNCTION_ARGS)
-{
-       Oid                     relid = PG_GETARG_OID(0);
-       int64           result;
-       PgStat_TableStatus *tabentry;
-
-       if ((tabentry = find_tabstat_entry(relid)) == NULL)
-               result = 0;
-       else
-               result = (int64) (tabentry->counts.blocks_fetched);
-
-       PG_RETURN_INT64(result);
-}
-
-Datum
-pg_stat_get_xact_blocks_hit(PG_FUNCTION_ARGS)
-{
-       Oid                     relid = PG_GETARG_OID(0);
-       int64           result;
-       PgStat_TableStatus *tabentry;
-
-       if ((tabentry = find_tabstat_entry(relid)) == NULL)
-               result = 0;
-       else
-               result = (int64) (tabentry->counts.blocks_hit);
-
-       PG_RETURN_INT64(result);
-}
-
 Datum
 pg_stat_get_xact_function_calls(PG_FUNCTION_ARGS)
 {

Reply via email to