commit c1a1216b7c7a7db132c954a29a3d91d00c7e918c
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..13dc9271f6 100644
--- a/contrib/pg_stat_statements/expected/pg_stat_statements.out
+++ b/contrib/pg_stat_statements/expected/pg_stat_statements.out
@@ -877,3 +877,142 @@ 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 count(*) FROM pg_available_extensions WHERE name = 'pg_stat_statements' and installed_version = '1.4';
+ count 
+-------
+     1
+(1 row)
+
+SELECT pg_stat_statements_reset();
+ pg_stat_statements_reset 
+--------------------------
+ 
+(1 row)
+
+SELECT count(query) FROM pg_stat_statements;
+ count 
+-------
+     2
+(1 row)
+
+DROP EXTENSION pg_stat_statements;
+---
+--- Install pg_stat_statements extension version 1.5
+---
+CREATE EXTENSION pg_stat_statements with version '1.5';
+SELECT count(*) FROM pg_available_extensions WHERE name = 'pg_stat_statements' and installed_version = '1.5';
+ count 
+-------
+     1
+(1 row)
+
+SELECT pg_stat_statements_reset();
+ pg_stat_statements_reset 
+--------------------------
+ 
+(1 row)
+
+SELECT count(query) FROM pg_stat_statements;
+ count 
+-------
+     2
+(1 row)
+
+DROP EXTENSION pg_stat_statements;
+---
+--- Install pg_stat_statements extension version 1.6
+---
+CREATE EXTENSION pg_stat_statements with version '1.6';
+SELECT count(*) FROM pg_available_extensions WHERE name = 'pg_stat_statements' and installed_version = '1.6';
+ count 
+-------
+     1
+(1 row)
+
+SELECT pg_stat_statements_reset();
+ pg_stat_statements_reset 
+--------------------------
+ 
+(1 row)
+
+SELECT count(query) FROM pg_stat_statements;
+ count 
+-------
+     2
+(1 row)
+
+DROP EXTENSION pg_stat_statements;
+---
+--- Install pg_stat_statements extension version 1.7
+---
+CREATE EXTENSION pg_stat_statements with version '1.7';
+SELECT count(*) FROM pg_available_extensions WHERE name = 'pg_stat_statements' and installed_version = '1.7';
+ count 
+-------
+     1
+(1 row)
+
+SELECT pg_stat_statements_reset();
+ pg_stat_statements_reset 
+--------------------------
+ 
+(1 row)
+
+SELECT count(query) FROM pg_stat_statements;
+ count 
+-------
+     2
+(1 row)
+
+DROP EXTENSION pg_stat_statements;
+---
+--- Install pg_stat_statements extension version 1.8
+---
+CREATE EXTENSION pg_stat_statements with version '1.8';
+SELECT count(*) FROM pg_available_extensions WHERE name = 'pg_stat_statements' and installed_version = '1.8';
+ count 
+-------
+     1
+(1 row)
+
+SELECT pg_stat_statements_reset();
+ pg_stat_statements_reset 
+--------------------------
+ 
+(1 row)
+
+SELECT count(plans) FROM pg_stat_statements;
+ count 
+-------
+     2
+(1 row)
+
+DROP EXTENSION pg_stat_statements;
+---
+--- Install pg_stat_statements extension to 1.9
+---
+CREATE EXTENSION pg_stat_statements with version '1.9';
+SELECT * FROM pg_available_extensions WHERE name = 'pg_stat_statements' and installed_version = '1.9';
+        name        | default_version | installed_version |                                comment                                 
+--------------------+-----------------+-------------------+------------------------------------------------------------------------
+ pg_stat_statements | 1.9             | 1.9               | track planning and execution statistics of all SQL statements executed
+(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..1fcd5c00db 100644
--- a/contrib/pg_stat_statements/sql/pg_stat_statements.sql
+++ b/contrib/pg_stat_statements/sql/pg_stat_statements.sql
@@ -365,3 +365,59 @@ 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 count(*) FROM pg_available_extensions WHERE name = 'pg_stat_statements' and installed_version = '1.4';
+SELECT pg_stat_statements_reset();
+SELECT count(query) FROM pg_stat_statements;
+DROP EXTENSION pg_stat_statements;
+
+---
+--- Install pg_stat_statements extension version 1.5
+---
+CREATE EXTENSION pg_stat_statements with version '1.5';
+SELECT count(*) FROM pg_available_extensions WHERE name = 'pg_stat_statements' and installed_version = '1.5';
+SELECT pg_stat_statements_reset();
+SELECT count(query) FROM pg_stat_statements;
+DROP EXTENSION pg_stat_statements;
+
+---
+--- Install pg_stat_statements extension version 1.6
+---
+CREATE EXTENSION pg_stat_statements with version '1.6';
+SELECT count(*) FROM pg_available_extensions WHERE name = 'pg_stat_statements' and installed_version = '1.6';
+SELECT pg_stat_statements_reset();
+SELECT count(query) FROM pg_stat_statements;
+DROP EXTENSION pg_stat_statements;
+
+---
+--- Install pg_stat_statements extension version 1.7
+---
+CREATE EXTENSION pg_stat_statements with version '1.7';
+SELECT count(*) FROM pg_available_extensions WHERE name = 'pg_stat_statements' and installed_version = '1.7';
+SELECT pg_stat_statements_reset();
+SELECT count(query) FROM pg_stat_statements;
+DROP EXTENSION pg_stat_statements;
+
+---
+--- Install pg_stat_statements extension version 1.8
+---
+CREATE EXTENSION pg_stat_statements with version '1.8';
+SELECT count(*) FROM pg_available_extensions WHERE name = 'pg_stat_statements' and installed_version = '1.8';
+SELECT pg_stat_statements_reset();
+SELECT count(plans) FROM pg_stat_statements;
+DROP EXTENSION pg_stat_statements;
+
+---
+--- Install pg_stat_statements extension to 1.9
+---
+CREATE EXTENSION pg_stat_statements with version '1.9';
+SELECT * FROM pg_available_extensions WHERE name = 'pg_stat_statements' and installed_version = '1.9';
+SELECT pg_stat_statements_reset();
+SELECT dealloc FROM pg_stat_statements_info;
+
+DROP EXTENSION pg_stat_statements;
