diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c
index 659daa2..e97d2fc 100644
--- a/src/backend/optimizer/path/costsize.c
+++ b/src/backend/optimizer/path/costsize.c
@@ -112,6 +112,7 @@ bool		enable_indexonlyscan = true;
 bool		enable_bitmapscan = true;
 bool		enable_tidscan = true;
 bool		enable_sort = true;
+bool		enable_sortedpath = true;
 bool		enable_hashagg = true;
 bool		enable_nestloop = true;
 bool		enable_material = true;
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
index f752ecc..1b38058 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -1179,7 +1179,7 @@ grouping_planner(PlannerInfo *root, double tuple_fraction)
 		standard_qp_extra qp_extra;
 		RelOptInfo *final_rel;
 		Path	   *cheapest_path;
-		Path	   *sorted_path;
+		Path	   *sorted_path = NULL;
 		Path	   *best_path;
 		long		numGroups = 0;
 		AggClauseCosts agg_costs;
@@ -1393,8 +1393,9 @@ grouping_planner(PlannerInfo *root, double tuple_fraction)
 		 */
 		cheapest_path = final_rel->cheapest_total_path;
 
-		sorted_path =
-			get_cheapest_fractional_path_for_pathkeys(final_rel->pathlist,
+		if (enable_sortedpath)
+			sorted_path =
+				get_cheapest_fractional_path_for_pathkeys(final_rel->pathlist,
 													  root->query_pathkeys,
 													  NULL,
 													  tuple_fraction);
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index b1bff7f..6d87f3e 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -762,6 +762,15 @@ static struct config_bool ConfigureNamesBool[] =
 		NULL, NULL, NULL
 	},
 	{
+		{"enable_sortedpath", PGC_USERSET, QUERY_TUNING_METHOD,
+			gettext_noop("Enables the planner's use of implicitly ordered steps."),
+			NULL
+		},
+		&enable_sortedpath,
+		true,
+		NULL, NULL, NULL
+	},
+	{
 		{"enable_hashagg", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables the planner's use of hashed aggregation plans."),
 			NULL
diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample
index b053659..8e048c7 100644
--- a/src/backend/utils/misc/postgresql.conf.sample
+++ b/src/backend/utils/misc/postgresql.conf.sample
@@ -278,6 +278,7 @@
 #enable_nestloop = on
 #enable_seqscan = on
 #enable_sort = on
+#enable_sortedpath = on
 #enable_tidscan = on
 
 # - Planner Cost Constants -
diff --git a/src/include/optimizer/cost.h b/src/include/optimizer/cost.h
index 75e2afb..ec1b366 100644
--- a/src/include/optimizer/cost.h
+++ b/src/include/optimizer/cost.h
@@ -56,6 +56,7 @@ extern bool enable_indexonlyscan;
 extern bool enable_bitmapscan;
 extern bool enable_tidscan;
 extern bool enable_sort;
+extern bool enable_sortedpath;
 extern bool enable_hashagg;
 extern bool enable_nestloop;
 extern bool enable_material;
diff --git a/src/test/regress/expected/rangefuncs.out b/src/test/regress/expected/rangefuncs.out
index 7991e99..52b8d4f 100644
--- a/src/test/regress/expected/rangefuncs.out
+++ b/src/test/regress/expected/rangefuncs.out
@@ -11,8 +11,9 @@ SELECT name, setting FROM pg_settings WHERE name LIKE 'enable%';
  enable_nestloop      | on
  enable_seqscan       | on
  enable_sort          | on
+ enable_sortedpath    | on
  enable_tidscan       | on
-(11 rows)
+(12 rows)
 
 CREATE TABLE foo2(fooid int, f2 int);
 INSERT INTO foo2 VALUES(1, 11);
