From bb6f2fafa0c11289be79edb6076d9a08684d148f Mon Sep 17 00:00:00 2001 From: robin Date: Mon, 9 Jan 2023 18:27:07 +0900 Subject: [PATCH 01/26] PG-564: Added a column to display bind variables when used with the normalized_query option. --- Makefile | 2 ++ guc.c | 13 ++++++++++++ pg_stat_monitor--2.0.sql | 6 +++++- pg_stat_monitor.c | 46 ++++++++++++++++++++++++++++++++++------ pg_stat_monitor.h | 7 ++++-- 5 files changed, 65 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 48c64eaf..1b4a6494 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,8 @@ PGFILEDESC = "pg_stat_monitor - execution statistics of SQL statements" LDFLAGS_SL += $(filter -lm, $(LIBS)) +PG_CPPFLAGS += -std=c99 -g -ggdb + TAP_TESTS = 1 REGRESS_OPTS = --temp-config $(top_srcdir)/contrib/pg_stat_monitor/pg_stat_monitor.conf --inputdir=regression REGRESS = basic version guc pgsm_query_id functions counters relations database error_insert application_name application_name_unique top_query cmd_type error rows tags diff --git a/guc.c b/guc.c index 6bab2d5a..1bbe7ea6 100644 --- a/guc.c +++ b/guc.c @@ -237,6 +237,19 @@ init_guc(void) .guc_value = &PGSM_TRACK_PLANNING }; DefineBoolGUC(&conf[i++]); + + conf[i] = (GucVariable) + { + .guc_name = "pg_stat_monitor.pgsm_extract_bind_variables", + .guc_desc = "Selects whether extracting bind variables from queries.", + .guc_default = 0, + .guc_min = 0, + .guc_max = 0, + .guc_restart = false, + .guc_unit = 0, + .guc_value = &PGSM_EXTRACT_VARIABLES + }; + DefineBoolGUC(&conf[i++]); #endif } diff --git a/pg_stat_monitor--2.0.sql b/pg_stat_monitor--2.0.sql index 8f2cc735..55a707ba 100644 --- a/pg_stat_monitor--2.0.sql +++ b/pg_stat_monitor--2.0.sql @@ -95,7 +95,7 @@ CREATE FUNCTION pg_stat_monitor_internal( OUT top_queryid text, OUT top_query text, OUT application_name text, - + OUT bind_variables text, OUT relations text, -- 11 OUT cmd_type int, OUT elevel int, @@ -180,6 +180,7 @@ CREATE VIEW pg_stat_monitor AS SELECT query_plan, top_query, application_name, + bind_variables, string_to_array(relations, ',') AS relations, cmd_type, get_cmd_type(cmd_type) AS cmd_type_text, @@ -235,6 +236,7 @@ CREATE VIEW pg_stat_monitor AS SELECT query_plan, top_query, application_name, + bind_variables, string_to_array(relations, ',') AS relations, cmd_type, get_cmd_type(cmd_type) AS cmd_type_text, @@ -299,6 +301,7 @@ CREATE VIEW pg_stat_monitor AS SELECT query_plan, top_query, application_name, + bind_variables, string_to_array(relations, ',') AS relations, cmd_type, get_cmd_type(cmd_type) AS cmd_type_text, @@ -363,6 +366,7 @@ CREATE VIEW pg_stat_monitor AS SELECT query_plan, top_query, application_name, + bind_variables, string_to_array(relations, ',') AS relations, cmd_type, get_cmd_type(cmd_type) AS cmd_type_text, diff --git a/pg_stat_monitor.c b/pg_stat_monitor.c index 6be35684..38f64040 100644 --- a/pg_stat_monitor.c +++ b/pg_stat_monitor.c @@ -39,8 +39,8 @@ PG_MODULE_MAGIC; /* Number of output arguments (columns) for various API versions */ #define PG_STAT_MONITOR_COLS_V1_0 52 -#define PG_STAT_MONITOR_COLS_V2_0 62 -#define PG_STAT_MONITOR_COLS 62 /* maximum of above */ +#define PG_STAT_MONITOR_COLS_V2_0 63 +#define PG_STAT_MONITOR_COLS 63 /* maximum of above */ #define PGSM_TEXT_FILE PGSTAT_STAT_PERMANENT_DIRECTORY "pg_stat_monitor_query" @@ -214,7 +214,8 @@ static const char *CleanQuerytext(const char *query, int *location, int *len); #endif static char *generate_normalized_query(JumbleState *jstate, const char *query, - int query_loc, int *query_len_p, int encoding); + int query_loc, int *query_len_p, int encoding, + char* bind_variables, int *bind_var_len_p); static void fill_in_constant_lengths(JumbleState *jstate, const char *query, int query_loc); static int comp_location(const void *a, const void *b); @@ -1155,6 +1156,7 @@ pgss_update_entry(pgssEntry *entry, uint64 queryid, const char *query, const char *comments, + const char *bind_variables, PlanInfo * plan_info, CmdType cmd_type, SysInfo * sys_info, @@ -1173,6 +1175,7 @@ pgss_update_entry(pgssEntry *entry, double old_mean; int message_len = error_info ? strlen(error_info->message) : 0; int comments_len = comments ? strlen(comments) : 0; + int bind_variables_len = bind_variables ? strlen(bind_variables): 0; int sqlcode_len = error_info ? strlen(error_info->sqlcode) : 0; int plan_text_len = plan_info ? plan_info->plan_len : 0; @@ -1246,6 +1249,9 @@ pgss_update_entry(pgssEntry *entry, if (plan_text_len > 0 && !e->counters.planinfo.plan_text[0]) _snprintf(e->counters.planinfo.plan_text, plan_info->plan_text, plan_text_len + 1, PLAN_TEXT_LEN); + if (bind_variables_len > 0 && !e->counters.info.bind_variables[0]) + _snprintf(e->counters.info.bind_variables, bind_variables, bind_variables_len + 1, VAR_LEN); + if (app_name_len > 0 && !e->counters.info.application_name[0]) _snprintf(e->counters.info.application_name, app_name, app_name_len + 1, APPLICATIONNAME_LEN); @@ -1395,6 +1401,9 @@ pgss_store(uint64 queryid, int norm_query_len = 0; char *norm_query = NULL; char comments[512] = ""; + char bind_variables[VAR_LEN] = ""; + char *bind_variables_ptr = &bind_variables[0]; + int bind_var_len = 0; bool found_app_name = false; bool found_client_addr = false; uint client_addr = 0; @@ -1514,7 +1523,9 @@ pgss_store(uint64 queryid, norm_query = generate_normalized_query(jstate, query, query_location, &norm_query_len, - GetDatabaseEncoding()); + GetDatabaseEncoding(), + bind_variables_ptr, + &bind_var_len); LWLockAcquire(pgss->lock, LW_SHARED); pgsm_query_id = pgss_hash_string(norm_query, norm_query_len); @@ -1599,12 +1610,13 @@ pgss_store(uint64 queryid, entry->pgsm_query_id = pgsm_query_id; } - if (jstate == NULL) + if (jstate == NULL || (PGSM_EXTRACT_VARIABLES && bind_var_len > 0)) pgss_update_entry(entry, /* entry */ bucketid, /* bucketid */ queryid, /* queryid */ query, /* query */ comments, /* comments */ + bind_variables_ptr, /* bind variables */ plan_info, /* PlanInfo */ cmd_type, /* CmdType */ sys_info, /* SysInfo */ @@ -1904,6 +1916,12 @@ pg_stat_monitor_internal(FunctionCallInfo fcinfo, else nulls[i++] = true; + /* bind_variables at column number 48 */ + if (strlen(tmp.info.bind_variables) > 0) + values[i++] = CStringGetTextDatum(tmp.info.bind_variables); + else + nulls[i++] = true; + /* relations at column number 10 */ if (tmp.info.num_relations > 0) { @@ -2917,15 +2935,18 @@ CleanQuerytext(const char *query, int *location, int *len) */ static char * generate_normalized_query(JumbleState *jstate, const char *query, - int query_loc, int *query_len_p, int encoding) + int query_loc, int *query_len_p, int encoding, + char* bind_variables, int *bind_var_len_p) { char *norm_query; int query_len = *query_len_p; + int bind_var_len; int i, norm_query_buflen, /* Space allowed for norm_query */ len_to_wrt, /* Length (in bytes) to write */ quer_loc = 0, /* Source query byte location */ n_quer_loc = 0, /* Normalized query byte location */ + n_var_loc = 0, /* bind_variables byte location */ last_off = 0, /* Offset from start for previous tok */ last_tok_len = 0; /* Length (in bytes) of that tok */ @@ -2976,6 +2997,13 @@ generate_normalized_query(JumbleState *jstate, const char *query, quer_loc = off + tok_len; last_off = off; last_tok_len = tok_len; + + if (PGSM_EXTRACT_VARIABLES){ + memcpy(bind_variables + n_var_loc, query + quer_loc - tok_len, tok_len); + n_var_loc += tok_len; + memcpy(bind_variables + n_var_loc , ",", 1); + n_var_loc ++; + } } /* @@ -2992,6 +3020,12 @@ generate_normalized_query(JumbleState *jstate, const char *query, norm_query[n_quer_loc] = '\0'; *query_len_p = n_quer_loc; + + if (PGSM_EXTRACT_VARIABLES){ + bind_var_len = n_var_loc-1; + bind_variables[bind_var_len] = '\0'; + *bind_var_len_p = bind_var_len; + } return norm_query; } diff --git a/pg_stat_monitor.h b/pg_stat_monitor.h index 2c708c4f..2ab266b1 100644 --- a/pg_stat_monitor.h +++ b/pg_stat_monitor.h @@ -83,6 +83,7 @@ #define COMMENTS_LEN 512 #define PGSM_OVER_FLOW_MAX 10 #define PLAN_TEXT_LEN 1024 +#define VAR_LEN COMMENTS_LEN /* the assumption of query max nested level */ #define DEFAULT_MAX_NESTED_LEVEL 10 @@ -96,9 +97,9 @@ #define SQLCODE_LEN 20 #if PG_VERSION_NUM >= 130000 -#define MAX_SETTINGS 15 +#define MAX_SETTINGS 16 #else -#define MAX_SETTINGS 14 +#define MAX_SETTINGS 15 #endif /* Update this if need a enum GUC with more options. */ @@ -219,6 +220,7 @@ typedef struct QueryInfo int64 type; /* type of query, options are query, info, * warning, error, fatal */ char application_name[APPLICATIONNAME_LEN]; + char bind_variables[VAR_LEN]; char comments[COMMENTS_LEN]; char relations[REL_LST][REL_LEN]; /* List of relation involved * in the query */ @@ -474,6 +476,7 @@ static const struct config_enum_entry track_options[] = #define PGSM_TRACK get_conf(12)->guc_variable #define PGSM_EXTRACT_COMMENTS get_conf(13)->guc_variable #define PGSM_TRACK_PLANNING get_conf(14)->guc_variable +#define PGSM_EXTRACT_VARIABLES get_conf(15)->guc_variable #define DECLARE_HOOK(hook, ...) \ static hook(__VA_ARGS__); From ae7bbc326a5c498ef8a71f3b266ade4262a1fb53 Mon Sep 17 00:00:00 2001 From: robin Date: Mon, 16 Jan 2023 15:11:47 +0900 Subject: [PATCH 02/26] PG-564: Added a column to display bind variables when used with the normalized_query option.\n add regression test --- pg_stat_monitor.c | 3 ++- regression/expected/guc_2.out | 39 +++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 regression/expected/guc_2.out diff --git a/pg_stat_monitor.c b/pg_stat_monitor.c index 38f64040..10a099f8 100644 --- a/pg_stat_monitor.c +++ b/pg_stat_monitor.c @@ -3002,7 +3002,8 @@ generate_normalized_query(JumbleState *jstate, const char *query, memcpy(bind_variables + n_var_loc, query + quer_loc - tok_len, tok_len); n_var_loc += tok_len; memcpy(bind_variables + n_var_loc , ",", 1); - n_var_loc ++; + if (++n_var_loc >= VAR_LEN-1) + break; } } diff --git a/regression/expected/guc_2.out b/regression/expected/guc_2.out new file mode 100644 index 00000000..64872da9 --- /dev/null +++ b/regression/expected/guc_2.out @@ -0,0 +1,39 @@ +CREATE EXTENSION pg_stat_monitor; +SELECT name + , setting + , unit + , context + , vartype + , source + , min_val + , max_val + , enumvals + , boot_val + , reset_val + , pending_restart +FROM pg_settings +WHERE name LIKE 'pg_stat_monitor.%' +ORDER +BY name +COLLATE "C"; + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart +---------------------------------------------+---------+------+------------+---------+--------------------+---------+------------+----------------+----------+-----------+----------------- + pg_stat_monitor.pgsm_bucket_time | 60 | | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f + pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | configuration file | | | | off | off | f + pg_stat_monitor.pgsm_extract_bind_variables | off | | user | bool | configuration file | | | | off | off | f + pg_stat_monitor.pgsm_extract_comments | off | | user | bool | configuration file | | | | off | off | f + pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f + pg_stat_monitor.pgsm_histogram_max | 100000 | | postmaster | integer | default | 10 | 2147483647 | | 100000 | 100000 | f + pg_stat_monitor.pgsm_histogram_min | 1 | | postmaster | integer | default | 0 | 2147483647 | | 1 | 1 | f + pg_stat_monitor.pgsm_max | 100 | MB | postmaster | integer | default | 1 | 1000 | | 100 | 100 | f + pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 10 | | 10 | 10 | f + pg_stat_monitor.pgsm_normalized_query | off | | user | bool | configuration file | | | | off | off | f + pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f + pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f + pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f + pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f + pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f +(16 rows) + +DROP EXTENSION pg_stat_monitor; From 18bd18f5a365961ecd8d40676b9ac8bfd332938e Mon Sep 17 00:00:00 2001 From: robin Date: Fri, 20 Jan 2023 13:42:44 +0900 Subject: [PATCH 03/26] PG-564: fix the memory overflow --- pg_stat_monitor.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/pg_stat_monitor.c b/pg_stat_monitor.c index 10a099f8..a046311d 100644 --- a/pg_stat_monitor.c +++ b/pg_stat_monitor.c @@ -2999,11 +2999,13 @@ generate_normalized_query(JumbleState *jstate, const char *query, last_tok_len = tok_len; if (PGSM_EXTRACT_VARIABLES){ - memcpy(bind_variables + n_var_loc, query + quer_loc - tok_len, tok_len); - n_var_loc += tok_len; - memcpy(bind_variables + n_var_loc , ",", 1); - if (++n_var_loc >= VAR_LEN-1) - break; + if (n_var_loc+tok_len + 1 < VAR_LEN-1){ + memcpy(bind_variables + n_var_loc, query + quer_loc - tok_len, tok_len); + n_var_loc += tok_len; + memcpy(bind_variables + n_var_loc , ",", 1); + n_var_loc ++; + } + } } From e5669ff8560797dcd9c2eefdeecc9dea5c21dcd6 Mon Sep 17 00:00:00 2001 From: robin Date: Tue, 7 Feb 2023 15:30:36 +0900 Subject: [PATCH 04/26] PG-564: Added TAP test for bind parameter. update pg_stat_monitor-1.0-2.0.sql --- pg_stat_monitor--1.0--2.0.sql | 6 +- regression/expected/guc_2.out | 36 +++--- t/030_settings_pgms_extract_bind_variables.pl | 114 ++++++++++++++++++ ...0_settings_pgms_extract_bind_variables.out | 81 +++++++++++++ 4 files changed, 218 insertions(+), 19 deletions(-) create mode 100644 t/030_settings_pgms_extract_bind_variables.pl create mode 100644 t/expected/030_settings_pgms_extract_bind_variables.out diff --git a/pg_stat_monitor--1.0--2.0.sql b/pg_stat_monitor--1.0--2.0.sql index 7143f58e..b70810e3 100644 --- a/pg_stat_monitor--1.0--2.0.sql +++ b/pg_stat_monitor--1.0--2.0.sql @@ -26,7 +26,7 @@ CREATE FUNCTION pg_stat_monitor_internal( OUT top_queryid text, OUT top_query text, OUT application_name text, - + OUT bind_variables text, OUT relations text, -- 11 OUT cmd_type int, OUT elevel int, @@ -111,6 +111,7 @@ CREATE VIEW pg_stat_monitor AS SELECT query_plan, top_query, application_name, + bind_variables, string_to_array(relations, ',') AS relations, cmd_type, get_cmd_type(cmd_type) AS cmd_type_text, @@ -166,6 +167,7 @@ CREATE VIEW pg_stat_monitor AS SELECT query_plan, top_query, application_name, + bind_variables, string_to_array(relations, ',') AS relations, cmd_type, get_cmd_type(cmd_type) AS cmd_type_text, @@ -228,6 +230,7 @@ CREATE VIEW pg_stat_monitor AS SELECT query_plan, top_query, application_name, + bind_variables, string_to_array(relations, ',') AS relations, cmd_type, get_cmd_type(cmd_type) AS cmd_type_text, @@ -291,6 +294,7 @@ CREATE VIEW pg_stat_monitor AS SELECT query_plan, top_query, application_name, + bind_variables, string_to_array(relations, ',') AS relations, cmd_type, get_cmd_type(cmd_type) AS cmd_type_text, diff --git a/regression/expected/guc_2.out b/regression/expected/guc_2.out index 64872da9..a66003cb 100644 --- a/regression/expected/guc_2.out +++ b/regression/expected/guc_2.out @@ -16,24 +16,24 @@ WHERE name LIKE 'pg_stat_monitor.%' ORDER BY name COLLATE "C"; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart ----------------------------------------------+---------+------+------------+---------+--------------------+---------+------------+----------------+----------+-----------+----------------- - pg_stat_monitor.pgsm_bucket_time | 60 | | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f - pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | configuration file | | | | off | off | f - pg_stat_monitor.pgsm_extract_bind_variables | off | | user | bool | configuration file | | | | off | off | f - pg_stat_monitor.pgsm_extract_comments | off | | user | bool | configuration file | | | | off | off | f - pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f - pg_stat_monitor.pgsm_histogram_max | 100000 | | postmaster | integer | default | 10 | 2147483647 | | 100000 | 100000 | f - pg_stat_monitor.pgsm_histogram_min | 1 | | postmaster | integer | default | 0 | 2147483647 | | 1 | 1 | f - pg_stat_monitor.pgsm_max | 100 | MB | postmaster | integer | default | 1 | 1000 | | 100 | 100 | f - pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 10 | | 10 | 10 | f - pg_stat_monitor.pgsm_normalized_query | off | | user | bool | configuration file | | | | off | off | f - pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f - pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f - pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f - pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f - pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart +---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- + pg_stat_monitor.pgsm_bucket_time | 60 | | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f + pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_bind_variables | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f + pg_stat_monitor.pgsm_histogram_max | 100000 | | postmaster | integer | default | 10 | 2147483647 | | 100000 | 100000 | f + pg_stat_monitor.pgsm_histogram_min | 1 | | postmaster | integer | default | 0 | 2147483647 | | 1 | 1 | f + pg_stat_monitor.pgsm_max | 100 | MB | postmaster | integer | default | 1 | 1000 | | 100 | 100 | f + pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 10 | | 10 | 10 | f + pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f + pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f + pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f + pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f + pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f (16 rows) DROP EXTENSION pg_stat_monitor; diff --git a/t/030_settings_pgms_extract_bind_variables.pl b/t/030_settings_pgms_extract_bind_variables.pl new file mode 100644 index 00000000..a0e3bf94 --- /dev/null +++ b/t/030_settings_pgms_extract_bind_variables.pl @@ -0,0 +1,114 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use File::Basename; +use File::Compare; +use File::Copy; +use String::Util qw(trim); +use Test::More; +use lib 't'; +use pgsm; + +# Get file name and CREATE out file name and dirs WHERE requried +PGSM::setup_files_dir(basename($0)); + +# CREATE new PostgreSQL node and do initdb +my $node = PGSM->pgsm_init_pg(); +my $pgdata = $node->data_dir; + +# UPDATE postgresql.conf to include/load pg_stat_monitor library +open my $conf, '>>', "$pgdata/postgresql.conf"; +print $conf "shared_preload_libraries = 'pg_stat_monitor'\n"; +print $conf "pg_stat_monitor.pgsm_normalized_query = 'no'\n"; +print $conf "pg_stat_monitor.pgsm_extract_bind_variables = 'no'\n"; +close $conf; + +# Start server +my $rt_value = $node->start; +ok($rt_value == 1, "Start Server"); + +# CREATE EXTENSION and change out file permissions +my ($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE EXTENSION pg_stat_monitor;', extra_params => ['-a']); +ok($cmdret == 0, "CREATE PGSM EXTENSION"); +PGSM::append_to_file($stdout); + +# Run required commands/queries and dump output to out file. +($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT pg_stat_monitor_reset();', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']); +ok($cmdret == 0, "Reset PGSM EXTENSION"); +PGSM::append_to_file($stdout); + +($cmdret, $stdout, $stderr) = $node->psql('postgres', "SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name in ('pg_stat_monitor.pgsm_normalized_query', 'pg_stat_monitor.pgsm_extract_bind_variables');", extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']); +ok($cmdret == 0, "Print PGSM EXTENSION Settings"); +PGSM::append_to_file($stdout); + +($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE TABLE TBL_0(key text primary key, txt_0 text, value_0 int);', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']); +PGSM::append_to_file($stdout); + +($cmdret, $stdout, $stderr) = $node->psql('postgres', "INSERT INTO TBL_0(key, txt_0, value_0) VALUES('000000', '846930886', 1804289383);", extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']); +PGSM::append_to_file($stdout); + +($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT key, txt_0, value_0 FROM TBL_0;', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']); +PGSM::append_to_file($stdout); + +($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT key, txt_0, value_0 FROM TBL_0;', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']); +PGSM::append_to_file($stdout); + +($cmdret, $stdout, $stderr) = $node->psql('postgres', 'UPDATE TBL_0 SET value_0 = 1681692777;', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']); +PGSM::append_to_file($stdout); + +($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT datname, substr(query,0,100) AS query, calls, bind_variables FROM pg_stat_monitor ORDER BY datname, query, calls DESC Limit 20;', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']); +ok($cmdret == 0, "SELECT XXX FROM pg_stat_monitor"); +PGSM::append_to_file($stdout); + +$node->append_conf('postgresql.conf', "pg_stat_monitor.pgsm_normalized_query = 'yes'\n"); +$node->append_conf('postgresql.conf', "pg_stat_monitor.pgsm_extract_bind_variables = 'yes'\n"); +$node->restart(); + +# Run required commands/queries and dump output to out file. +($cmdret, $stdout, $stderr) = $node->psql('postgres', 'DROP TABLE TBL_0;', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']); +PGSM::append_to_file($stdout); + +($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT pg_stat_monitor_reset();', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']); +ok($cmdret == 0, "Reset PGSM EXTENSION"); +PGSM::append_to_file($stdout); + +($cmdret, $stdout, $stderr) = $node->psql('postgres', "SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name in ('pg_stat_monitor.pgsm_normalized_query', 'pg_stat_monitor.pgsm_extract_bind_variables');", extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']); +ok($cmdret == 0, "Print PGSM EXTENSION Settings"); +PGSM::append_to_file($stdout); + +($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE TABLE TBL_0(key text primary key, txt_0 text, value_0 int);', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']); +PGSM::append_to_file($stdout); + +($cmdret, $stdout, $stderr) = $node->psql('postgres', "INSERT INTO TBL_0(key, txt_0, value_0) VALUES('000000', '846930886', 1804289383);", extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']); +PGSM::append_to_file($stdout); + +($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT key, txt_0, value_0 FROM TBL_0;', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']); +PGSM::append_to_file($stdout); + +($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT key, txt_0, value_0 FROM TBL_0;', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']); +PGSM::append_to_file($stdout); + +($cmdret, $stdout, $stderr) = $node->psql('postgres', 'UPDATE TBL_0 SET value_0 = 1681692777;', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']); +PGSM::append_to_file($stdout); + +($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT datname, substr(query,0,100) AS query, calls, bind_variables FROM pg_stat_monitor ORDER BY datname, query, calls DESC Limit 20;', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']); +ok($cmdret == 0, "SELECT XXX FROM pg_stat_monitor"); +PGSM::append_to_file($stdout); + +# DROP EXTENSION +$stdout = $node->safe_psql('postgres', 'DROP EXTENSION pg_stat_monitor;', extra_params => ['-a']); +ok($cmdret == 0, "DROP PGSM EXTENSION"); +PGSM::append_to_file($stdout); + +# Stop the server +$node->stop; + +# compare the expected and out file +my $compare = PGSM->compare_results(); + +# Test/check if expected and result/out file match. If Yes, test passes. +is($compare,0,"Compare Files: $PGSM::expected_filename_with_path and $PGSM::out_filename_with_path files."); + +# Done testing for this testcase file. +done_testing(); diff --git a/t/expected/030_settings_pgms_extract_bind_variables.out b/t/expected/030_settings_pgms_extract_bind_variables.out new file mode 100644 index 00000000..c6699fe9 --- /dev/null +++ b/t/expected/030_settings_pgms_extract_bind_variables.out @@ -0,0 +1,81 @@ +CREATE EXTENSION pg_stat_monitor; +SELECT pg_stat_monitor_reset(); + pg_stat_monitor_reset +----------------------- + +(1 row) + +SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name in ('pg_stat_monitor.pgsm_normalized_query', 'pg_stat_monitor.pgsm_extract_bind_variables'); + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart +---------------------------------------------+---------+------+---------+---------+--------------------+---------+---------+----------+----------+-----------+----------------- + pg_stat_monitor.pgsm_extract_bind_variables | off | | user | bool | configuration file | | | | off | off | f + pg_stat_monitor.pgsm_normalized_query | off | | user | bool | configuration file | | | | off | off | f +(2 rows) + +CREATE TABLE TBL_0(key text primary key, txt_0 text, value_0 int); +INSERT INTO TBL_0(key, txt_0, value_0) VALUES('000000', '846930886', 1804289383); +SELECT key, txt_0, value_0 FROM TBL_0; + key | txt_0 | value_0 +--------+-----------+------------ + 000000 | 846930886 | 1804289383 +(1 row) + +SELECT key, txt_0, value_0 FROM TBL_0; + key | txt_0 | value_0 +--------+-----------+------------ + 000000 | 846930886 | 1804289383 +(1 row) + +UPDATE TBL_0 SET value_0 = 1681692777; +SELECT datname, substr(query,0,100) AS query, calls, bind_variables FROM pg_stat_monitor ORDER BY datname, query, calls DESC Limit 20; + datname | query | calls | bind_variables +----------+-----------------------------------------------------------------------------------------------------+-------+---------------- + postgres | CREATE TABLE TBL_0(key text primary key, txt_0 text, value_0 int) | 1 | + postgres | INSERT INTO TBL_0(key, txt_0, value_0) VALUES('000000', '846930886', 1804289383) | 1 | + postgres | SELECT key, txt_0, value_0 FROM TBL_0 | 2 | + postgres | SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_v | 1 | + postgres | SELECT pg_stat_monitor_reset() | 1 | + postgres | UPDATE TBL_0 SET value_0 = 1681692777 | 1 | +(6 rows) + +DROP TABLE TBL_0; +SELECT pg_stat_monitor_reset(); + pg_stat_monitor_reset +----------------------- + +(1 row) + +SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name in ('pg_stat_monitor.pgsm_normalized_query', 'pg_stat_monitor.pgsm_extract_bind_variables'); + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart +---------------------------------------------+---------+------+---------+---------+--------------------+---------+---------+----------+----------+-----------+----------------- + pg_stat_monitor.pgsm_extract_bind_variables | on | | user | bool | configuration file | | | | off | on | f + pg_stat_monitor.pgsm_normalized_query | on | | user | bool | configuration file | | | | off | on | f +(2 rows) + +CREATE TABLE TBL_0(key text primary key, txt_0 text, value_0 int); +INSERT INTO TBL_0(key, txt_0, value_0) VALUES('000000', '846930886', 1804289383); +SELECT key, txt_0, value_0 FROM TBL_0; + key | txt_0 | value_0 +--------+-----------+------------ + 000000 | 846930886 | 1804289383 +(1 row) + +SELECT key, txt_0, value_0 FROM TBL_0; + key | txt_0 | value_0 +--------+-----------+------------ + 000000 | 846930886 | 1804289383 +(1 row) + +UPDATE TBL_0 SET value_0 = 1681692777; +SELECT datname, substr(query,0,100) AS query, calls, bind_variables FROM pg_stat_monitor ORDER BY datname, query, calls DESC Limit 20; + datname | query | calls | bind_variables +----------+-----------------------------------------------------------------------------------------------------+-------+--------------------------------------------------------------------------------------- + postgres | CREATE TABLE TBL_0(key text primary key, txt_0 text, value_0 int) | 1 | + postgres | INSERT INTO TBL_0(key, txt_0, value_0) VALUES($1, $2, $3) | 1 | '000000','846930886',1804289383 + postgres | SELECT key, txt_0, value_0 FROM TBL_0 | 2 | + postgres | SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_v | 1 | 'pg_stat_monitor.pgsm_normalized_query','pg_stat_monitor.pgsm_extract_bind_variables' + postgres | SELECT pg_stat_monitor_reset() | 1 | + postgres | UPDATE TBL_0 SET value_0 = $1 | 1 | 1681692777 +(6 rows) + +DROP EXTENSION pg_stat_monitor; From 24379975984787e343285aed0768dc0e974eb27e Mon Sep 17 00:00:00 2001 From: snsjeong Date: Tue, 14 Mar 2023 17:24:17 +0900 Subject: [PATCH 05/26] PG-564: Change the delimiter from ',' to '|' between variable and variable --- pg_stat_monitor.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pg_stat_monitor.c b/pg_stat_monitor.c index a046311d..32362eaa 100644 --- a/pg_stat_monitor.c +++ b/pg_stat_monitor.c @@ -3002,7 +3002,7 @@ generate_normalized_query(JumbleState *jstate, const char *query, if (n_var_loc+tok_len + 1 < VAR_LEN-1){ memcpy(bind_variables + n_var_loc, query + quer_loc - tok_len, tok_len); n_var_loc += tok_len; - memcpy(bind_variables + n_var_loc , ",", 1); + memcpy(bind_variables + n_var_loc , "|", 1); n_var_loc ++; } From 70728c822f404057c2c290b32ae35569dc38abf3 Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Tue, 28 Nov 2023 10:42:20 +0900 Subject: [PATCH 06/26] Add files via upload add bind_variables ver 2.03 --- guc.c | 15 +++++++ pg_stat_monitor--1.0--2.0.sql | 5 +++ pg_stat_monitor--2.0.sql | 5 +++ pg_stat_monitor.c | 76 ++++++++++++++++++++++++++--------- pg_stat_monitor.h | 3 ++ 5 files changed, 86 insertions(+), 18 deletions(-) diff --git a/guc.c b/guc.c index c98d3ce3..b2c3f6cd 100644 --- a/guc.c +++ b/guc.c @@ -36,6 +36,8 @@ bool pgsm_track_utility; bool pgsm_enable_pgsm_query_id; int pgsm_track; static int pgsm_overflow_target; /* Not used since 2.0 */ +/*custum */ +bool pgsm_extract_bind_variables; /* Check hooks to ensure histogram_min < histogram_max */ static bool check_histogram_min(double *newval, void **extra, GucSource source); @@ -213,6 +215,19 @@ init_guc(void) NULL, /* assign_hook */ NULL /* show_hook */ ); + + /* custum */ + DefineCustomBoolVariable("pg_stat_monitor.pgsm_extract_bind_variables", /* name */ + "Selects whether extracting bind variables from queries.", /* short_desc */ + NULL, /* long_desc */ + &pgsm_extract_bind_variables, /* value address */ + false, /* boot value */ + PGC_USERSET, /* context */ + 0, /* flags */ + NULL, /* check_hook */ + NULL, /* assign_hook */ + NULL /* show_hook */ + ); DefineCustomBoolVariable("pg_stat_monitor.pgsm_enable_overflow", /* name */ "Enable/Disable pg_stat_monitor to grow beyond shared memory into swap space.", /* short_desc */ diff --git a/pg_stat_monitor--1.0--2.0.sql b/pg_stat_monitor--1.0--2.0.sql index de114ba6..6dc2525b 100644 --- a/pg_stat_monitor--1.0--2.0.sql +++ b/pg_stat_monitor--1.0--2.0.sql @@ -25,6 +25,7 @@ CREATE FUNCTION pg_stat_monitor_internal( OUT top_queryid int8, OUT top_query text, OUT application_name text, + OUT bind_variables text, OUT relations text, -- 11 OUT cmd_type int, @@ -128,6 +129,7 @@ CREATE VIEW pg_stat_monitor AS SELECT query_plan, top_query, application_name, + bind_variables, string_to_array(relations, ',') AS relations, cmd_type, get_cmd_type(cmd_type) AS cmd_type_text, @@ -185,6 +187,7 @@ CREATE VIEW pg_stat_monitor AS SELECT query_plan, top_query, application_name, + bind_variables, string_to_array(relations, ',') AS relations, cmd_type, get_cmd_type(cmd_type) AS cmd_type_text, @@ -251,6 +254,7 @@ CREATE VIEW pg_stat_monitor AS SELECT query_plan, top_query, application_name, + bind_variables, string_to_array(relations, ',') AS relations, cmd_type, get_cmd_type(cmd_type) AS cmd_type_text, @@ -317,6 +321,7 @@ CREATE VIEW pg_stat_monitor AS SELECT query_plan, top_query, application_name, + bind_variables, string_to_array(relations, ',') AS relations, cmd_type, get_cmd_type(cmd_type) AS cmd_type_text, diff --git a/pg_stat_monitor--2.0.sql b/pg_stat_monitor--2.0.sql index 6182fa41..f3090ed4 100644 --- a/pg_stat_monitor--2.0.sql +++ b/pg_stat_monitor--2.0.sql @@ -97,6 +97,7 @@ CREATE FUNCTION pg_stat_monitor_internal( OUT top_queryid int8, OUT top_query text, OUT application_name text, + OUT bind_variables text, OUT relations text, -- 11 OUT cmd_type int, @@ -184,6 +185,7 @@ CREATE VIEW pg_stat_monitor AS SELECT query_plan, top_query, application_name, + bind_variables, string_to_array(relations, ',') AS relations, cmd_type, get_cmd_type(cmd_type) AS cmd_type_text, @@ -241,6 +243,7 @@ CREATE VIEW pg_stat_monitor AS SELECT query_plan, top_query, application_name, + bind_variables, string_to_array(relations, ',') AS relations, cmd_type, get_cmd_type(cmd_type) AS cmd_type_text, @@ -307,6 +310,7 @@ CREATE VIEW pg_stat_monitor AS SELECT query_plan, top_query, application_name, + bind_variables, string_to_array(relations, ',') AS relations, cmd_type, get_cmd_type(cmd_type) AS cmd_type_text, @@ -373,6 +377,7 @@ CREATE VIEW pg_stat_monitor AS SELECT query_plan, top_query, application_name, + bind_variables, string_to_array(relations, ',') AS relations, cmd_type, get_cmd_type(cmd_type) AS cmd_type_text, diff --git a/pg_stat_monitor.c b/pg_stat_monitor.c index 1c10ae87..382bb61c 100644 --- a/pg_stat_monitor.c +++ b/pg_stat_monitor.c @@ -40,7 +40,7 @@ PG_MODULE_MAGIC; /* Number of output arguments (columns) for various API versions */ #define PG_STAT_MONITOR_COLS_V1_0 52 -#define PG_STAT_MONITOR_COLS_V2_0 64 +#define PG_STAT_MONITOR_COLS_V2_0 65 #define PG_STAT_MONITOR_COLS PG_STAT_MONITOR_COLS_V2_0 /* maximum of above */ #define PGSM_TEXT_FILE PGSTAT_STAT_PERMANENT_DIRECTORY "pg_stat_monitor_query" @@ -256,7 +256,8 @@ static uint64 get_query_id(JumbleState *jstate, Query *query); #endif static char *generate_normalized_query(JumbleState *jstate, const char *query, - int query_loc, int *query_len_p, int encoding); + int query_loc, int *query_len_p, int encoding, + char* bind_variables, int *bind_var_len_p); static void fill_in_constant_lengths(JumbleState *jstate, const char *query, int query_loc); static int comp_location(const void *a, const void *b); @@ -407,6 +408,10 @@ pgsm_post_parse_analyze_internal(ParseState *pstate, Query *query, JumbleState * int norm_query_len; int location; int query_len; + /* custum bind_variables */ + char bind_variables[VAR_LEN] = ""; + int bind_var_len = 0; + /* Safety check... */ if (!IsSystemInitialized()) @@ -477,8 +482,9 @@ pgsm_post_parse_analyze_internal(ParseState *pstate, Query *query, JumbleState * query_text, /* query */ location, /* query location */ &norm_query_len, - GetDatabaseEncoding()); - + GetDatabaseEncoding(), + &bind_variables[0], + &bind_var_len); Assert(norm_query); } @@ -496,6 +502,10 @@ pgsm_post_parse_analyze_internal(ParseState *pstate, Query *query, JumbleState * */ entry->pgsm_query_id = get_pgsm_query_id_hash(norm_query ? norm_query : query_text, norm_query_len); entry->counters.info.cmd_type = query->commandType; + + if(bind_var_len > 0){ + _snprintf(entry->counters.info.bind_variables, bind_variables, bind_var_len + 1, VAR_LEN); + } /* * Add the query text and entry to the local list. @@ -1776,6 +1786,10 @@ pgsm_store(pgsmEntry * entry) pgsm = pgsm_get_ss(); + /* + * We should lock the hash table here what if the bucket is removed; e.g. + * reset is called - HAMID + */ prev_bucket_id = pg_atomic_read_u64(&pgsm->current_wbucket); bucketid = get_next_wbucket(pgsm); @@ -1878,11 +1892,6 @@ pgsm_store(pgsmEntry * entry) if (shared_hash_entry == NULL) { - LWLockRelease(pgsm->lock); - - if (DsaPointerIsValid(dsa_query_pointer)) - dsa_free(query_dsa_area, dsa_query_pointer); - /* * Out of memory; report only if the state has changed now. * Otherwise we risk filling up the log file with these message. @@ -1891,16 +1900,18 @@ pgsm_store(pgsmEntry * entry) { pgsm->pgsm_oom = true; - PGSM_DISABLE_ERROR_CAPUTRE(); - { - ereport(WARNING, - (errcode(ERRCODE_OUT_OF_MEMORY), - errmsg("[pg_stat_monitor] pgsm_store: Hash table is out of memory and can no longer store queries!"), - errdetail("You may reset the view or when the buckets are deallocated, pg_stat_monitor will resume saving " \ - "queries. Alternatively, try increasing the value of pg_stat_monitor.pgsm_max."))); - } PGSM_END_DISABLE_ERROR_CAPTURE(); + ereport(WARNING, + (errcode(ERRCODE_OUT_OF_MEMORY), + errmsg("[pg_stat_monitor] pgsm_store: Hash table is out of memory and can no longer store queries!"), + errdetail("You may reset the view or when the buckets are deallocated, pg_stat_monitor will resume saving " \ + "queries. Alternatively, try increasing the value of pg_stat_monitor.pgsm_max."))); } + LWLockRelease(pgsm->lock); + + if (DsaPointerIsValid(dsa_query_pointer)) + dsa_free(query_dsa_area, dsa_query_pointer); + return; } else @@ -1923,6 +1934,9 @@ pgsm_store(pgsmEntry * entry) snprintf(shared_hash_entry->username, sizeof(shared_hash_entry->username), "%s", entry->username); } + if(strlen(entry->counters.info.bind_variables) > 0) + strncpy(shared_hash_entry->counters.info.bind_variables, entry->counters.info.bind_variables, VAR_LEN); + pgsm_update_entry(shared_hash_entry, /* entry */ query, /* query */ comments, /* comments */ @@ -2232,6 +2246,12 @@ pg_stat_monitor_internal(FunctionCallInfo fcinfo, values[i++] = CStringGetTextDatum(tmp.info.application_name); else nulls[i++] = true; + + /* bind_variables at column number 48 */ + if (strlen(tmp.info.bind_variables) > 0) + values[i++] = CStringGetTextDatum(tmp.info.bind_variables); + else + nulls[i++] = true; /* relations at column number 10 */ if (tmp.info.num_relations > 0) @@ -3303,15 +3323,18 @@ CleanQuerytext(const char *query, int *location, int *len) */ static char * generate_normalized_query(JumbleState *jstate, const char *query, - int query_loc, int *query_len_p, int encoding) + int query_loc, int *query_len_p, int encoding, + char* bind_variables, int *bind_var_len_p) { char *norm_query; int query_len = *query_len_p; + int bind_var_len; int i, norm_query_buflen, /* Space allowed for norm_query */ len_to_wrt, /* Length (in bytes) to write */ quer_loc = 0, /* Source query byte location */ n_quer_loc = 0, /* Normalized query byte location */ + n_var_loc = 0, /* bind_variables byte location */ last_off = 0, /* Offset from start for previous tok */ last_tok_len = 0; /* Length (in bytes) of that tok */ @@ -3362,6 +3385,16 @@ generate_normalized_query(JumbleState *jstate, const char *query, quer_loc = off + tok_len; last_off = off; last_tok_len = tok_len; + + + if (pgsm_extract_bind_variables){ + if (n_var_loc+tok_len + 1 < VAR_LEN-1){ + memcpy(bind_variables + n_var_loc, query + quer_loc - tok_len, tok_len); + n_var_loc += tok_len; + memcpy(bind_variables + n_var_loc , "|", 1); + n_var_loc ++; + } + } } /* @@ -3378,6 +3411,13 @@ generate_normalized_query(JumbleState *jstate, const char *query, norm_query[n_quer_loc] = '\0'; *query_len_p = n_quer_loc; + + if (pgsm_extract_bind_variables){ + bind_var_len = n_var_loc-1; + bind_variables[bind_var_len] = '\0'; + *bind_var_len_p = bind_var_len; + } + return norm_query; } diff --git a/pg_stat_monitor.h b/pg_stat_monitor.h index 339f6474..27a93a51 100644 --- a/pg_stat_monitor.h +++ b/pg_stat_monitor.h @@ -88,6 +88,7 @@ #define CMD_LEN 20 #define APPLICATIONNAME_LEN NAMEDATALEN #define COMMENTS_LEN 256 +#define VAR_LEN 512 #define PGSM_OVER_FLOW_MAX 10 #define PLAN_TEXT_LEN 1024 /* the assumption of query max nested level */ @@ -252,6 +253,7 @@ typedef struct QueryInfo char comments[COMMENTS_LEN]; char relations[REL_LST][REL_LEN]; /* List of relation involved * in the query */ + char bind_variables[VAR_LEN]; int num_relations; /* Number of relation in the query */ CmdType cmd_type; /* query command type * SELECT/UPDATE/DELETE/INSERT */ @@ -514,6 +516,7 @@ extern bool pgsm_enable_overflow; extern bool pgsm_normalized_query; extern bool pgsm_track_utility; extern bool pgsm_enable_pgsm_query_id; +extern bool pgsm_extract_bind_variables; extern int pgsm_track; #define DECLARE_HOOK(hook, ...) \ From d868bd453968462c6faa2cee5e8686ef57cbcfb4 Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Tue, 28 Nov 2023 10:47:14 +0900 Subject: [PATCH 07/26] Add files via upload pg_stat_monitor tap test expected upload --- t/expected/001_settings_default.out | 82 +++++++------ ...7_settings_pgsm_query_shared_buffer.out.16 | 114 ++++++++++++++++++ 2 files changed, 156 insertions(+), 40 deletions(-) create mode 100644 t/expected/007_settings_pgsm_query_shared_buffer.out.16 diff --git a/t/expected/001_settings_default.out b/t/expected/001_settings_default.out index 5a99aeed..3e2f757b 100644 --- a/t/expected/001_settings_default.out +++ b/t/expected/001_settings_default.out @@ -6,26 +6,27 @@ SELECT pg_stat_monitor_reset(); (1 row) SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name LIKE '%pg_stat_monitor%'; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart --------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- - pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f - pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f - pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f - pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f - pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f - pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f - pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f - pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f - pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f - pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f - pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f -(17 rows) + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart +---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- + pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f + pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_bind_variables | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f + pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f + pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f + pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f + pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f + pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f + pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f + pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f + pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f + pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f +(18 rows) SELECT datname, substr(query,0,100) AS query, calls FROM pg_stat_monitor ORDER BY datname, query, calls DESC Limit 20; datname | query | calls @@ -35,26 +36,27 @@ SELECT datname, substr(query,0,100) AS query, calls FROM pg_stat_monitor ORDER B (2 rows) SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name LIKE '%pg_stat_monitor%'; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart --------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- - pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f - pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f - pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f - pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f - pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f - pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f - pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f - pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f - pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f - pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f - pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f -(17 rows) + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart +---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- + pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f + pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_bind_variables | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f + pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f + pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f + pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f + pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f + pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f + pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f + pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f + pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f + pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f +(18 rows) SELECT pg_stat_monitor_reset(); pg_stat_monitor_reset diff --git a/t/expected/007_settings_pgsm_query_shared_buffer.out.16 b/t/expected/007_settings_pgsm_query_shared_buffer.out.16 new file mode 100644 index 00000000..6dc840fd --- /dev/null +++ b/t/expected/007_settings_pgsm_query_shared_buffer.out.16 @@ -0,0 +1,114 @@ +CREATE EXTENSION pg_stat_monitor; +SELECT pg_stat_monitor_reset(); + pg_stat_monitor_reset +----------------------- + +(1 row) + +SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name='pg_stat_monitor.pgsm_query_shared_buffer'; + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart +------------------------------------------+---------+------+------------+---------+--------------------+---------+---------+----------+----------+-----------+----------------- + pg_stat_monitor.pgsm_query_shared_buffer | 1 | MB | postmaster | integer | configuration file | 1 | 10000 | | 20 | 1 | f +(1 row) + +CREATE database example; +SELECT datname, substr(query,0,150) AS query, SUM(calls) AS calls FROM pg_stat_monitor GROUP BY datname, query ORDER BY datname, query, calls DESC Limit 20; + datname | query | calls +---------+-------------------------------------------------------------------------------------------------------------------------------------------------------+------- + example | INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES ($1, $2, $3, $4, CURRENT_TIMESTAMP) | 10000 + example | SELECT abalance FROM pgbench_accounts WHERE aid = $1 | 10000 + example | UPDATE pgbench_accounts SET abalance = abalance + $1 WHERE aid = $2 | 10000 + example | UPDATE pgbench_branches SET bbalance = bbalance + $1 WHERE bid = $2 | 10000 + example | UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE tid = $2 | 10000 + example | alter table pgbench_accounts add primary key (aid) | 1 + example | alter table pgbench_branches add primary key (bid) | 1 + example | alter table pgbench_tellers add primary key (tid) | 1 + example | begin | 10001 + example | commit | 10001 + example | copy pgbench_accounts from stdin with (freeze on) | 1 + example | create table pgbench_accounts(aid int not null,bid int,abalance int,filler char(84)) with (fillfactor=100) | 1 + example | create table pgbench_branches(bid int not null,bbalance int,filler char(88)) with (fillfactor=100) | 1 + example | create table pgbench_history(tid int,bid int,aid int,delta int,mtime timestamp,filler char(22)) | 1 + example | create table pgbench_tellers(tid int not null,bid int,tbalance int,filler char(84)) with (fillfactor=100) | 1 + example | drop table if exists pgbench_accounts, pgbench_branches, pgbench_history, pgbench_tellers | 1 + example | insert into pgbench_branches(bid,bbalance) values($1,$2) | 10 + example | insert into pgbench_tellers(tid,bid,tbalance) values ($1,$2,$3) | 100 + example | select count(*) from pgbench_branches | 1 + example | select o.n, p.partstrat, pg_catalog.count(i.inhparent) from pg_catalog.pg_class as c join pg_catalog.pg_namespace as n on (n.oid = c.relnamespace) cr | 1 +(20 rows) + +SELECT pg_stat_monitor_reset(); + pg_stat_monitor_reset +----------------------- + +(1 row) + +SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name='pg_stat_monitor.pgsm_query_shared_buffer'; + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart +------------------------------------------+---------+------+------------+---------+--------------------+---------+---------+----------+----------+-----------+----------------- + pg_stat_monitor.pgsm_query_shared_buffer | 2 | MB | postmaster | integer | configuration file | 1 | 10000 | | 20 | 2 | f +(1 row) + +SELECT datname, substr(query,0,150) AS query, SUM(calls) AS calls FROM pg_stat_monitor GROUP BY datname, query ORDER BY datname, query, calls DESC Limit 20; + datname | query | calls +---------+-------------------------------------------------------------------------------------------------------------------------------------------------------+------- + example | INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES ($1, $2, $3, $4, CURRENT_TIMESTAMP) | 10000 + example | SELECT abalance FROM pgbench_accounts WHERE aid = $1 | 10000 + example | UPDATE pgbench_accounts SET abalance = abalance + $1 WHERE aid = $2 | 10000 + example | UPDATE pgbench_branches SET bbalance = bbalance + $1 WHERE bid = $2 | 10000 + example | UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE tid = $2 | 10000 + example | alter table pgbench_accounts add primary key (aid) | 1 + example | alter table pgbench_branches add primary key (bid) | 1 + example | alter table pgbench_tellers add primary key (tid) | 1 + example | begin | 10001 + example | commit | 10001 + example | copy pgbench_accounts from stdin with (freeze on) | 1 + example | create table pgbench_accounts(aid int not null,bid int,abalance int,filler char(84)) with (fillfactor=100) | 1 + example | create table pgbench_branches(bid int not null,bbalance int,filler char(88)) with (fillfactor=100) | 1 + example | create table pgbench_history(tid int,bid int,aid int,delta int,mtime timestamp,filler char(22)) | 1 + example | create table pgbench_tellers(tid int not null,bid int,tbalance int,filler char(84)) with (fillfactor=100) | 1 + example | drop table if exists pgbench_accounts, pgbench_branches, pgbench_history, pgbench_tellers | 1 + example | insert into pgbench_branches(bid,bbalance) values($1,$2) | 10 + example | insert into pgbench_tellers(tid,bid,tbalance) values ($1,$2,$3) | 100 + example | select count(*) from pgbench_branches | 1 + example | select o.n, p.partstrat, pg_catalog.count(i.inhparent) from pg_catalog.pg_class as c join pg_catalog.pg_namespace as n on (n.oid = c.relnamespace) cr | 1 +(20 rows) + +SELECT pg_stat_monitor_reset(); + pg_stat_monitor_reset +----------------------- + +(1 row) + +SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name='pg_stat_monitor.pgsm_query_shared_buffer'; + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart +------------------------------------------+---------+------+------------+---------+--------------------+---------+---------+----------+----------+-----------+----------------- + pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | configuration file | 1 | 10000 | | 20 | 20 | f +(1 row) + +SELECT datname, substr(query,0,150) AS query, SUM(calls) AS calls FROM pg_stat_monitor GROUP BY datname, query ORDER BY datname, query, calls DESC Limit 20; + datname | query | calls +---------+-------------------------------------------------------------------------------------------------------------------------------------------------------+------- + example | INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES ($1, $2, $3, $4, CURRENT_TIMESTAMP) | 10000 + example | SELECT abalance FROM pgbench_accounts WHERE aid = $1 | 10000 + example | UPDATE pgbench_accounts SET abalance = abalance + $1 WHERE aid = $2 | 10000 + example | UPDATE pgbench_branches SET bbalance = bbalance + $1 WHERE bid = $2 | 10000 + example | UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE tid = $2 | 10000 + example | alter table pgbench_accounts add primary key (aid) | 1 + example | alter table pgbench_branches add primary key (bid) | 1 + example | alter table pgbench_tellers add primary key (tid) | 1 + example | begin | 10001 + example | commit | 10001 + example | copy pgbench_accounts from stdin with (freeze on) | 1 + example | create table pgbench_accounts(aid int not null,bid int,abalance int,filler char(84)) with (fillfactor=100) | 1 + example | create table pgbench_branches(bid int not null,bbalance int,filler char(88)) with (fillfactor=100) | 1 + example | create table pgbench_history(tid int,bid int,aid int,delta int,mtime timestamp,filler char(22)) | 1 + example | create table pgbench_tellers(tid int not null,bid int,tbalance int,filler char(84)) with (fillfactor=100) | 1 + example | drop table if exists pgbench_accounts, pgbench_branches, pgbench_history, pgbench_tellers | 1 + example | insert into pgbench_branches(bid,bbalance) values($1,$2) | 10 + example | insert into pgbench_tellers(tid,bid,tbalance) values ($1,$2,$3) | 100 + example | select count(*) from pgbench_branches | 1 + example | select o.n, p.partstrat, pg_catalog.count(i.inhparent) from pg_catalog.pg_class as c join pg_catalog.pg_namespace as n on (n.oid = c.relnamespace) cr | 1 +(20 rows) + +DROP EXTENSION pg_stat_monitor; From 0295a5331e8af0d9fd63d74912f1dd1916521275 Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Tue, 28 Nov 2023 10:54:14 +0900 Subject: [PATCH 08/26] Update 001_settings_default.out add bind_variables --- t/expected/001_settings_default.out | 82 +++++++++++++++-------------- 1 file changed, 42 insertions(+), 40 deletions(-) diff --git a/t/expected/001_settings_default.out b/t/expected/001_settings_default.out index 5a99aeed..3e2f757b 100644 --- a/t/expected/001_settings_default.out +++ b/t/expected/001_settings_default.out @@ -6,26 +6,27 @@ SELECT pg_stat_monitor_reset(); (1 row) SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name LIKE '%pg_stat_monitor%'; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart --------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- - pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f - pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f - pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f - pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f - pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f - pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f - pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f - pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f - pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f - pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f - pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f -(17 rows) + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart +---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- + pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f + pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_bind_variables | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f + pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f + pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f + pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f + pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f + pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f + pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f + pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f + pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f + pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f +(18 rows) SELECT datname, substr(query,0,100) AS query, calls FROM pg_stat_monitor ORDER BY datname, query, calls DESC Limit 20; datname | query | calls @@ -35,26 +36,27 @@ SELECT datname, substr(query,0,100) AS query, calls FROM pg_stat_monitor ORDER B (2 rows) SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name LIKE '%pg_stat_monitor%'; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart --------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- - pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f - pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f - pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f - pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f - pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f - pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f - pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f - pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f - pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f - pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f - pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f -(17 rows) + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart +---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- + pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f + pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_bind_variables | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f + pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f + pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f + pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f + pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f + pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f + pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f + pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f + pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f + pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f +(18 rows) SELECT pg_stat_monitor_reset(); pg_stat_monitor_reset From 214d1375b85a64d97094a4be837d6c7dba723dde Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Tue, 28 Nov 2023 11:06:06 +0900 Subject: [PATCH 09/26] Update 018_column_names.pl colum bind_variables add --- t/018_column_names.pl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/t/018_column_names.pl b/t/018_column_names.pl index 6abe1860..b2c93ef6 100644 --- a/t/018_column_names.pl +++ b/t/018_column_names.pl @@ -22,7 +22,7 @@ close $conf; # Dictionary for expected PGSM columns names on different PG server versions -my %pg_versions_pgsm_columns = ( 16 => "application_name,blk_read_time," . +my %pg_versions_pgsm_columns = ( 16 => "application_name,bind_variables,blk_read_time," . "blk_write_time,bucket,bucket_done,bucket_start_time,calls," . "client_ip,cmd_type,cmd_type_text,comments,cpu_sys_time,cpu_user_time," . "datname,dbid,elevel,jit_emission_count,jit_emission_time,jit_functions," . @@ -37,7 +37,7 @@ "temp_blk_read_time,temp_blk_write_time,temp_blks_read,temp_blks_written," . "top_query,top_queryid,toplevel,total_exec_time,total_plan_time," . "userid,username,wal_bytes,wal_fpi,wal_records", -15 => "application_name,blk_read_time," . +15 => "application_name,bind_variables,blk_read_time," . "blk_write_time,bucket,bucket_done,bucket_start_time,calls," . "client_ip,cmd_type,cmd_type_text,comments,cpu_sys_time,cpu_user_time," . "datname,dbid,elevel,jit_emission_count,jit_emission_time,jit_functions," . @@ -52,7 +52,7 @@ "temp_blk_read_time,temp_blk_write_time,temp_blks_read,temp_blks_written," . "top_query,top_queryid,toplevel,total_exec_time,total_plan_time," . "userid,username,wal_bytes,wal_fpi,wal_records", - 14 => "application_name,blk_read_time," . + 14 => "application_name,bind_variables,blk_read_time," . "blk_write_time,bucket,bucket_done,bucket_start_time,calls," . "client_ip,cmd_type,cmd_type_text,comments,cpu_sys_time,cpu_user_time," . "datname,dbid,elevel,local_blks_dirtied,local_blks_hit,local_blks_read," . @@ -63,7 +63,7 @@ "shared_blks_written,sqlcode,stddev_exec_time,stddev_plan_time," . "temp_blks_read,temp_blks_written,top_query,top_queryid,toplevel," . "total_exec_time,total_plan_time,userid,username,wal_bytes,wal_fpi,wal_records", - 13 => "application_name,blk_read_time," . + 13 => "application_name,bind_variables,blk_read_time," . "blk_write_time,bucket,bucket_done,bucket_start_time,calls," . "client_ip,cmd_type,cmd_type_text,comments,cpu_sys_time,cpu_user_time," . "datname,dbid,elevel,local_blks_dirtied,local_blks_hit,local_blks_read," . @@ -74,7 +74,7 @@ "shared_blks_written,sqlcode,stddev_exec_time,stddev_plan_time," . "temp_blks_read,temp_blks_written,top_query,top_queryid,toplevel," . "total_exec_time,total_plan_time,userid,username,wal_bytes,wal_fpi,wal_records", - 12 => "application_name,blk_read_time,blk_write_time,bucket,bucket_done," . + 12 => "application_name,bind_variables,blk_read_time,blk_write_time,bucket,bucket_done," . "bucket_start_time,calls,client_ip,cmd_type,cmd_type_text,comments," . "cpu_sys_time,cpu_user_time,datname,dbid,elevel,local_blks_dirtied," . "local_blks_hit,local_blks_read,local_blks_written,max_time,mean_time," . From 1e1df9d2c3c82404cdc64d5ec181a55d23f0df2e Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Thu, 21 Dec 2023 09:11:47 +0900 Subject: [PATCH 10/26] Update guc.out --- regression/expected/guc.out | 41 +++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/regression/expected/guc.out b/regression/expected/guc.out index dd84374f..45748af7 100644 --- a/regression/expected/guc.out +++ b/regression/expected/guc.out @@ -16,25 +16,26 @@ WHERE name LIKE 'pg_stat_monitor.%' ORDER BY name COLLATE "C"; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart --------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- - pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f - pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f - pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f - pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f - pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f - pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f - pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f - pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f - pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f - pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f - pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f -(17 rows) + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart +---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- + pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f + pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_bind_variables | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f + pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f + pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f + pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f + pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f + pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f + pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f + pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f + pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f + pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f +(18 rows) DROP EXTENSION pg_stat_monitor; From 4c072fc08ba94e388e43b4801ce2c243a5e51d70 Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Thu, 21 Dec 2023 10:03:01 +0900 Subject: [PATCH 11/26] Update guc_1.out --- regression/expected/guc_1.out | 37 ++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/regression/expected/guc_1.out b/regression/expected/guc_1.out index 6c73f2ed..3d50f0b1 100644 --- a/regression/expected/guc_1.out +++ b/regression/expected/guc_1.out @@ -16,24 +16,25 @@ WHERE name LIKE 'pg_stat_monitor.%' ORDER BY name COLLATE "C"; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart -------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- - pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f - pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f - pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f - pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f - pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f - pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f - pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f - pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f - pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f - pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f - pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f -(16 rows) + pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f + pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_bind_variables | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f + pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f + pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f + pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f + pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f + pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f + pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f + pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f + pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f + pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f +(17 rows) DROP EXTENSION pg_stat_monitor; From bdedf9f8ee5b699b4bd97788ff61c7fdb411f39b Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Thu, 21 Dec 2023 10:03:31 +0900 Subject: [PATCH 12/26] Update guc_2.out --- regression/expected/guc_2.out | 39 ++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/regression/expected/guc_2.out b/regression/expected/guc_2.out index 06d08649..b89b0399 100644 --- a/regression/expected/guc_2.out +++ b/regression/expected/guc_2.out @@ -16,24 +16,25 @@ WHERE name LIKE 'pg_stat_monitor.%' ORDER BY name COLLATE "C"; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart --------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- - pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f - pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f - pg_stat_monitor.pgsm_histogram_max | 100000 | | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f - pg_stat_monitor.pgsm_histogram_min | 1 | | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f - pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f - pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f - pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f - pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f - pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f - pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f - pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f -(16 rows) + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart +---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- + pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f + pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_bind_variables | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f + pg_stat_monitor.pgsm_histogram_max | 100000 | | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f + pg_stat_monitor.pgsm_histogram_min | 1 | | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f + pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f + pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f + pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f + pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f + pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f + pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f + pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f +(17 rows) DROP EXTENSION pg_stat_monitor; From 6568237fdb3384a7a459a94fbc31f0e0a8996e49 Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Thu, 21 Dec 2023 10:03:39 +0900 Subject: [PATCH 13/26] Update guc_1.out --- regression/expected/guc_1.out | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regression/expected/guc_1.out b/regression/expected/guc_1.out index 3d50f0b1..958271ae 100644 --- a/regression/expected/guc_1.out +++ b/regression/expected/guc_1.out @@ -17,7 +17,7 @@ ORDER BY name COLLATE "C"; name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart --------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- +---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f From ace703811d0079f56def377dc035eeb8d5f9614a Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Thu, 21 Dec 2023 10:04:34 +0900 Subject: [PATCH 14/26] Update guc.out --- regression/expected/guc.out | 41 +++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/regression/expected/guc.out b/regression/expected/guc.out index dd84374f..45748af7 100644 --- a/regression/expected/guc.out +++ b/regression/expected/guc.out @@ -16,25 +16,26 @@ WHERE name LIKE 'pg_stat_monitor.%' ORDER BY name COLLATE "C"; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart --------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- - pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f - pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f - pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f - pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f - pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f - pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f - pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f - pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f - pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f - pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f - pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f -(17 rows) + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart +---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- + pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f + pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_bind_variables | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f + pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f + pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f + pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f + pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f + pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f + pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f + pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f + pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f + pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f +(18 rows) DROP EXTENSION pg_stat_monitor; From ba60e25bea47792e6446ea4c4252d2fcafcc00ee Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Thu, 21 Dec 2023 10:04:47 +0900 Subject: [PATCH 15/26] Update guc_1.out --- regression/expected/guc_1.out | 39 ++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/regression/expected/guc_1.out b/regression/expected/guc_1.out index 6c73f2ed..958271ae 100644 --- a/regression/expected/guc_1.out +++ b/regression/expected/guc_1.out @@ -16,24 +16,25 @@ WHERE name LIKE 'pg_stat_monitor.%' ORDER BY name COLLATE "C"; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart --------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- - pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f - pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f - pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f - pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f - pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f - pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f - pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f - pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f - pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f - pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f - pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f -(16 rows) + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart +---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- + pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f + pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_bind_variables | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f + pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f + pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f + pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f + pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f + pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f + pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f + pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f + pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f + pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f +(17 rows) DROP EXTENSION pg_stat_monitor; From 8ecdd129b37bcb5b2251140be5981d6fb53b9136 Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Thu, 21 Dec 2023 10:05:02 +0900 Subject: [PATCH 16/26] Update guc_2.out --- regression/expected/guc_2.out | 39 ++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/regression/expected/guc_2.out b/regression/expected/guc_2.out index 06d08649..b89b0399 100644 --- a/regression/expected/guc_2.out +++ b/regression/expected/guc_2.out @@ -16,24 +16,25 @@ WHERE name LIKE 'pg_stat_monitor.%' ORDER BY name COLLATE "C"; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart --------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- - pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f - pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f - pg_stat_monitor.pgsm_histogram_max | 100000 | | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f - pg_stat_monitor.pgsm_histogram_min | 1 | | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f - pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f - pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f - pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f - pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f - pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f - pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f - pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f -(16 rows) + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart +---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- + pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f + pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_bind_variables | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f + pg_stat_monitor.pgsm_histogram_max | 100000 | | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f + pg_stat_monitor.pgsm_histogram_min | 1 | | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f + pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f + pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f + pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f + pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f + pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f + pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f + pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f +(17 rows) DROP EXTENSION pg_stat_monitor; From 17e1a7e7d2a2033136605c285c910126d962bf12 Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Thu, 21 Dec 2023 16:23:58 +0900 Subject: [PATCH 17/26] Update guc_2.out test fail update --- regression/expected/guc_2.out | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/regression/expected/guc_2.out b/regression/expected/guc_2.out index b89b0399..4466bbe4 100644 --- a/regression/expected/guc_2.out +++ b/regression/expected/guc_2.out @@ -16,7 +16,7 @@ WHERE name LIKE 'pg_stat_monitor.%' ORDER BY name COLLATE "C"; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart ---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f @@ -35,6 +35,6 @@ COLLATE "C"; pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f -(17 rows) +(16 rows) DROP EXTENSION pg_stat_monitor; From add00ae4cf9d0170bf6185c1291c52abba73bb45 Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Thu, 21 Dec 2023 16:24:25 +0900 Subject: [PATCH 18/26] Update guc_1.out guc test fail update --- regression/expected/guc_1.out | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/regression/expected/guc_1.out b/regression/expected/guc_1.out index 958271ae..4466bbe4 100644 --- a/regression/expected/guc_1.out +++ b/regression/expected/guc_1.out @@ -16,7 +16,7 @@ WHERE name LIKE 'pg_stat_monitor.%' ORDER BY name COLLATE "C"; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart ---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f @@ -25,8 +25,8 @@ COLLATE "C"; pg_stat_monitor.pgsm_extract_bind_variables | off | | user | bool | default | | | | off | off | f pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f - pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f - pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f + pg_stat_monitor.pgsm_histogram_max | 100000 | | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f + pg_stat_monitor.pgsm_histogram_min | 1 | | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f @@ -35,6 +35,6 @@ COLLATE "C"; pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f -(17 rows) +(16 rows) DROP EXTENSION pg_stat_monitor; From d25adb3b973298895070eebd7b1e8956d790f0ca Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Thu, 21 Dec 2023 17:20:45 +0900 Subject: [PATCH 19/26] Update guc_2.out --- regression/expected/guc_2.out | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/regression/expected/guc_2.out b/regression/expected/guc_2.out index 4466bbe4..81e24d40 100644 --- a/regression/expected/guc_2.out +++ b/regression/expected/guc_2.out @@ -10,13 +10,13 @@ SELECT name , enumvals , boot_val , reset_val - , pending_restart + , pending_restart FROM pg_settings WHERE name LIKE 'pg_stat_monitor.%' ORDER BY name COLLATE "C"; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart ---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f @@ -35,6 +35,6 @@ COLLATE "C"; pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f -(16 rows) +(17 rows) DROP EXTENSION pg_stat_monitor; From 7193d4d44e51421ebd39d8fbd80fc16d8a0510fe Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Thu, 21 Dec 2023 17:31:21 +0900 Subject: [PATCH 20/26] Update guc_2.out --- regression/expected/guc_2.out | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regression/expected/guc_2.out b/regression/expected/guc_2.out index 81e24d40..2b60d3f3 100644 --- a/regression/expected/guc_2.out +++ b/regression/expected/guc_2.out @@ -16,7 +16,7 @@ WHERE name LIKE 'pg_stat_monitor.%' ORDER BY name COLLATE "C"; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart ---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f From 3050d5d7c9b9e2da69ae6097ad27f742e4613af9 Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Fri, 22 Dec 2023 08:48:55 +0900 Subject: [PATCH 21/26] Update guc_2.out --- regression/expected/guc_2.out | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regression/expected/guc_2.out b/regression/expected/guc_2.out index b89b0399..931a5451 100644 --- a/regression/expected/guc_2.out +++ b/regression/expected/guc_2.out @@ -16,7 +16,7 @@ WHERE name LIKE 'pg_stat_monitor.%' ORDER BY name COLLATE "C"; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart ---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f From 71311b6069ba676d513d961404d98a17916b35ac Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Fri, 22 Dec 2023 08:49:02 +0900 Subject: [PATCH 22/26] Update guc_1.out --- regression/expected/guc_1.out | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/regression/expected/guc_1.out b/regression/expected/guc_1.out index 958271ae..931a5451 100644 --- a/regression/expected/guc_1.out +++ b/regression/expected/guc_1.out @@ -16,7 +16,7 @@ WHERE name LIKE 'pg_stat_monitor.%' ORDER BY name COLLATE "C"; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart ---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f @@ -25,8 +25,8 @@ COLLATE "C"; pg_stat_monitor.pgsm_extract_bind_variables | off | | user | bool | default | | | | off | off | f pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f - pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f - pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f + pg_stat_monitor.pgsm_histogram_max | 100000 | | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f + pg_stat_monitor.pgsm_histogram_min | 1 | | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f From 6ad4c2d8b0eeb411a9b9b37b2dd14aa5c836c664 Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Fri, 22 Dec 2023 09:43:03 +0900 Subject: [PATCH 23/26] Update guc_2.out --- regression/expected/guc_2.out | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regression/expected/guc_2.out b/regression/expected/guc_2.out index 2b60d3f3..931a5451 100644 --- a/regression/expected/guc_2.out +++ b/regression/expected/guc_2.out @@ -10,7 +10,7 @@ SELECT name , enumvals , boot_val , reset_val - , pending_restart + , pending_restart FROM pg_settings WHERE name LIKE 'pg_stat_monitor.%' ORDER From dfb31ecd4d935ff84690ac3f08cec85ab7564322 Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Fri, 22 Dec 2023 09:43:09 +0900 Subject: [PATCH 24/26] Update guc_1.out --- regression/expected/guc_1.out | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/regression/expected/guc_1.out b/regression/expected/guc_1.out index 4466bbe4..931a5451 100644 --- a/regression/expected/guc_1.out +++ b/regression/expected/guc_1.out @@ -16,7 +16,7 @@ WHERE name LIKE 'pg_stat_monitor.%' ORDER BY name COLLATE "C"; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart ---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f @@ -35,6 +35,6 @@ COLLATE "C"; pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f -(16 rows) +(17 rows) DROP EXTENSION pg_stat_monitor; From 2e72e5455ff84221426228d77a586be22deffef6 Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Fri, 22 Dec 2023 10:49:25 +0900 Subject: [PATCH 25/26] Update guc_1.out --- regression/expected/guc_1.out | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/regression/expected/guc_1.out b/regression/expected/guc_1.out index 931a5451..96f617cf 100644 --- a/regression/expected/guc_1.out +++ b/regression/expected/guc_1.out @@ -25,8 +25,8 @@ COLLATE "C"; pg_stat_monitor.pgsm_extract_bind_variables | off | | user | bool | default | | | | off | off | f pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f - pg_stat_monitor.pgsm_histogram_max | 100000 | | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f - pg_stat_monitor.pgsm_histogram_min | 1 | | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f + pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f + pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f From 71832f3d463bba07bd398d1391d7eec8e17d7bb5 Mon Sep 17 00:00:00 2001 From: ksjj97inzent <114718983+ksjj97inzent@users.noreply.github.com> Date: Fri, 22 Dec 2023 11:52:07 +0900 Subject: [PATCH 26/26] Update 001_settings_default.out.12 --- t/expected/001_settings_default.out.12 | 78 +++++++++++++------------- 1 file changed, 40 insertions(+), 38 deletions(-) diff --git a/t/expected/001_settings_default.out.12 b/t/expected/001_settings_default.out.12 index 4933ae9e..6db8066a 100644 --- a/t/expected/001_settings_default.out.12 +++ b/t/expected/001_settings_default.out.12 @@ -6,25 +6,26 @@ SELECT pg_stat_monitor_reset(); (1 row) SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name LIKE '%pg_stat_monitor%'; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart --------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- - pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f - pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f - pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f - pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f - pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f - pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f - pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f - pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f - pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f - pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f - pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f -(16 rows) + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart +---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- + pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f + pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_bind_variables | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f + pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f + pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f + pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f + pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f + pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f + pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f + pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f + pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f + pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f +(17 rows) SELECT datname, substr(query,0,100) AS query, calls FROM pg_stat_monitor ORDER BY datname, query, calls DESC Limit 20; datname | query | calls @@ -34,25 +35,26 @@ SELECT datname, substr(query,0,100) AS query, calls FROM pg_stat_monitor ORDER B (2 rows) SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name LIKE '%pg_stat_monitor%'; - name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart --------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- - pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f - pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f - pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f - pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f - pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f - pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f - pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f - pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f - pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f - pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f - pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f - pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f - pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f -(16 rows) + name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart +---------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+----------------- + pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f + pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f + pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_bind_variables | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f + pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f + pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f + pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f + pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f + pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f + pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f + pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f + pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f + pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f + pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f +(17 rows) SELECT pg_stat_monitor_reset(); pg_stat_monitor_reset