mirror of https://github.com/citusdata/citus.git
Remove MarkConnectedRelationsNotAutoConverted
parent
1f6e27f654
commit
c08f1609d9
|
|
@ -55,7 +55,6 @@ static void ErrorIfUnsupportedCitusLocalColumnDefinition(Relation relation);
|
|||
static void NoticeIfAutoConvertingLocalTables(bool autoConverted);
|
||||
static void NoticeRelationIsAlreadyAddedToMetadata(Oid relationId);
|
||||
static CascadeOperationType GetCascadeTypeForCitusLocalTables(bool autoConverted);
|
||||
static void UpdateAutoConvertedForConnectedRelations(Oid relationId, bool autoConverted);
|
||||
static List * GetShellTableDDLEventsForCitusLocalTable(Oid relationId);
|
||||
static uint64 ConvertLocalTableToShard(Oid relationId);
|
||||
static void RenameRelationToShardRelation(Oid shellRelationId, uint64 shardId);
|
||||
|
|
@ -211,7 +210,8 @@ CreateCitusLocalTable(Oid relationId, bool cascadeViaForeignKeys, bool autoConve
|
|||
* already added to metadata, we should mark this one and connected relations
|
||||
* as auto-converted = false.
|
||||
*/
|
||||
UpdateAutoConvertedForConnectedRelations(relationId, autoConverted);
|
||||
UpdateAutoConvertedForConnectedRelations(list_make1_oid(relationId),
|
||||
autoConverted);
|
||||
|
||||
NoticeRelationIsAlreadyAddedToMetadata(relationId);
|
||||
|
||||
|
|
@ -621,19 +621,26 @@ GetCascadeTypeForCitusLocalTables(bool autoConverted)
|
|||
|
||||
/*
|
||||
* UpdateAutoConvertedForConnectedRelations updates the autoConverted field on
|
||||
* pg_dist_partition for the foreign key connected relations of the given relation.
|
||||
* pg_dist_partition for the foreign key connected relations of the given relations.
|
||||
* Sets it to given autoConverted value for all of the connected relations.
|
||||
* We don't need to update partition relations separately, since the foreign key
|
||||
* graph already includes them, as they have the same (inherited) fkeys as their parents.
|
||||
*/
|
||||
static void
|
||||
UpdateAutoConvertedForConnectedRelations(Oid relationId, bool autoConverted)
|
||||
void
|
||||
UpdateAutoConvertedForConnectedRelations(List *relationIds, bool autoConverted)
|
||||
{
|
||||
InvalidateForeignKeyGraph();
|
||||
List *relationIdList = GetForeignKeyConnectedRelationIdList(relationId);
|
||||
|
||||
List *relationIdList = NIL;
|
||||
Oid relid = InvalidOid;
|
||||
foreach_oid(relid, relationIds)
|
||||
{
|
||||
List *connectedRelations = GetForeignKeyConnectedRelationIdList(relid);
|
||||
relationIdList = list_concat_unique_oid(relationIdList, connectedRelations);
|
||||
}
|
||||
|
||||
relationIdList = SortList(relationIdList, CompareOids);
|
||||
|
||||
Oid relid = InvalidOid;
|
||||
foreach_oid(relid, relationIdList)
|
||||
{
|
||||
UpdatePgDistPartitionAutoConverted(relid, false);
|
||||
|
|
|
|||
|
|
@ -72,8 +72,6 @@ static bool AlterTableDefinesFKeyBetweenPostgresAndNonDistTable(
|
|||
AlterTableStmt *alterTableStatement);
|
||||
static bool ShouldMarkConnectedRelationsNotAutoConverted(Oid leftRelationId,
|
||||
Oid rightRelationId);
|
||||
static void MarkConnectedRelationsNotAutoConverted(Oid leftRelationId,
|
||||
Oid rightRelationId);
|
||||
static bool RelationIdListContainsCitusTableType(List *relationIdList,
|
||||
CitusTableType citusTableType);
|
||||
static bool RelationIdListContainsPostgresTable(List *relationIdList);
|
||||
|
|
@ -871,8 +869,8 @@ PreprocessAlterTableStmt(Node *node, const char *alterTableCommand,
|
|||
if (ShouldMarkConnectedRelationsNotAutoConverted(leftRelationId,
|
||||
rightRelationId))
|
||||
{
|
||||
MarkConnectedRelationsNotAutoConverted(leftRelationId,
|
||||
rightRelationId);
|
||||
List *relationList = list_make2_oid(leftRelationId, rightRelationId);
|
||||
UpdateAutoConvertedForConnectedRelations(relationList, false);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -1212,28 +1210,6 @@ ShouldMarkConnectedRelationsNotAutoConverted(Oid leftRelationId, Oid rightRelati
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* MarkConnectedRelationsNotAutoConverted takes two relations.
|
||||
* Marks both of them as not-auto-converted, as well as other connected relations.
|
||||
*/
|
||||
static void
|
||||
MarkConnectedRelationsNotAutoConverted(Oid leftRelationId, Oid rightRelationId)
|
||||
{
|
||||
InvalidateForeignKeyGraph();
|
||||
List *leftConnectedRelIds = GetForeignKeyConnectedRelationIdList(leftRelationId);
|
||||
List *rightConnectedRelIds = GetForeignKeyConnectedRelationIdList(rightRelationId);
|
||||
List *allConnectedRelations = list_concat_unique_oid(leftConnectedRelIds,
|
||||
rightConnectedRelIds);
|
||||
allConnectedRelations = SortList(allConnectedRelations, CompareOids);
|
||||
|
||||
Oid relationId = InvalidOid;
|
||||
foreach_oid(relationId, allConnectedRelations)
|
||||
{
|
||||
UpdatePgDistPartitionAutoConverted(relationId, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* RelationIdListContainsCitusTableType returns true if given relationIdList
|
||||
* contains a citus table with given type.
|
||||
|
|
|
|||
|
|
@ -545,5 +545,7 @@ extern void PostprocessVariableSetStmt(VariableSetStmt *setStmt, const char *set
|
|||
|
||||
extern void CreateCitusLocalTablePartitionOf(CreateStmt *createStatement,
|
||||
Oid relationId, Oid parentRelationId);
|
||||
extern void UpdateAutoConvertedForConnectedRelations(List *relationId, bool
|
||||
autoConverted);
|
||||
|
||||
#endif /*CITUS_COMMANDS_H */
|
||||
|
|
|
|||
Loading…
Reference in New Issue