@@ -62,6 +62,7 @@ typedef struct TupleData
62
62
bool changed [MaxTupleAttributeNumber ];
63
63
} TupleData ;
64
64
65
+
65
66
static Relation read_rel (StringInfo s , LOCKMODE mode );
66
67
static void read_tuple_parts (StringInfo s , Relation rel , TupleData * tup );
67
68
static EState * create_rel_estate (Relation rel );
@@ -581,6 +582,15 @@ read_tuple_parts(StringInfo s, Relation rel, TupleData *tup)
581
582
}
582
583
}
583
584
585
+ static void
586
+ close_rel (Relation rel )
587
+ {
588
+ if (rel != NULL )
589
+ {
590
+ heap_close (rel , NoLock );
591
+ }
592
+ }
593
+
584
594
static Relation
585
595
read_rel (StringInfo s , LOCKMODE mode )
586
596
{
@@ -823,7 +833,6 @@ process_remote_insert(StringInfo s, Relation rel)
823
833
MtmMakeRelationLocal (RelationGetRelid (rel ));
824
834
}
825
835
826
- heap_close (rel , NoLock );
827
836
ExecResetTupleTable (estate -> es_tupleTable , true);
828
837
FreeExecutorState (estate );
829
838
@@ -944,7 +953,6 @@ process_remote_update(StringInfo s, Relation rel)
944
953
945
954
/* release locks upon commit */
946
955
index_close (idxrel , NoLock );
947
- heap_close (rel , NoLock );
948
956
949
957
ExecResetTupleTable (estate -> es_tupleTable , true);
950
958
FreeExecutorState (estate );
@@ -1019,7 +1027,6 @@ process_remote_delete(StringInfo s, Relation rel)
1019
1027
PopActiveSnapshot ();
1020
1028
1021
1029
index_close (idxrel , NoLock );
1022
- heap_close (rel , NoLock );
1023
1030
1024
1031
ExecResetTupleTable (estate -> es_tupleTable , true);
1025
1032
FreeExecutorState (estate );
@@ -1071,6 +1078,7 @@ void MtmExecutor(void* work, size_t size)
1071
1078
}
1072
1079
/* COMMIT */
1073
1080
case 'C' :
1081
+ close_rel (rel );
1074
1082
process_remote_commit (& s );
1075
1083
break ;
1076
1084
/* INSERT */
@@ -1086,6 +1094,7 @@ void MtmExecutor(void* work, size_t size)
1086
1094
process_remote_delete (& s , rel );
1087
1095
continue ;
1088
1096
case 'R' :
1097
+ close_rel (rel );
1089
1098
rel = read_rel (& s , RowExclusiveLock );
1090
1099
continue ;
1091
1100
case 'F' :
0 commit comments