mirror of https://github.com/citusdata/citus.git
Convert NoLock heap opens to AccessShareLock.
Postgres 12 has added bunch of assertions to disallow NoLock heap opens.read_write_etc
parent
3ff736aa57
commit
15ade3b715
|
@ -67,7 +67,7 @@ ErrorIfUnsupportedTruncateStmt(TruncateStmt *truncateStatement)
|
||||||
foreach(relationCell, relationList)
|
foreach(relationCell, relationList)
|
||||||
{
|
{
|
||||||
RangeVar *rangeVar = (RangeVar *) lfirst(relationCell);
|
RangeVar *rangeVar = (RangeVar *) lfirst(relationCell);
|
||||||
Oid relationId = RangeVarGetRelid(rangeVar, NoLock, true);
|
Oid relationId = RangeVarGetRelid(rangeVar, AccessShareLock, true);
|
||||||
char relationKind = get_rel_relkind(relationId);
|
char relationKind = get_rel_relkind(relationId);
|
||||||
if (IsDistributedTable(relationId) &&
|
if (IsDistributedTable(relationId) &&
|
||||||
relationKind == RELKIND_FOREIGN_TABLE)
|
relationKind == RELKIND_FOREIGN_TABLE)
|
||||||
|
@ -94,7 +94,7 @@ EnsurePartitionTableNotReplicatedForTruncate(TruncateStmt *truncateStatement)
|
||||||
foreach(relationCell, truncateStatement->relations)
|
foreach(relationCell, truncateStatement->relations)
|
||||||
{
|
{
|
||||||
RangeVar *relationRV = (RangeVar *) lfirst(relationCell);
|
RangeVar *relationRV = (RangeVar *) lfirst(relationCell);
|
||||||
Relation relation = heap_openrv(relationRV, NoLock);
|
Relation relation = heap_openrv(relationRV, AccessShareLock);
|
||||||
Oid relationId = RelationGetRelid(relation);
|
Oid relationId = RelationGetRelid(relation);
|
||||||
|
|
||||||
if (!IsDistributedTable(relationId))
|
if (!IsDistributedTable(relationId))
|
||||||
|
|
|
@ -66,7 +66,7 @@ PartitionedTable(Oid relationId)
|
||||||
bool
|
bool
|
||||||
PartitionedTableNoLock(Oid relationId)
|
PartitionedTableNoLock(Oid relationId)
|
||||||
{
|
{
|
||||||
Relation rel = try_relation_open(relationId, NoLock);
|
Relation rel = try_relation_open(relationId, AccessShareLock);
|
||||||
bool partitionedTable = false;
|
bool partitionedTable = false;
|
||||||
|
|
||||||
/* don't error out for tables that are dropped */
|
/* don't error out for tables that are dropped */
|
||||||
|
|
|
@ -1333,6 +1333,8 @@ DeleteNodeRow(char *nodeName, int32 nodePort)
|
||||||
ScanKeyData scanKey[2];
|
ScanKeyData scanKey[2];
|
||||||
|
|
||||||
Relation pgDistNode = heap_open(DistNodeRelationId(), RowExclusiveLock);
|
Relation pgDistNode = heap_open(DistNodeRelationId(), RowExclusiveLock);
|
||||||
|
Relation identityIdx = index_open(RelationGetReplicaIndex(pgDistNode),
|
||||||
|
AccessShareLock);
|
||||||
|
|
||||||
ScanKeyInit(&scanKey[0], Anum_pg_dist_node_nodename,
|
ScanKeyInit(&scanKey[0], Anum_pg_dist_node_nodename,
|
||||||
BTEqualStrategyNumber, F_TEXTEQ, CStringGetTextDatum(nodeName));
|
BTEqualStrategyNumber, F_TEXTEQ, CStringGetTextDatum(nodeName));
|
||||||
|
@ -1360,6 +1362,7 @@ DeleteNodeRow(char *nodeName, int32 nodePort)
|
||||||
/* increment the counter so that next command won't see the row */
|
/* increment the counter so that next command won't see the row */
|
||||||
CommandCounterIncrement();
|
CommandCounterIncrement();
|
||||||
|
|
||||||
|
heap_close(identityIdx, NoLock);
|
||||||
heap_close(pgDistNode, NoLock);
|
heap_close(pgDistNode, NoLock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue