diff --git a/contrib/postgres_fdw/expected/postgres_fdw.out b/contrib/postgres_fdw/expected/postgres_fdw.out
index f8418baba30c06eff47aa381ab0b7d72eab66434..07c7970dc7b256f92b34783d5c69e79de6d77020 100644
--- a/contrib/postgres_fdw/expected/postgres_fdw.out
+++ b/contrib/postgres_fdw/expected/postgres_fdw.out
@@ -78,7 +78,7 @@ ALTER FOREIGN TABLE ft2 DROP COLUMN c0;
 -- requiressl, krbsrvname and gsslib are omitted because they depend on
 -- configure options
 ALTER SERVER testserver1 OPTIONS (
-	use_remote_explain 'false',
+	use_remote_estimate 'false',
 	fdw_startup_cost '123.456',
 	fdw_tuple_cost '0.123',
 	service 'value',
@@ -121,9 +121,9 @@ ALTER FOREIGN TABLE ft2 ALTER COLUMN c1 OPTIONS (column_name 'C 1');
 
 -- Now we should be able to run ANALYZE.
 -- To exercise multiple code paths, we use local stats on ft1
--- and remote_explain mode on ft2.
+-- and remote-estimate mode on ft2.
 ANALYZE ft1;
-ALTER FOREIGN TABLE ft2 OPTIONS (use_remote_explain 'true');
+ALTER FOREIGN TABLE ft2 OPTIONS (use_remote_estimate 'true');
 -- ===================================================================
 -- simple queries
 -- ===================================================================
diff --git a/contrib/postgres_fdw/option.c b/contrib/postgres_fdw/option.c
index 3a3ae226276c3f1cb1576b0c7526e05dbc787d83..123cb4f010490294092e1135115ffeafbd99dc90 100644
--- a/contrib/postgres_fdw/option.c
+++ b/contrib/postgres_fdw/option.c
@@ -106,9 +106,9 @@ postgres_fdw_validator(PG_FUNCTION_ARGS)
 		/*
 		 * Validate option value, when we can do so without any context.
 		 */
-		if (strcmp(def->defname, "use_remote_explain") == 0)
+		if (strcmp(def->defname, "use_remote_estimate") == 0)
 		{
-			/* use_remote_explain accepts only boolean values */
+			/* use_remote_estimate accepts only boolean values */
 			(void) defGetBoolean(def);
 		}
 		else if (strcmp(def->defname, "fdw_startup_cost") == 0 ||
@@ -145,9 +145,9 @@ InitPgFdwOptions(void)
 		{"schema_name", ForeignTableRelationId, false},
 		{"table_name", ForeignTableRelationId, false},
 		{"column_name", AttributeRelationId, false},
-		/* use_remote_explain is available on both server and table */
-		{"use_remote_explain", ForeignServerRelationId, false},
-		{"use_remote_explain", ForeignTableRelationId, false},
+		/* use_remote_estimate is available on both server and table */
+		{"use_remote_estimate", ForeignServerRelationId, false},
+		{"use_remote_estimate", ForeignTableRelationId, false},
 		/* cost factors */
 		{"fdw_startup_cost", ForeignServerRelationId, false},
 		{"fdw_tuple_cost", ForeignServerRelationId, false},
diff --git a/contrib/postgres_fdw/postgres_fdw.c b/contrib/postgres_fdw/postgres_fdw.c
index 99dc6aef135c018616a08a13e12b12cf8fd9bed2..a46597f02eaeb0a35c566373173c420d65547f66 100644
--- a/contrib/postgres_fdw/postgres_fdw.c
+++ b/contrib/postgres_fdw/postgres_fdw.c
@@ -248,7 +248,7 @@ postgresGetForeignRelSize(PlannerInfo *root,
 						  RelOptInfo *baserel,
 						  Oid foreigntableid)
 {
-	bool		use_remote_explain = false;
+	bool		use_remote_estimate = false;
 	ListCell   *lc;
 	PgFdwRelationInfo *fpinfo;
 	StringInfo	sql;
@@ -285,9 +285,9 @@ postgresGetForeignRelSize(PlannerInfo *root,
 	{
 		DefElem    *def = (DefElem *) lfirst(lc);
 
-		if (strcmp(def->defname, "use_remote_explain") == 0)
+		if (strcmp(def->defname, "use_remote_estimate") == 0)
 		{
-			use_remote_explain = defGetBoolean(def);
+			use_remote_estimate = defGetBoolean(def);
 			break;
 		}
 	}
@@ -295,9 +295,9 @@ postgresGetForeignRelSize(PlannerInfo *root,
 	{
 		DefElem    *def = (DefElem *) lfirst(lc);
 
-		if (strcmp(def->defname, "use_remote_explain") == 0)
+		if (strcmp(def->defname, "use_remote_estimate") == 0)
 		{
-			use_remote_explain = defGetBoolean(def);
+			use_remote_estimate = defGetBoolean(def);
 			break;
 		}
 	}
@@ -315,12 +315,12 @@ postgresGetForeignRelSize(PlannerInfo *root,
 		appendWhereClause(sql, true, remote_conds, root);
 
 	/*
-	 * If the table or the server is configured to use remote EXPLAIN, connect
-	 * to the foreign server and execute EXPLAIN with the quals that don't
-	 * contain any Param nodes.  Otherwise, estimate rows using whatever
+	 * If the table or the server is configured to use remote estimates,
+	 * connect to the foreign server and execute EXPLAIN with the quals that
+	 * don't contain any Param nodes.  Otherwise, estimate rows using whatever
 	 * statistics we have locally, in a way similar to ordinary tables.
 	 */
-	if (use_remote_explain)
+	if (use_remote_estimate)
 	{
 		RangeTblEntry *rte;
 		Oid			userid;
diff --git a/contrib/postgres_fdw/sql/postgres_fdw.sql b/contrib/postgres_fdw/sql/postgres_fdw.sql
index 8569474694e50b53b27bb936df3fe7b3aceaee9e..0b0231bc3063f0913ae6b74b7afa6c760a88632e 100644
--- a/contrib/postgres_fdw/sql/postgres_fdw.sql
+++ b/contrib/postgres_fdw/sql/postgres_fdw.sql
@@ -87,7 +87,7 @@ ALTER FOREIGN TABLE ft2 DROP COLUMN c0;
 -- requiressl, krbsrvname and gsslib are omitted because they depend on
 -- configure options
 ALTER SERVER testserver1 OPTIONS (
-	use_remote_explain 'false',
+	use_remote_estimate 'false',
 	fdw_startup_cost '123.456',
 	fdw_tuple_cost '0.123',
 	service 'value',
@@ -124,9 +124,9 @@ ALTER FOREIGN TABLE ft2 ALTER COLUMN c1 OPTIONS (column_name 'C 1');
 
 -- Now we should be able to run ANALYZE.
 -- To exercise multiple code paths, we use local stats on ft1
--- and remote_explain mode on ft2.
+-- and remote-estimate mode on ft2.
 ANALYZE ft1;
-ALTER FOREIGN TABLE ft2 OPTIONS (use_remote_explain 'true');
+ALTER FOREIGN TABLE ft2 OPTIONS (use_remote_estimate 'true');
 
 -- ===================================================================
 -- simple queries