diff --git a/src/backend/nodes/nodeFuncs.c b/src/backend/nodes/nodeFuncs.c
index a2bcca5b75a06314133044461574c02c6234a95a..b1e3e6e489320086dce3500b1418178095e99714 100644
--- a/src/backend/nodes/nodeFuncs.c
+++ b/src/backend/nodes/nodeFuncs.c
@@ -2870,10 +2870,14 @@ range_table_mutator(List *rtable,
 			case RTE_RELATION:
 				if (rte->tablesample)
 				{
-					MUTATE(rte->tablesample->args, rte->tablesample->args,
+					CHECKFLATCOPY(newrte->tablesample, rte->tablesample,
+								  TableSampleClause);
+					MUTATE(newrte->tablesample->args,
+						   newrte->tablesample->args,
 						   List *);
-					MUTATE(rte->tablesample->repeatable,
-						   rte->tablesample->repeatable, Node *);
+					MUTATE(newrte->tablesample->repeatable,
+						   newrte->tablesample->repeatable,
+						   Node *);
 				}
 				break;
 			case RTE_CTE: