diff --git a/contrib/pg_stat_statements/expected/pg_stat_statements.out b/contrib/pg_stat_statements/expected/pg_stat_statements.out
index 16158525ca..cde6f29444 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 from which upgrade is supported is 1.4.
+--
+CREATE EXTENSION pg_stat_statements with version '1.4';
+SELECT * FROM pg_available_extensions WHERE name = 'pg_stat_statements' and installed_version = '1.4';
+        name        | default_version | installed_version |                                comment
+--------------------+-----------------+-------------------+------------------------------------------------------------------------
+ pg_stat_statements | 1.9             | 1.4               | track planning and execution statistics of all SQL statements executed
+(1 row)
+
+SELECT pg_stat_statements_reset();
+ pg_stat_statements_reset
+--------------------------
+
+(1 row)
+
+SELECT count(query) FROM pg_stat_statements;
+ count
+-------
+     2
+(1 row)
+
+---
+--- Upgrade extension to 1.5
+---
+AlTER EXTENSION pg_stat_statements update to '1.5';
+SELECT * FROM pg_available_extensions WHERE name = 'pg_stat_statements' and installed_version = '1.5';
+        name        | default_version | installed_version |                                comment
+--------------------+-----------------+-------------------+------------------------------------------------------------------------
+ pg_stat_statements | 1.9             | 1.5               | track planning and execution statistics of all SQL statements executed
+(1 row)
+
+SELECT pg_stat_statements_reset();
+ pg_stat_statements_reset
+--------------------------
+
+(1 row)
+
+SELECT count(query) FROM pg_stat_statements;
+ count
+-------
+     2
+(1 row)
+
+---
+--- Upgrade extension to 1.6
+---
+AlTER EXTENSION pg_stat_statements update to '1.6';
+SELECT * FROM pg_available_extensions WHERE name = 'pg_stat_statements' and installed_version = '1.6';
+        name        | default_version | installed_version |                                comment
+--------------------+-----------------+-------------------+------------------------------------------------------------------------
+ pg_stat_statements | 1.9             | 1.6               | track planning and execution statistics of all SQL statements executed
+(1 row)
+
+SELECT pg_stat_statements_reset();
+ pg_stat_statements_reset
+--------------------------
+
+(1 row)
+
+SELECT count(query) FROM pg_stat_statements;
+ count
+-------
+     2
+(1 row)
+
+---
+--- Upgrade extension to 1.7
+---
+AlTER EXTENSION pg_stat_statements update to '1.7';
+SELECT * FROM pg_available_extensions WHERE name = 'pg_stat_statements' and installed_version = '1.7';
+        name        | default_version | installed_version |                                comment
+--------------------+-----------------+-------------------+------------------------------------------------------------------------
+ pg_stat_statements | 1.9             | 1.7               | track planning and execution statistics of all SQL statements executed
+(1 row)
+
+SELECT pg_stat_statements_reset();
+ pg_stat_statements_reset
+--------------------------
+
+(1 row)
+
+SELECT count(query) FROM pg_stat_statements;
+ count
+-------
+     2
+(1 row)
+
+---
+--- Upgrade extension to 1.8
+---
+AlTER EXTENSION pg_stat_statements update to '1.8';
+SELECT * FROM pg_available_extensions WHERE name = 'pg_stat_statements' and installed_version = '1.8';
+        name        | default_version | installed_version |                                comment
+--------------------+-----------------+-------------------+------------------------------------------------------------------------
+ pg_stat_statements | 1.9             | 1.8               | track planning and execution statistics of all SQL statements executed
+(1 row)
+
+SELECT pg_stat_statements_reset();
+ pg_stat_statements_reset
+--------------------------
+
+(1 row)
+
+SELECT count(plans) FROM pg_stat_statements;
+ count
+-------
+     2
+(1 row)
+
+---
+--- Upgrade extension to 1.9
+---
+AlTER EXTENSION pg_stat_statements update to '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..98d8a051b6 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 from which upgrade is supported is 1.4.
+--
+CREATE EXTENSION pg_stat_statements with version '1.4';
+SELECT * 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;
+
+---
+--- Upgrade extension to 1.5
+---
+AlTER EXTENSION pg_stat_statements update to '1.5';
+SELECT * 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;
+
+---
+--- Upgrade extension to 1.6
+---
+AlTER EXTENSION pg_stat_statements update to '1.6';
+SELECT * 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;
+
+---
+--- Upgrade extension to 1.7
+---
+AlTER EXTENSION pg_stat_statements update to '1.7';
+SELECT * 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;
+
+---
+--- Upgrade extension to 1.8
+---
+AlTER EXTENSION pg_stat_statements update to '1.8';
+SELECT * 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;
+
+---
+--- Upgrade extension to 1.9
+---
+AlTER EXTENSION pg_stat_statements update to '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;
