diff --git a/src/bin/pg_upgrade/version.c b/src/bin/pg_upgrade/version.c
index 0dff96b..a4d9f7b 100644
--- a/src/bin/pg_upgrade/version.c
+++ b/src/bin/pg_upgrade/version.c
@@ -144,13 +144,27 @@ check_for_data_type_usage(ClusterInfo *cluster, const char *typename,
 		/* domains on any type selected so far */
 						  "			SELECT t.oid FROM pg_catalog.pg_type t, x WHERE typbasetype = x.oid AND typtype = 'd' "
 						  "			UNION ALL "
+		/* arrays over any type selected so far */
+						  "			SELECT t.oid FROM pg_catalog.pg_type t, x WHERE typelem = x.oid AND typtype = 'b' "
+						  "			UNION ALL "
 		/* composite types containing any type selected so far */
 						  "			SELECT t.oid FROM pg_catalog.pg_type t, pg_catalog.pg_class c, pg_catalog.pg_attribute a, x "
 						  "			WHERE t.typtype = 'c' AND "
 						  "				  t.oid = c.reltype AND "
 						  "				  c.oid = a.attrelid AND "
 						  "				  NOT a.attisdropped AND "
-						  "				  a.atttypid = x.oid "
+						  "				  a.atttypid = x.oid ",
+						  typename);
+
+		/* Ranges came in in 9.2 */
+		if (GET_MAJOR_VERSION(cluster->major_version) >= 902)
+			appendPQExpBuffer(&querybuf,
+							  "			UNION ALL "
+			/* ranges containing any type selected so far */
+							  "			SELECT t.oid FROM pg_catalog.pg_type t, pg_range r, x "
+							  "			WHERE t.typtype = 'r' AND r.rngtypid = t.oid AND r.rngsubtype = x.oid");
+
+		appendPQExpBuffer(&querybuf,
 						  "	) foo "
 						  ") "
 		/* now look for stored columns of any such type */
@@ -169,8 +183,7 @@ check_for_data_type_usage(ClusterInfo *cluster, const char *typename,
 		/* exclude possible orphaned temp tables */
 						  "		n.nspname !~ '^pg_temp_' AND "
 						  "		n.nspname !~ '^pg_toast_temp_' AND "
-						  "		n.nspname NOT IN ('pg_catalog', 'information_schema')",
-						  typename);
+						  "		n.nspname NOT IN ('pg_catalog', 'information_schema')");
 
 		res = executeQueryOrDie(conn, "%s", querybuf.data);
 
