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 NoticeIfAutoConvertingLocalTables(bool autoConverted);
|
||||||
static void NoticeRelationIsAlreadyAddedToMetadata(Oid relationId);
|
static void NoticeRelationIsAlreadyAddedToMetadata(Oid relationId);
|
||||||
static CascadeOperationType GetCascadeTypeForCitusLocalTables(bool autoConverted);
|
static CascadeOperationType GetCascadeTypeForCitusLocalTables(bool autoConverted);
|
||||||
static void UpdateAutoConvertedForConnectedRelations(Oid relationId, bool autoConverted);
|
|
||||||
static List * GetShellTableDDLEventsForCitusLocalTable(Oid relationId);
|
static List * GetShellTableDDLEventsForCitusLocalTable(Oid relationId);
|
||||||
static uint64 ConvertLocalTableToShard(Oid relationId);
|
static uint64 ConvertLocalTableToShard(Oid relationId);
|
||||||
static void RenameRelationToShardRelation(Oid shellRelationId, uint64 shardId);
|
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
|
* already added to metadata, we should mark this one and connected relations
|
||||||
* as auto-converted = false.
|
* as auto-converted = false.
|
||||||
*/
|
*/
|
||||||
UpdateAutoConvertedForConnectedRelations(relationId, autoConverted);
|
UpdateAutoConvertedForConnectedRelations(list_make1_oid(relationId),
|
||||||
|
autoConverted);
|
||||||
|
|
||||||
NoticeRelationIsAlreadyAddedToMetadata(relationId);
|
NoticeRelationIsAlreadyAddedToMetadata(relationId);
|
||||||
|
|
||||||
|
|
@ -621,19 +621,26 @@ GetCascadeTypeForCitusLocalTables(bool autoConverted)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* UpdateAutoConvertedForConnectedRelations updates the autoConverted field on
|
* 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.
|
* 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
|
* 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.
|
* graph already includes them, as they have the same (inherited) fkeys as their parents.
|
||||||
*/
|
*/
|
||||||
static void
|
void
|
||||||
UpdateAutoConvertedForConnectedRelations(Oid relationId, bool autoConverted)
|
UpdateAutoConvertedForConnectedRelations(List *relationIds, bool autoConverted)
|
||||||
{
|
{
|
||||||
InvalidateForeignKeyGraph();
|
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);
|
relationIdList = SortList(relationIdList, CompareOids);
|
||||||
|
|
||||||
Oid relid = InvalidOid;
|
|
||||||
foreach_oid(relid, relationIdList)
|
foreach_oid(relid, relationIdList)
|
||||||
{
|
{
|
||||||
UpdatePgDistPartitionAutoConverted(relid, false);
|
UpdatePgDistPartitionAutoConverted(relid, false);
|
||||||
|
|
|
||||||
|
|
@ -72,8 +72,6 @@ static bool AlterTableDefinesFKeyBetweenPostgresAndNonDistTable(
|
||||||
AlterTableStmt *alterTableStatement);
|
AlterTableStmt *alterTableStatement);
|
||||||
static bool ShouldMarkConnectedRelationsNotAutoConverted(Oid leftRelationId,
|
static bool ShouldMarkConnectedRelationsNotAutoConverted(Oid leftRelationId,
|
||||||
Oid rightRelationId);
|
Oid rightRelationId);
|
||||||
static void MarkConnectedRelationsNotAutoConverted(Oid leftRelationId,
|
|
||||||
Oid rightRelationId);
|
|
||||||
static bool RelationIdListContainsCitusTableType(List *relationIdList,
|
static bool RelationIdListContainsCitusTableType(List *relationIdList,
|
||||||
CitusTableType citusTableType);
|
CitusTableType citusTableType);
|
||||||
static bool RelationIdListContainsPostgresTable(List *relationIdList);
|
static bool RelationIdListContainsPostgresTable(List *relationIdList);
|
||||||
|
|
@ -871,8 +869,8 @@ PreprocessAlterTableStmt(Node *node, const char *alterTableCommand,
|
||||||
if (ShouldMarkConnectedRelationsNotAutoConverted(leftRelationId,
|
if (ShouldMarkConnectedRelationsNotAutoConverted(leftRelationId,
|
||||||
rightRelationId))
|
rightRelationId))
|
||||||
{
|
{
|
||||||
MarkConnectedRelationsNotAutoConverted(leftRelationId,
|
List *relationList = list_make2_oid(leftRelationId, rightRelationId);
|
||||||
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
|
* RelationIdListContainsCitusTableType returns true if given relationIdList
|
||||||
* contains a citus table with given type.
|
* contains a citus table with given type.
|
||||||
|
|
|
||||||
|
|
@ -545,5 +545,7 @@ extern void PostprocessVariableSetStmt(VariableSetStmt *setStmt, const char *set
|
||||||
|
|
||||||
extern void CreateCitusLocalTablePartitionOf(CreateStmt *createStatement,
|
extern void CreateCitusLocalTablePartitionOf(CreateStmt *createStatement,
|
||||||
Oid relationId, Oid parentRelationId);
|
Oid relationId, Oid parentRelationId);
|
||||||
|
extern void UpdateAutoConvertedForConnectedRelations(List *relationId, bool
|
||||||
|
autoConverted);
|
||||||
|
|
||||||
#endif /*CITUS_COMMANDS_H */
|
#endif /*CITUS_COMMANDS_H */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue