From 6333ce61e856344a7410500878334aa24603d587 Mon Sep 17 00:00:00 2001 From: Julien Rouhaud Date: Sun, 14 Jul 2024 08:14:26 +0800 Subject: [PATCH] Introduce minimum major version for powa_modules Some modules uses the pg_lsn datatype, which doesn't support min()/max() in pre-pg13 versions. As a consequence the aggregate function fails on such versions. Rather than trying to support different aggregation for those modules just skip them on older pg versions as pg12 is about to be EOL. --- expected/00_setup.out | 72 +++++++++++++++++++++++++++++++++++++++++ expected/00_setup_1.out | 62 +++++++++++++++++++++++++++++++++++ expected/01_general.out | 72 ----------------------------------------- powa--5.0.0dev.sql | 32 ++++++++++++------ sql/00_setup.sql | 3 ++ sql/01_general.sql | 3 -- 6 files changed, 159 insertions(+), 85 deletions(-) create mode 100644 expected/00_setup_1.out diff --git a/expected/00_setup.out b/expected/00_setup.out index 0d99290..f0c9dfe 100644 --- a/expected/00_setup.out +++ b/expected/00_setup.out @@ -4,3 +4,75 @@ CREATE EXTENSION pg_stat_statements WITH SCHEMA "PGSS"; CREATE EXTENSION btree_gist; CREATE SCHEMA "PoWA"; CREATE EXTENSION powa WITH SCHEMA "PoWA"; +-- Test created ojects +SELECT * FROM "PoWA".powa_functions ORDER BY name, operation, priority, function_name; + srvid | kind | name | operation | external | function_name | query_source | query_cleanup | enabled | priority +-------+-----------+----------------------------+-----------+----------+----------------------------------------+----------------------------------+---------------+---------+---------- + 0 | module | pg_database | reset | f | powa_catalog_database_reset | | | t | 100 + 0 | module | pg_database | snapshot | f | powa_catalog_database_snapshot | powa_catalog_database_src | | t | 100 + 0 | module | pg_replication_slots | aggregate | f | powa_replication_slots_aggregate | | | t | 100 + 0 | module | pg_replication_slots | purge | f | powa_replication_slots_purge | | | t | 100 + 0 | module | pg_replication_slots | reset | f | powa_replication_slots_reset | | | t | 100 + 0 | module | pg_replication_slots | snapshot | f | powa_replication_slots_snapshot | powa_replication_slots_src | | t | 100 + 0 | module | pg_role | reset | f | powa_catalog_role_reset | | | t | 100 + 0 | module | pg_role | snapshot | f | powa_catalog_role_snapshot | powa_catalog_role_src | | t | 100 + 0 | module | pg_stat_activity | aggregate | f | powa_stat_activity_aggregate | | | t | 100 + 0 | module | pg_stat_activity | purge | f | powa_stat_activity_purge | | | t | 100 + 0 | module | pg_stat_activity | reset | f | powa_stat_activity_reset | | | t | 100 + 0 | module | pg_stat_activity | snapshot | f | powa_stat_activity_snapshot | powa_stat_activity_src | | t | 100 + 0 | module | pg_stat_archiver | aggregate | f | powa_stat_archiver_aggregate | | | t | 100 + 0 | module | pg_stat_archiver | purge | f | powa_stat_archiver_purge | | | t | 100 + 0 | module | pg_stat_archiver | reset | f | powa_stat_archiver_reset | | | t | 100 + 0 | module | pg_stat_archiver | snapshot | f | powa_stat_archiver_snapshot | powa_stat_archiver_src | | t | 100 + 0 | module | pg_stat_bgwriter | aggregate | f | powa_stat_bgwriter_aggregate | | | t | 100 + 0 | module | pg_stat_bgwriter | purge | f | powa_stat_bgwriter_purge | | | t | 100 + 0 | module | pg_stat_bgwriter | reset | f | powa_stat_bgwriter_reset | | | t | 100 + 0 | module | pg_stat_bgwriter | snapshot | f | powa_stat_bgwriter_snapshot | powa_stat_bgwriter_src | | t | 100 + 0 | module | pg_stat_checkpointer | aggregate | f | powa_stat_checkpointer_aggregate | | | t | 100 + 0 | module | pg_stat_checkpointer | purge | f | powa_stat_checkpointer_purge | | | t | 100 + 0 | module | pg_stat_checkpointer | reset | f | powa_stat_checkpointer_reset | | | t | 100 + 0 | module | pg_stat_checkpointer | snapshot | f | powa_stat_checkpointer_snapshot | powa_stat_checkpointer_src | | t | 100 + 0 | module | pg_stat_database | aggregate | f | powa_stat_database_aggregate | | | t | 100 + 0 | module | pg_stat_database | purge | f | powa_stat_database_purge | | | t | 100 + 0 | module | pg_stat_database | reset | f | powa_stat_database_reset | | | t | 100 + 0 | module | pg_stat_database | snapshot | f | powa_stat_database_snapshot | powa_stat_database_src | | t | 100 + 0 | module | pg_stat_database_conflicts | aggregate | f | powa_stat_database_conflicts_aggregate | | | t | 100 + 0 | module | pg_stat_database_conflicts | purge | f | powa_stat_database_conflicts_purge | | | t | 100 + 0 | module | pg_stat_database_conflicts | reset | f | powa_stat_database_conflicts_reset | | | t | 100 + 0 | module | pg_stat_database_conflicts | snapshot | f | powa_stat_database_conflicts_snapshot | powa_stat_database_conflicts_src | | t | 100 + 0 | module | pg_stat_io | aggregate | f | powa_stat_io_aggregate | | | t | 100 + 0 | module | pg_stat_io | purge | f | powa_stat_io_purge | | | t | 100 + 0 | module | pg_stat_io | reset | f | powa_stat_io_reset | | | t | 100 + 0 | module | pg_stat_io | snapshot | f | powa_stat_io_snapshot | powa_stat_io_src | | t | 100 + 0 | module | pg_stat_replication | aggregate | f | powa_stat_replication_aggregate | | | t | 100 + 0 | module | pg_stat_replication | purge | f | powa_stat_replication_purge | | | t | 100 + 0 | module | pg_stat_replication | reset | f | powa_stat_replication_reset | | | t | 100 + 0 | module | pg_stat_replication | snapshot | f | powa_stat_replication_snapshot | powa_stat_replication_src | | t | 100 + 0 | module | pg_stat_slru | aggregate | f | powa_stat_slru_aggregate | | | t | 100 + 0 | module | pg_stat_slru | purge | f | powa_stat_slru_purge | | | t | 100 + 0 | module | pg_stat_slru | reset | f | powa_stat_slru_reset | | | t | 100 + 0 | module | pg_stat_slru | snapshot | f | powa_stat_slru_snapshot | powa_stat_slru_src | | t | 100 + 0 | extension | pg_stat_statements | aggregate | f | powa_statements_aggregate | | | t | 10 + 0 | extension | pg_stat_statements | purge | f | powa_databases_purge | | | t | 10 + 0 | extension | pg_stat_statements | purge | f | powa_statements_purge | | | t | 10 + 0 | extension | pg_stat_statements | reset | f | powa_statements_reset | | | t | 10 + 0 | extension | pg_stat_statements | snapshot | f | powa_databases_snapshot | powa_databases_src | | t | -3 + 0 | extension | pg_stat_statements | snapshot | f | powa_statements_snapshot | powa_statements_src | | t | -2 + 0 | module | pg_stat_subscription | aggregate | f | powa_stat_subscription_aggregate | | | t | 100 + 0 | module | pg_stat_subscription | purge | f | powa_stat_subscription_purge | | | t | 100 + 0 | module | pg_stat_subscription | reset | f | powa_stat_subscription_reset | | | t | 100 + 0 | module | pg_stat_subscription | snapshot | f | powa_stat_subscription_snapshot | powa_stat_subscription_src | | t | 100 + 0 | module | pg_stat_subscription_stats | aggregate | f | powa_stat_subscription_stats_aggregate | | | t | 100 + 0 | module | pg_stat_subscription_stats | purge | f | powa_stat_subscription_stats_purge | | | t | 100 + 0 | module | pg_stat_subscription_stats | reset | f | powa_stat_subscription_stats_reset | | | t | 100 + 0 | module | pg_stat_subscription_stats | snapshot | f | powa_stat_subscription_stats_snapshot | powa_stat_subscription_stats_src | | t | 100 + 0 | module | pg_stat_wal | aggregate | f | powa_stat_wal_aggregate | | | t | 100 + 0 | module | pg_stat_wal | purge | f | powa_stat_wal_purge | | | t | 100 + 0 | module | pg_stat_wal | reset | f | powa_stat_wal_reset | | | t | 100 + 0 | module | pg_stat_wal | snapshot | f | powa_stat_wal_snapshot | powa_stat_wal_src | | t | 100 + 0 | module | pg_stat_wal_receiver | aggregate | f | powa_stat_wal_receiver_aggregate | | | t | 100 + 0 | module | pg_stat_wal_receiver | purge | f | powa_stat_wal_receiver_purge | | | t | 100 + 0 | module | pg_stat_wal_receiver | reset | f | powa_stat_wal_receiver_reset | | | t | 100 + 0 | module | pg_stat_wal_receiver | snapshot | f | powa_stat_wal_receiver_snapshot | powa_stat_wal_receiver_src | | t | 100 +(66 rows) + diff --git a/expected/00_setup_1.out b/expected/00_setup_1.out new file mode 100644 index 0000000..7f11c53 --- /dev/null +++ b/expected/00_setup_1.out @@ -0,0 +1,62 @@ +--Setup extension +CREATE SCHEMA "PGSS"; +CREATE EXTENSION pg_stat_statements WITH SCHEMA "PGSS"; +CREATE EXTENSION btree_gist; +CREATE SCHEMA "PoWA"; +CREATE EXTENSION powa WITH SCHEMA "PoWA"; +-- Test created ojects +SELECT * FROM "PoWA".powa_functions ORDER BY name, operation, priority, function_name; + srvid | kind | name | operation | external | function_name | query_source | query_cleanup | enabled | priority +-------+-----------+----------------------------+-----------+----------+----------------------------------------+----------------------------------+---------------+---------+---------- + 0 | module | pg_database | reset | f | powa_catalog_database_reset | | | t | 100 + 0 | module | pg_database | snapshot | f | powa_catalog_database_snapshot | powa_catalog_database_src | | t | 100 + 0 | module | pg_role | reset | f | powa_catalog_role_reset | | | t | 100 + 0 | module | pg_role | snapshot | f | powa_catalog_role_snapshot | powa_catalog_role_src | | t | 100 + 0 | module | pg_stat_activity | aggregate | f | powa_stat_activity_aggregate | | | t | 100 + 0 | module | pg_stat_activity | purge | f | powa_stat_activity_purge | | | t | 100 + 0 | module | pg_stat_activity | reset | f | powa_stat_activity_reset | | | t | 100 + 0 | module | pg_stat_activity | snapshot | f | powa_stat_activity_snapshot | powa_stat_activity_src | | t | 100 + 0 | module | pg_stat_archiver | aggregate | f | powa_stat_archiver_aggregate | | | t | 100 + 0 | module | pg_stat_archiver | purge | f | powa_stat_archiver_purge | | | t | 100 + 0 | module | pg_stat_archiver | reset | f | powa_stat_archiver_reset | | | t | 100 + 0 | module | pg_stat_archiver | snapshot | f | powa_stat_archiver_snapshot | powa_stat_archiver_src | | t | 100 + 0 | module | pg_stat_bgwriter | aggregate | f | powa_stat_bgwriter_aggregate | | | t | 100 + 0 | module | pg_stat_bgwriter | purge | f | powa_stat_bgwriter_purge | | | t | 100 + 0 | module | pg_stat_bgwriter | reset | f | powa_stat_bgwriter_reset | | | t | 100 + 0 | module | pg_stat_bgwriter | snapshot | f | powa_stat_bgwriter_snapshot | powa_stat_bgwriter_src | | t | 100 + 0 | module | pg_stat_checkpointer | aggregate | f | powa_stat_checkpointer_aggregate | | | t | 100 + 0 | module | pg_stat_checkpointer | purge | f | powa_stat_checkpointer_purge | | | t | 100 + 0 | module | pg_stat_checkpointer | reset | f | powa_stat_checkpointer_reset | | | t | 100 + 0 | module | pg_stat_checkpointer | snapshot | f | powa_stat_checkpointer_snapshot | powa_stat_checkpointer_src | | t | 100 + 0 | module | pg_stat_database | aggregate | f | powa_stat_database_aggregate | | | t | 100 + 0 | module | pg_stat_database | purge | f | powa_stat_database_purge | | | t | 100 + 0 | module | pg_stat_database | reset | f | powa_stat_database_reset | | | t | 100 + 0 | module | pg_stat_database | snapshot | f | powa_stat_database_snapshot | powa_stat_database_src | | t | 100 + 0 | module | pg_stat_database_conflicts | aggregate | f | powa_stat_database_conflicts_aggregate | | | t | 100 + 0 | module | pg_stat_database_conflicts | purge | f | powa_stat_database_conflicts_purge | | | t | 100 + 0 | module | pg_stat_database_conflicts | reset | f | powa_stat_database_conflicts_reset | | | t | 100 + 0 | module | pg_stat_database_conflicts | snapshot | f | powa_stat_database_conflicts_snapshot | powa_stat_database_conflicts_src | | t | 100 + 0 | module | pg_stat_io | aggregate | f | powa_stat_io_aggregate | | | t | 100 + 0 | module | pg_stat_io | purge | f | powa_stat_io_purge | | | t | 100 + 0 | module | pg_stat_io | reset | f | powa_stat_io_reset | | | t | 100 + 0 | module | pg_stat_io | snapshot | f | powa_stat_io_snapshot | powa_stat_io_src | | t | 100 + 0 | module | pg_stat_slru | aggregate | f | powa_stat_slru_aggregate | | | t | 100 + 0 | module | pg_stat_slru | purge | f | powa_stat_slru_purge | | | t | 100 + 0 | module | pg_stat_slru | reset | f | powa_stat_slru_reset | | | t | 100 + 0 | module | pg_stat_slru | snapshot | f | powa_stat_slru_snapshot | powa_stat_slru_src | | t | 100 + 0 | extension | pg_stat_statements | aggregate | f | powa_statements_aggregate | | | t | 10 + 0 | extension | pg_stat_statements | purge | f | powa_databases_purge | | | t | 10 + 0 | extension | pg_stat_statements | purge | f | powa_statements_purge | | | t | 10 + 0 | extension | pg_stat_statements | reset | f | powa_statements_reset | | | t | 10 + 0 | extension | pg_stat_statements | snapshot | f | powa_databases_snapshot | powa_databases_src | | t | -3 + 0 | extension | pg_stat_statements | snapshot | f | powa_statements_snapshot | powa_statements_src | | t | -2 + 0 | module | pg_stat_subscription_stats | aggregate | f | powa_stat_subscription_stats_aggregate | | | t | 100 + 0 | module | pg_stat_subscription_stats | purge | f | powa_stat_subscription_stats_purge | | | t | 100 + 0 | module | pg_stat_subscription_stats | reset | f | powa_stat_subscription_stats_reset | | | t | 100 + 0 | module | pg_stat_subscription_stats | snapshot | f | powa_stat_subscription_stats_snapshot | powa_stat_subscription_stats_src | | t | 100 + 0 | module | pg_stat_wal | aggregate | f | powa_stat_wal_aggregate | | | t | 100 + 0 | module | pg_stat_wal | purge | f | powa_stat_wal_purge | | | t | 100 + 0 | module | pg_stat_wal | reset | f | powa_stat_wal_reset | | | t | 100 + 0 | module | pg_stat_wal | snapshot | f | powa_stat_wal_snapshot | powa_stat_wal_src | | t | 100 +(50 rows) + diff --git a/expected/01_general.out b/expected/01_general.out index 4f084bc..92a47cd 100644 --- a/expected/01_general.out +++ b/expected/01_general.out @@ -99,78 +99,6 @@ ORDER BY ext.relname::text COLLATE "C", a.attname::text COLLATe "C"; -- Aggregate data every 5 snapshots SET powa.coalesce = 5; --- Test created ojects -SELECT * FROM "PoWA".powa_functions ORDER BY name, operation, priority, function_name; - srvid | kind | name | operation | external | function_name | query_source | query_cleanup | enabled | priority --------+-----------+----------------------------+-----------+----------+----------------------------------------+----------------------------------+---------------+---------+---------- - 0 | module | pg_database | reset | f | powa_catalog_database_reset | | | t | 100 - 0 | module | pg_database | snapshot | f | powa_catalog_database_snapshot | powa_catalog_database_src | | t | 100 - 0 | module | pg_replication_slots | aggregate | f | powa_replication_slots_aggregate | | | t | 100 - 0 | module | pg_replication_slots | purge | f | powa_replication_slots_purge | | | t | 100 - 0 | module | pg_replication_slots | reset | f | powa_replication_slots_reset | | | t | 100 - 0 | module | pg_replication_slots | snapshot | f | powa_replication_slots_snapshot | powa_replication_slots_src | | t | 100 - 0 | module | pg_role | reset | f | powa_catalog_role_reset | | | t | 100 - 0 | module | pg_role | snapshot | f | powa_catalog_role_snapshot | powa_catalog_role_src | | t | 100 - 0 | module | pg_stat_activity | aggregate | f | powa_stat_activity_aggregate | | | t | 100 - 0 | module | pg_stat_activity | purge | f | powa_stat_activity_purge | | | t | 100 - 0 | module | pg_stat_activity | reset | f | powa_stat_activity_reset | | | t | 100 - 0 | module | pg_stat_activity | snapshot | f | powa_stat_activity_snapshot | powa_stat_activity_src | | t | 100 - 0 | module | pg_stat_archiver | aggregate | f | powa_stat_archiver_aggregate | | | t | 100 - 0 | module | pg_stat_archiver | purge | f | powa_stat_archiver_purge | | | t | 100 - 0 | module | pg_stat_archiver | reset | f | powa_stat_archiver_reset | | | t | 100 - 0 | module | pg_stat_archiver | snapshot | f | powa_stat_archiver_snapshot | powa_stat_archiver_src | | t | 100 - 0 | module | pg_stat_bgwriter | aggregate | f | powa_stat_bgwriter_aggregate | | | t | 100 - 0 | module | pg_stat_bgwriter | purge | f | powa_stat_bgwriter_purge | | | t | 100 - 0 | module | pg_stat_bgwriter | reset | f | powa_stat_bgwriter_reset | | | t | 100 - 0 | module | pg_stat_bgwriter | snapshot | f | powa_stat_bgwriter_snapshot | powa_stat_bgwriter_src | | t | 100 - 0 | module | pg_stat_checkpointer | aggregate | f | powa_stat_checkpointer_aggregate | | | t | 100 - 0 | module | pg_stat_checkpointer | purge | f | powa_stat_checkpointer_purge | | | t | 100 - 0 | module | pg_stat_checkpointer | reset | f | powa_stat_checkpointer_reset | | | t | 100 - 0 | module | pg_stat_checkpointer | snapshot | f | powa_stat_checkpointer_snapshot | powa_stat_checkpointer_src | | t | 100 - 0 | module | pg_stat_database | aggregate | f | powa_stat_database_aggregate | | | t | 100 - 0 | module | pg_stat_database | purge | f | powa_stat_database_purge | | | t | 100 - 0 | module | pg_stat_database | reset | f | powa_stat_database_reset | | | t | 100 - 0 | module | pg_stat_database | snapshot | f | powa_stat_database_snapshot | powa_stat_database_src | | t | 100 - 0 | module | pg_stat_database_conflicts | aggregate | f | powa_stat_database_conflicts_aggregate | | | t | 100 - 0 | module | pg_stat_database_conflicts | purge | f | powa_stat_database_conflicts_purge | | | t | 100 - 0 | module | pg_stat_database_conflicts | reset | f | powa_stat_database_conflicts_reset | | | t | 100 - 0 | module | pg_stat_database_conflicts | snapshot | f | powa_stat_database_conflicts_snapshot | powa_stat_database_conflicts_src | | t | 100 - 0 | module | pg_stat_io | aggregate | f | powa_stat_io_aggregate | | | t | 100 - 0 | module | pg_stat_io | purge | f | powa_stat_io_purge | | | t | 100 - 0 | module | pg_stat_io | reset | f | powa_stat_io_reset | | | t | 100 - 0 | module | pg_stat_io | snapshot | f | powa_stat_io_snapshot | powa_stat_io_src | | t | 100 - 0 | module | pg_stat_replication | aggregate | f | powa_stat_replication_aggregate | | | t | 100 - 0 | module | pg_stat_replication | purge | f | powa_stat_replication_purge | | | t | 100 - 0 | module | pg_stat_replication | reset | f | powa_stat_replication_reset | | | t | 100 - 0 | module | pg_stat_replication | snapshot | f | powa_stat_replication_snapshot | powa_stat_replication_src | | t | 100 - 0 | module | pg_stat_slru | aggregate | f | powa_stat_slru_aggregate | | | t | 100 - 0 | module | pg_stat_slru | purge | f | powa_stat_slru_purge | | | t | 100 - 0 | module | pg_stat_slru | reset | f | powa_stat_slru_reset | | | t | 100 - 0 | module | pg_stat_slru | snapshot | f | powa_stat_slru_snapshot | powa_stat_slru_src | | t | 100 - 0 | extension | pg_stat_statements | aggregate | f | powa_statements_aggregate | | | t | 10 - 0 | extension | pg_stat_statements | purge | f | powa_databases_purge | | | t | 10 - 0 | extension | pg_stat_statements | purge | f | powa_statements_purge | | | t | 10 - 0 | extension | pg_stat_statements | reset | f | powa_statements_reset | | | t | 10 - 0 | extension | pg_stat_statements | snapshot | f | powa_databases_snapshot | powa_databases_src | | t | -3 - 0 | extension | pg_stat_statements | snapshot | f | powa_statements_snapshot | powa_statements_src | | t | -2 - 0 | module | pg_stat_subscription | aggregate | f | powa_stat_subscription_aggregate | | | t | 100 - 0 | module | pg_stat_subscription | purge | f | powa_stat_subscription_purge | | | t | 100 - 0 | module | pg_stat_subscription | reset | f | powa_stat_subscription_reset | | | t | 100 - 0 | module | pg_stat_subscription | snapshot | f | powa_stat_subscription_snapshot | powa_stat_subscription_src | | t | 100 - 0 | module | pg_stat_subscription_stats | aggregate | f | powa_stat_subscription_stats_aggregate | | | t | 100 - 0 | module | pg_stat_subscription_stats | purge | f | powa_stat_subscription_stats_purge | | | t | 100 - 0 | module | pg_stat_subscription_stats | reset | f | powa_stat_subscription_stats_reset | | | t | 100 - 0 | module | pg_stat_subscription_stats | snapshot | f | powa_stat_subscription_stats_snapshot | powa_stat_subscription_stats_src | | t | 100 - 0 | module | pg_stat_wal | aggregate | f | powa_stat_wal_aggregate | | | t | 100 - 0 | module | pg_stat_wal | purge | f | powa_stat_wal_purge | | | t | 100 - 0 | module | pg_stat_wal | reset | f | powa_stat_wal_reset | | | t | 100 - 0 | module | pg_stat_wal | snapshot | f | powa_stat_wal_snapshot | powa_stat_wal_src | | t | 100 - 0 | module | pg_stat_wal_receiver | aggregate | f | powa_stat_wal_receiver_aggregate | | | t | 100 - 0 | module | pg_stat_wal_receiver | purge | f | powa_stat_wal_receiver_purge | | | t | 100 - 0 | module | pg_stat_wal_receiver | reset | f | powa_stat_wal_receiver_reset | | | t | 100 - 0 | module | pg_stat_wal_receiver | snapshot | f | powa_stat_wal_receiver_snapshot | powa_stat_wal_receiver_src | | t | 100 -(66 rows) - -- test C SRFs SELECT COUNT(*) = 0 FROM pg_database, diff --git a/powa--5.0.0dev.sql b/powa--5.0.0dev.sql index 930c7ab..5d76fdc 100644 --- a/powa--5.0.0dev.sql +++ b/powa--5.0.0dev.sql @@ -210,7 +210,8 @@ INSERT INTO @extschema@.powa_extension_config (srvid, extname, added_manually) V -- This is for cluster-wide core views, we don't support custom datasources -- here. CREATE TABLE @extschema@.powa_modules ( - module text NOT NULL PRIMARY KEY + module text NOT NULL PRIMARY KEY, + min_version integer NOT NULL DEFAULT 0 ); -- we only manually insert data in this table (and the other related tables) @@ -262,8 +263,10 @@ CREATE VIEW @extschema@.powa_functions AS UNION ALL SELECT srvid, 'module' AS kind, module AS name, operation, false, function_name, query_source, NULL, enabled, 100 - FROM @extschema@.powa_module_functions f - JOIN @extschema@.powa_module_config c USING (module); + FROM @extschema@.powa_modules m + JOIN @extschema@.powa_module_functions f USING (module) + JOIN @extschema@.powa_module_config c USING (module) + WHERE current_setting('server_version_num')::int >= m.min_version; CREATE TABLE @extschema@.powa_db_modules ( db_module text NOT NULL PRIMARY KEY, @@ -1213,7 +1216,8 @@ CREATE FUNCTION @extschema@.powa_generic_module_setup(_pg_module text, _nullable text[] DEFAULT '{}', _need_operators boolean default true, _key_cols text[] DEFAULT '{}', - _key_nullable boolean DEFAULT false) + _key_nullable boolean DEFAULT false, + _min_version integer DEFAULT 0) RETURNS void AS $$ DECLARE @@ -1241,7 +1245,7 @@ BEGIN v_module := regexp_replace(_pg_module, '^pg', 'powa'); -- declare the module and its configuration - INSERT INTO @extschema@.powa_modules VALUES (_pg_module); + INSERT INTO @extschema@.powa_modules VALUES (_pg_module, _min_version); INSERT INTO @extschema@.powa_module_config VALUES (0, _pg_module, false); INSERT INTO @extschema@.powa_module_functions VALUES (_pg_module, 'snapshot', v_module || '_snapshot', v_module || '_src'), @@ -1651,7 +1655,9 @@ _key_cols => $${ {slot_name, text}, {plugin, text}, {slot_type, text}, {datoid, oid}, {temporary, boolean} }$$, -_key_nullable => true); +_key_nullable => true, +_min_version => 130000 +); SELECT @extschema@.powa_generic_module_setup('pg_stat_activity', $${ @@ -1766,7 +1772,9 @@ $${ pid, usename, application_name, client_addr, backend_start, backend_xmin, state, sent_lsn, write_lsn, flush_lsn, replay_lsn, write_lag, flush_lag, replay_lag, sync_priority, sync_state, reply_time -}$$); +}$$, +_min_version => 130000 +); SELECT @extschema@.powa_generic_module_setup('pg_stat_slru', $${ @@ -1792,7 +1800,9 @@ last_msg_receipt_time, latest_end_lsn, latest_end_time }$$, _key_cols => $${ {subid, oid}, {subname, name} -}$$); +}$$, +_min_version => 130000 +); -- we don't save subname, it can be found in pg_stat_subscription SELECT @extschema@.powa_generic_module_setup('pg_stat_subscription_stats', @@ -1830,7 +1840,9 @@ $${ _key_cols => $${ {slot_name, text}, {sender_host, text}, {sender_port, integer} }$$, -_key_nullable => true); +_key_nullable => true, +_min_version => 130000 +); SELECT @extschema@.powa_generic_datatype_setup('powa_kcache', $${ @@ -1865,7 +1877,7 @@ $${ }$$); DROP FUNCTION @extschema@.powa_generic_datatype_setup(text, text[], jsonb, boolean); -DROP FUNCTION @extschema@.powa_generic_module_setup(text, text[], text[], boolean, text[], boolean); +DROP FUNCTION @extschema@.powa_generic_module_setup(text, text[], text[], boolean, text[], boolean, integer); /* pg_catalog import support */ CREATE UNLOGGED TABLE @extschema@.powa_catalog_class_src_tmp ( diff --git a/sql/00_setup.sql b/sql/00_setup.sql index 0d99290..dff1d3b 100644 --- a/sql/00_setup.sql +++ b/sql/00_setup.sql @@ -4,3 +4,6 @@ CREATE EXTENSION pg_stat_statements WITH SCHEMA "PGSS"; CREATE EXTENSION btree_gist; CREATE SCHEMA "PoWA"; CREATE EXTENSION powa WITH SCHEMA "PoWA"; + +-- Test created ojects +SELECT * FROM "PoWA".powa_functions ORDER BY name, operation, priority, function_name; diff --git a/sql/01_general.sql b/sql/01_general.sql index a53e98b..346bf69 100644 --- a/sql/01_general.sql +++ b/sql/01_general.sql @@ -82,9 +82,6 @@ ORDER BY ext.relname::text COLLATE "C", a.attname::text COLLATe "C"; -- Aggregate data every 5 snapshots SET powa.coalesce = 5; --- Test created ojects -SELECT * FROM "PoWA".powa_functions ORDER BY name, operation, priority, function_name; - -- test C SRFs SELECT COUNT(*) = 0 FROM pg_database,