@@ -671,6 +671,8 @@ create_single_partition_internal(Oid parent_relid,
671
671
RangeVar * partition_rv ,
672
672
char * tablespace )
673
673
{
674
+ Relation parentrel ;
675
+
674
676
/* Value to be returned */
675
677
Oid partition_relid = InvalidOid ; /* safety */
676
678
@@ -680,7 +682,8 @@ create_single_partition_internal(Oid parent_relid,
680
682
* parent_nsp_name ;
681
683
682
684
/* Elements of the "CREATE TABLE" query tree */
683
- RangeVar * parent_rv ;
685
+ RangeVar * parent_rv ,
686
+ * newrel_rv = copyObject (partition_rv );
684
687
TableLikeClause like_clause ;
685
688
CreateStmt create_stmt ;
686
689
List * create_stmts ;
@@ -730,7 +733,10 @@ create_single_partition_internal(Oid parent_relid,
730
733
/* Make up parent's RangeVar */
731
734
parent_rv = makeRangeVar (parent_nsp_name , parent_name , -1 );
732
735
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 );
734
740
735
741
/* If no 'tablespace' is provided, get parent's tablespace */
736
742
if (!tablespace )
@@ -745,7 +751,7 @@ create_single_partition_internal(Oid parent_relid,
745
751
746
752
/* Initialize CreateStmt structure */
747
753
NodeSetTag (& create_stmt , T_CreateStmt );
748
- create_stmt .relation = copyObject ( partition_rv ) ;
754
+ create_stmt .relation = newrel_rv ;
749
755
create_stmt .tableElts = list_make1 (copyObject (& like_clause ));
750
756
create_stmt .inhRelations = list_make1 (copyObject (parent_rv ));
751
757
create_stmt .ofTypename = NULL ;
0 commit comments