@@ -671,6 +671,8 @@ create_single_partition_internal(Oid parent_relid,
671671RangeVar * partition_rv ,
672672char * tablespace )
673673{
674+ Relation parentrel ;
675+
674676/* Value to be returned */
675677Oid partition_relid = InvalidOid ;/* safety */
676678
@@ -680,7 +682,8 @@ create_single_partition_internal(Oid parent_relid,
680682* parent_nsp_name ;
681683
682684/* Elements of the "CREATE TABLE" query tree */
683- RangeVar * parent_rv ;
685+ RangeVar * parent_rv ,
686+ * newrel_rv = copyObject (partition_rv );
684687TableLikeClause like_clause ;
685688CreateStmt create_stmt ;
686689List * create_stmts ;
@@ -730,7 +733,10 @@ create_single_partition_internal(Oid parent_relid,
730733/* Make up parent's RangeVar */
731734parent_rv = makeRangeVar (parent_nsp_name ,parent_name ,-1 );
732735
733- Assert (partition_rv );
736+ /* Copy attributes */
737+ parentrel = heap_open (parent_relid ,NoLock );
738+ newrel_rv -> relpersistence = parentrel -> rd_rel -> relpersistence ;
739+ heap_close (parentrel ,NoLock );
734740
735741/* If no 'tablespace' is provided, get parent's tablespace */
736742if (!tablespace )
@@ -745,7 +751,7 @@ create_single_partition_internal(Oid parent_relid,
745751
746752/* Initialize CreateStmt structure */
747753NodeSetTag (& create_stmt ,T_CreateStmt );
748- create_stmt .relation = copyObject ( partition_rv ) ;
754+ create_stmt .relation = newrel_rv ;
749755create_stmt .tableElts = list_make1 (copyObject (& like_clause ));
750756create_stmt .inhRelations = list_make1 (copyObject (parent_rv ));
751757create_stmt .ofTypename = NULL ;