@@ -1998,7 +1998,12 @@ final_cost_nestloop(PlannerInfo *root, NestPath *path,
19981998
19991999 /* For partial paths, scale row estimate. */
20002000 if (path -> path .parallel_workers > 0 )
2001- path -> path .rows /= get_parallel_divisor (& path -> path );
2001+ {
2002+ double parallel_divisor = get_parallel_divisor (& path -> path );
2003+
2004+ path -> path .rows =
2005+ clamp_row_est (path -> path .rows / parallel_divisor );
2006+ }
20022007
20032008 /*
20042009 * We could include disable_cost in the preliminary estimate, but that
@@ -2420,7 +2425,12 @@ final_cost_mergejoin(PlannerInfo *root, MergePath *path,
24202425
24212426 /* For partial paths, scale row estimate. */
24222427 if (path -> jpath .path .parallel_workers > 0 )
2423- path -> jpath .path .rows /= get_parallel_divisor (& path -> jpath .path );
2428+ {
2429+ double parallel_divisor = get_parallel_divisor (& path -> jpath .path );
2430+
2431+ path -> jpath .path .rows =
2432+ clamp_row_est (path -> jpath .path .rows / parallel_divisor );
2433+ }
24242434
24252435 /*
24262436 * We could include disable_cost in the preliminary estimate, but that
@@ -2803,7 +2813,12 @@ final_cost_hashjoin(PlannerInfo *root, HashPath *path,
28032813
28042814 /* For partial paths, scale row estimate. */
28052815 if (path -> jpath .path .parallel_workers > 0 )
2806- path -> jpath .path .rows /= get_parallel_divisor (& path -> jpath .path );
2816+ {
2817+ double parallel_divisor = get_parallel_divisor (& path -> jpath .path );
2818+
2819+ path -> jpath .path .rows =
2820+ clamp_row_est (path -> jpath .path .rows / parallel_divisor );
2821+ }
28072822
28082823 /*
28092824 * We could include disable_cost in the preliminary estimate, but that
0 commit comments