diff --git a/src/backend/executor/tqueue.c b/src/backend/executor/tqueue.c
index 5735acf..08e0da1 100644
--- a/src/backend/executor/tqueue.c
+++ b/src/backend/executor/tqueue.c
@@ -131,11 +131,13 @@ tqueueReceiveSlot(TupleTableSlot *slot, DestReceiver *self)
 	 * adopt it here as well.
 	 */
 	if (tqueue->tupledesc != tupledesc ||
-		tqueue->remapinfo->natts != tupledesc->natts)
+		(tqueue->remapinfo &&
+		 tqueue->remapinfo->natts != tupledesc->natts))
 	{
 		if (tqueue->remapinfo != NULL)
 			pfree(tqueue->remapinfo);
 		tqueue->remapinfo = BuildRemapInfo(tupledesc);
+		tqueue->tupledesc = tupledesc;
 	}
 
 	tuple = ExecMaterializeSlot(slot);
