commit 0f8ce0be5af0a03c80a6b9e3e89519029e66359b
Author: Erica Zhang <ericazhangy@qq.com>
Date:   Tue Mar 9 03:06:36 2021 +0000

    Add some tests for pg_stat_statements compatibility verification

diff --git a/contrib/pg_stat_statements/expected/pg_stat_statements.out b/contrib/pg_stat_statements/expected/pg_stat_statements.out
index 16158525ca..12ee506015 100644
--- a/contrib/pg_stat_statements/expected/pg_stat_statements.out
+++ b/contrib/pg_stat_statements/expected/pg_stat_statements.out
@@ -877,3 +877,137 @@ SELECT dealloc FROM pg_stat_statements_info;
 (1 row)
 
 DROP EXTENSION pg_stat_statements;
+--
+-- Verify compatible with older versions.
+-- Currently the lowest version supported is 1.4.
+-- 
+CREATE EXTENSION pg_stat_statements with version '1.4';
+SELECT installed_version = default_version, installed_version FROM pg_available_extensions WHERE name = 'pg_stat_statements';
+ ?column? | installed_version 
+----------+-------------------
+ f        | 1.4
+(1 row)
+
+SELECT pg_stat_statements_reset();
+ pg_stat_statements_reset 
+--------------------------
+ 
+(1 row)
+
+SELECT count(query) FROM pg_stat_statements;
+ count 
+-------
+     2
+(1 row)
+
+---
+--- Install pg_stat_statements extension version 1.5
+---
+AlTER EXTENSION pg_stat_statements update to '1.5';
+SELECT installed_version = default_version, installed_version FROM pg_available_extensions WHERE name = 'pg_stat_statements';
+ ?column? | installed_version 
+----------+-------------------
+ f        | 1.5
+(1 row)
+
+SELECT pg_stat_statements_reset();
+ pg_stat_statements_reset 
+--------------------------
+ 
+(1 row)
+
+SELECT count(query) FROM pg_stat_statements;
+ count 
+-------
+     2
+(1 row)
+
+---
+--- Install pg_stat_statements extension version 1.6
+---
+AlTER EXTENSION pg_stat_statements update to '1.6';
+SELECT installed_version = default_version, installed_version FROM pg_available_extensions WHERE name = 'pg_stat_statements';
+ ?column? | installed_version 
+----------+-------------------
+ f        | 1.6
+(1 row)
+
+SELECT pg_stat_statements_reset();
+ pg_stat_statements_reset 
+--------------------------
+ 
+(1 row)
+
+SELECT count(query) FROM pg_stat_statements;
+ count 
+-------
+     2
+(1 row)
+
+---
+--- Install pg_stat_statements extension version 1.7
+---
+AlTER EXTENSION pg_stat_statements update to '1.7';
+SELECT installed_version = default_version, installed_version FROM pg_available_extensions WHERE name = 'pg_stat_statements';
+ ?column? | installed_version 
+----------+-------------------
+ f        | 1.7
+(1 row)
+
+SELECT pg_stat_statements_reset();
+ pg_stat_statements_reset 
+--------------------------
+ 
+(1 row)
+
+SELECT count(query) FROM pg_stat_statements;
+ count 
+-------
+     2
+(1 row)
+
+---
+--- Install pg_stat_statements extension version 1.8
+---
+AlTER EXTENSION pg_stat_statements update to '1.8';
+SELECT installed_version = default_version, installed_version FROM pg_available_extensions WHERE name = 'pg_stat_statements';
+ ?column? | installed_version 
+----------+-------------------
+ f        | 1.8
+(1 row)
+
+SELECT pg_stat_statements_reset();
+ pg_stat_statements_reset 
+--------------------------
+ 
+(1 row)
+
+SELECT count(plans) FROM pg_stat_statements;
+ count 
+-------
+     2
+(1 row)
+
+---
+--- Install pg_stat_statements extension to 1.9
+---
+AlTER EXTENSION pg_stat_statements update to '1.9';
+SELECT installed_version = default_version, installed_version FROM pg_available_extensions WHERE name = 'pg_stat_statements';
+ ?column? | installed_version 
+----------+-------------------
+ t        | 1.9
+(1 row)
+
+SELECT pg_stat_statements_reset();
+ pg_stat_statements_reset 
+--------------------------
+ 
+(1 row)
+
+SELECT dealloc FROM pg_stat_statements_info;
+ dealloc 
+---------
+       0
+(1 row)
+
+DROP EXTENSION pg_stat_statements;
diff --git a/contrib/pg_stat_statements/sql/pg_stat_statements.sql b/contrib/pg_stat_statements/sql/pg_stat_statements.sql
index 6f58d9d0f6..a7ce74a18a 100644
--- a/contrib/pg_stat_statements/sql/pg_stat_statements.sql
+++ b/contrib/pg_stat_statements/sql/pg_stat_statements.sql
@@ -365,3 +365,54 @@ SELECT pg_stat_statements_reset();
 SELECT dealloc FROM pg_stat_statements_info;
 
 DROP EXTENSION pg_stat_statements;
+
+--
+-- Verify compatible with older versions.
+-- Currently the lowest version supported is 1.4.
+-- 
+CREATE EXTENSION pg_stat_statements with version '1.4';
+SELECT installed_version = default_version, installed_version FROM pg_available_extensions WHERE name = 'pg_stat_statements';
+SELECT pg_stat_statements_reset();
+SELECT count(query) FROM pg_stat_statements;
+
+---
+--- Install pg_stat_statements extension version 1.5
+---
+AlTER EXTENSION pg_stat_statements update to '1.5';
+SELECT installed_version = default_version, installed_version FROM pg_available_extensions WHERE name = 'pg_stat_statements';
+SELECT pg_stat_statements_reset();
+SELECT count(query) FROM pg_stat_statements;
+
+---
+--- Install pg_stat_statements extension version 1.6
+---
+AlTER EXTENSION pg_stat_statements update to '1.6';
+SELECT installed_version = default_version, installed_version FROM pg_available_extensions WHERE name = 'pg_stat_statements';
+SELECT pg_stat_statements_reset();
+SELECT count(query) FROM pg_stat_statements;
+
+---
+--- Install pg_stat_statements extension version 1.7
+---
+AlTER EXTENSION pg_stat_statements update to '1.7';
+SELECT installed_version = default_version, installed_version FROM pg_available_extensions WHERE name = 'pg_stat_statements';
+SELECT pg_stat_statements_reset();
+SELECT count(query) FROM pg_stat_statements;
+
+---
+--- Install pg_stat_statements extension version 1.8
+---
+AlTER EXTENSION pg_stat_statements update to '1.8';
+SELECT installed_version = default_version, installed_version FROM pg_available_extensions WHERE name = 'pg_stat_statements';
+SELECT pg_stat_statements_reset();
+SELECT count(plans) FROM pg_stat_statements;
+
+---
+--- Install pg_stat_statements extension to 1.9
+---
+AlTER EXTENSION pg_stat_statements update to '1.9';
+SELECT installed_version = default_version, installed_version FROM pg_available_extensions WHERE name = 'pg_stat_statements';
+SELECT pg_stat_statements_reset();
+SELECT dealloc FROM pg_stat_statements_info;
+
+DROP EXTENSION pg_stat_statements;
