diff --git a/contrib/pg_upgrade/pg_upgrade.c b/contrib/pg_upgrade/pg_upgrade.c
new file mode 100644
index 85997e5..88494b8
*** a/contrib/pg_upgrade/pg_upgrade.c
--- b/contrib/pg_upgrade/pg_upgrade.c
*************** create_new_objects(void)
*** 314,325 ****
  		snprintf(log_file_name, sizeof(log_file_name), DB_DUMP_LOG_FILE_MASK, old_db->db_oid);
  
  		/*
! 		 *	Using pg_restore --single-transaction is faster than other
! 		 *	methods, like --jobs.  pg_dump only produces its output at the
! 		 *	end, so there is little parallelism using the pipe.
  		 */
  		parallel_exec_prog(log_file_name, NULL,
! 				  "\"%s/pg_restore\" %s --exit-on-error --single-transaction --verbose --dbname \"%s\" \"%s\"",
  				  new_cluster.bindir, cluster_conn_opts(&new_cluster),
  				  old_db->db_name, sql_file_name);
  	}
--- 314,324 ----
  		snprintf(log_file_name, sizeof(log_file_name), DB_DUMP_LOG_FILE_MASK, old_db->db_oid);
  
  		/*
! 		 *	pg_dump only produces its output at the end, so there is little
! 		 *	parallelism if using the pipe.
  		 */
  		parallel_exec_prog(log_file_name, NULL,
! 				  "\"%s/pg_restore\" %s --exit-on-error --verbose --dbname \"%s\" \"%s\"",
  				  new_cluster.bindir, cluster_conn_opts(&new_cluster),
  				  old_db->db_name, sql_file_name);
  	}
