CI fix and reindent

niupre/DeferredDrop
Nitish Upreti 2022-08-13 21:24:27 -07:00
parent 96b389d8ef
commit b165be402f
15 changed files with 121 additions and 93 deletions

View File

@ -162,7 +162,8 @@ PreprocessGrantStmt(Node *node, const char *queryString,
{
/* Propogate latest policies issue on deleted shards to avoid any potential issues */
bool includeOrphanedShards = true;
ddlJob->taskList = DDLTaskList(relationId, ddlString.data, includeOrphanedShards);
ddlJob->taskList = DDLTaskList(relationId, ddlString.data,
includeOrphanedShards);
}
ddlJobs = lappend(ddlJobs, ddlJob);

View File

@ -481,8 +481,8 @@ PreprocessAlterStatisticsOwnerStmt(Node *node, const char *queryString,
ddlJob->metadataSyncCommand = ddlCommand;
/* Propogate owner changes on deleted shards to avoid any potential issues */
// TODO(niupre): Can this cause failure when we try to drop orphaned table?
// If this is the case, do we need to allow CREATE STATS as well?
/* TODO(niupre): Can this cause failure when we try to drop orphaned table? */
/* If this is the case, do we need to allow CREATE STATS as well? */
bool includeOrphanedShards = true;
ddlJob->taskList = DDLTaskList(relationId, ddlCommand, includeOrphanedShards);

View File

@ -1165,7 +1165,8 @@ PreprocessAlterTableStmt(Node *node, const char *alterTableCommand,
/* Propogate latest updates issue on deleted shards to avoid any potential issues */
bool includeOrphanedShards = true;
ddlJob->taskList = DDLTaskList(leftRelationId, sqlForTaskList, includeOrphanedShards);
ddlJob->taskList = DDLTaskList(leftRelationId, sqlForTaskList,
includeOrphanedShards);
if (!propagateCommandToWorkers)
{
ddlJob->taskList = NIL;
@ -1841,7 +1842,8 @@ PreprocessAlterTableSchemaStmt(Node *node, const char *queryString,
/* Propogate latest schema on deleted shards to avoid any potential issues */
bool includeOrphanedShards = true;
ddlJob->taskList = DDLTaskList(relationId, ddlJob->metadataSyncCommand, includeOrphanedShards);
ddlJob->taskList = DDLTaskList(relationId, ddlJob->metadataSyncCommand,
includeOrphanedShards);
return list_make1(ddlJob);
}

View File

@ -289,7 +289,8 @@ static void CachedRelationNamespaceLookupExtended(const char *relationName,
bool missing_ok);
static ShardPlacement * ResolveGroupShardPlacement(
GroupShardPlacement *groupShardPlacement, CitusTableCacheEntry *tableEntry,
ShardIntervalArrayType arrayType, int shardIndex);
ShardIntervalArrayType arrayType, int
shardIndex);
static Oid LookupEnumValueId(Oid typeId, char *valueName);
static void InvalidateCitusTableCacheEntrySlot(CitusTableCacheEntrySlot *cacheSlot);
static void InvalidateDistTableCache(void);
@ -298,13 +299,18 @@ static void InitializeTableCacheEntry(int64 shardId);
static bool IsCitusTableTypeInternal(char partitionMethod, char replicationModel,
CitusTableType tableType);
static bool RefreshTableCacheEntryIfInvalid(ShardIdCacheEntry *shardEntry);
static void BuildShardIdCacheAndPlacementList(ShardInterval **shardIntervalArray, int arrayLength,
ShardIntervalArrayType arrayType, CitusTableCacheEntry *cacheEntry);
static void BuildShardIdCacheAndPlacementList(ShardInterval **shardIntervalArray, int
arrayLength,
ShardIntervalArrayType arrayType,
CitusTableCacheEntry *cacheEntry);
static void FreeCitusTableCacheShardAndPlacementEntryFromArray(
ShardInterval **shardIntervalArray,
int shardIntervalArrayLength,
GroupShardPlacement **arrayOfPlacementArrays,
int *arrayOfPlacementArrayLengths);
int
shardIntervalArrayLength,
GroupShardPlacement **
arrayOfPlacementArrays,
int *
arrayOfPlacementArrayLengths);
static Oid DistAuthinfoRelationId(void);
static Oid DistAuthinfoIndexId(void);
@ -851,7 +857,8 @@ LoadShardPlacement(uint64 shardId, uint64 placementId)
GroupShardPlacement *groupPlacement = LoadGroupShardPlacement(shardId, placementId);
ShardPlacement *nodePlacement = ResolveGroupShardPlacement(groupPlacement,
tableEntry, arrayType, shardIndex);
tableEntry, arrayType,
shardIndex);
return nodePlacement;
}
@ -940,7 +947,6 @@ ResolveGroupShardPlacement(GroupShardPlacement *groupShardPlacement,
ShardIntervalArrayType arrayType,
int shardIndex)
{
ShardInterval *shardInterval = NULL;
if (arrayType == ACTIVE_SHARD_ARRAY)
{
@ -1134,7 +1140,8 @@ ShardPlacementListIncludingOrphanedPlacements(uint64 shardId)
/* the offset better be in a valid range */
Assert(shardIndex < tableEntry->orphanedShardIntervalArrayLength);
placementArray = tableEntry->arrayOfOrphanedShardsPlacementArrays[shardIndex];
numberOfPlacements = tableEntry->arrayOfOrphanedShardsPlacementArrayLengths[shardIndex];
numberOfPlacements =
tableEntry->arrayOfOrphanedShardsPlacementArrayLengths[shardIndex];
}
for (int i = 0; i < numberOfPlacements; i++)
@ -1819,9 +1826,11 @@ BuildCachedShardList(CitusTableCacheEntry *cacheEntry)
varcollid,
shardIntervalCompareFunction);
sortedOrphanedShardIntervalArray = SortShardIntervalArray(shardIntervalToDeleteArray,
sortedOrphanedShardIntervalArray = SortShardIntervalArray(
shardIntervalToDeleteArray,
orphanedShardCount,
cacheEntry->partitionColumn->
cacheEntry->
partitionColumn->
varcollid,
shardIntervalCompareFunction);
@ -1857,7 +1866,8 @@ BuildCachedShardList(CitusTableCacheEntry *cacheEntry)
BuildShardIdCacheAndPlacementList(sortedShardIntervalArray, activeShardCount,
ACTIVE_SHARD_ARRAY, cacheEntry);
BuildShardIdCacheAndPlacementList(sortedOrphanedShardIntervalArray, orphanedShardCount,
BuildShardIdCacheAndPlacementList(sortedOrphanedShardIntervalArray,
orphanedShardCount,
TO_DELETE_SHARD_ARRAY, cacheEntry);
cacheEntry->shardColumnCompareFunction = shardColumnCompareFunction;
@ -1870,7 +1880,8 @@ BuildCachedShardList(CitusTableCacheEntry *cacheEntry)
*/
void
BuildShardIdCacheAndPlacementList(ShardInterval **shardIntervalArray, int arrayLength,
ShardIntervalArrayType arrayType, CitusTableCacheEntry *cacheEntry)
ShardIntervalArrayType arrayType,
CitusTableCacheEntry *cacheEntry)
{
/* maintain shardId->(table,ShardInterval) cache */
for (int shardIndex = 0; shardIndex < arrayLength; shardIndex++)
@ -1928,7 +1939,8 @@ BuildShardIdCacheAndPlacementList(ShardInterval **shardIntervalArray, int arrayL
else
{
cacheEntry->arrayOfOrphanedShardsPlacementArrays[shardIndex] = placementArray;
cacheEntry->arrayOfOrphanedShardsPlacementArrayLengths[shardIndex] = numberOfPlacements;
cacheEntry->arrayOfOrphanedShardsPlacementArrayLengths[shardIndex] =
numberOfPlacements;
}
/* store the shard index in the ShardInterval */
@ -4139,10 +4151,10 @@ RegisterAuthinfoCacheCallbacks(void)
*
*/
static void
FreeCitusTableCacheShardAndPlacementEntryFromArray(
ShardInterval **shardIntervalArray,
FreeCitusTableCacheShardAndPlacementEntryFromArray(ShardInterval **shardIntervalArray,
int shardIntervalArrayLength,
GroupShardPlacement **arrayOfPlacementArrays,
GroupShardPlacement **
arrayOfPlacementArrays,
int *arrayOfPlacementArrayLengths)
{
for (int shardIndex = 0; shardIndex < shardIntervalArrayLength;
@ -4215,8 +4227,11 @@ ResetCitusTableCacheEntry(CitusTableCacheEntry *cacheEntry)
}
/* clean up ShardIdCacheHash */
RemoveStaleShardIdCacheEntries(cacheEntry, cacheEntry->sortedShardIntervalArray, cacheEntry->shardIntervalArrayLength);
RemoveStaleShardIdCacheEntries(cacheEntry, cacheEntry->sortedOrphanedShardIntervalArray, cacheEntry->orphanedShardIntervalArrayLength);
RemoveStaleShardIdCacheEntries(cacheEntry, cacheEntry->sortedShardIntervalArray,
cacheEntry->shardIntervalArrayLength);
RemoveStaleShardIdCacheEntries(cacheEntry,
cacheEntry->sortedOrphanedShardIntervalArray,
cacheEntry->orphanedShardIntervalArrayLength);
FreeCitusTableCacheShardAndPlacementEntryFromArray(
cacheEntry->sortedShardIntervalArray,
@ -4288,8 +4303,7 @@ ResetCitusTableCacheEntry(CitusTableCacheEntry *cacheEntry)
* we leave it in place.
*/
static void
RemoveStaleShardIdCacheEntries(
CitusTableCacheEntry *invalidatedTableEntry,
RemoveStaleShardIdCacheEntries(CitusTableCacheEntry *invalidatedTableEntry,
ShardInterval **sortedShardIntervalArray,
int shardIntervalArrayLength)
{

View File

@ -3233,11 +3233,13 @@ citus_internal_add_shard_metadata(PG_FUNCTION_ARGS)
* not sane, the user can only affect its own tables. Given that the
* user is owner of the table, we should allow.
*/
EnsureShardMetadataIsSane(relationId, shardId, storageType, shardState, shardMinValue,
EnsureShardMetadataIsSane(relationId, shardId, storageType, shardState,
shardMinValue,
shardMaxValue);
}
InsertShardRow(relationId, shardId, storageType, shardState, shardMinValue, shardMaxValue);
InsertShardRow(relationId, shardId, storageType, shardState, shardMinValue,
shardMaxValue);
PG_RETURN_VOID();
}

View File

@ -1068,6 +1068,7 @@ LoadShardIntervalList(Oid relationId)
return shardList;
}
/*
* LoadShardIntervalListWithOrphanedShards returns a list of shard intervals related for a given
* distributed table. This includes both ACTIVE and TO_DELETE shards.
@ -1076,7 +1077,8 @@ LoadShardIntervalList(Oid relationId)
* list where elements are sorted on shardminvalue. Shard intervals with uninitialized
* shard min/max values are placed in the end of the list.
*/
List * LoadShardIntervalListWithOrphanedShards(Oid relationId)
List *
LoadShardIntervalListWithOrphanedShards(Oid relationId)
{
CitusTableCacheEntry *cacheEntry = GetCitusTableCacheEntry(relationId);
List *shardList = NIL;
@ -1088,10 +1090,12 @@ List * LoadShardIntervalListWithOrphanedShards(Oid relationId)
.collation = cacheEntry->partitionColumn->varcollid
};
while(indexOne < cacheEntry->shardIntervalArrayLength && indexTwo < cacheEntry->orphanedShardIntervalArrayLength)
while (indexOne < cacheEntry->shardIntervalArrayLength && indexTwo <
cacheEntry->orphanedShardIntervalArrayLength)
{
ShardInterval *leftInterval = cacheEntry->sortedShardIntervalArray[indexOne];
ShardInterval *rightInterval = cacheEntry->sortedOrphanedShardIntervalArray[indexTwo];
ShardInterval *rightInterval =
cacheEntry->sortedOrphanedShardIntervalArray[indexTwo];
int cmp = CompareShardIntervals(leftInterval, rightInterval, &sortContext);
@ -1115,7 +1119,8 @@ List * LoadShardIntervalListWithOrphanedShards(Oid relationId)
while (indexTwo < cacheEntry->orphanedShardIntervalArrayLength)
{
shardList = lappend(shardList, cacheEntry->sortedOrphanedShardIntervalArray[indexTwo]);
shardList = lappend(shardList,
cacheEntry->sortedOrphanedShardIntervalArray[indexTwo]);
indexTwo++;
}

View File

@ -265,7 +265,7 @@ CreateColocatedShards(Oid targetRelationId, Oid sourceRelationId, bool
LockRelationOid(sourceRelationId, AccessShareLock);
/* prevent placement changes of the source relation until we colocate with them */
// TODO(niupre): We should only return ACTIVE shards, not ALL shards.
/* TODO(niupre): We should only return ACTIVE shards, not ALL shards. */
List *sourceShardIntervalList = LoadShardIntervalList(sourceRelationId);
LockShardListMetadata(sourceShardIntervalList, ShareLock);
@ -378,7 +378,8 @@ CreateReferenceTableShard(Oid distributedTableId)
/* shard state is active by default */
ShardState shardState = SHARD_STATE_ACTIVE;
InsertShardRow(distributedTableId, shardId, shardStorageType, shardState, shardMinValue,
InsertShardRow(distributedTableId, shardId, shardStorageType, shardState,
shardMinValue,
shardMaxValue);
List *insertedShardPlacements = InsertShardPlacementRows(distributedTableId, shardId,

View File

@ -1147,6 +1147,7 @@ CreateForeignKeyConstraints(List *shardGroupSplitIntervalListList,
}
}
/*
* MarkShardListForDrop drops shards and their metadata from both the coordinator and
* mx nodes.

View File

@ -187,7 +187,8 @@ master_create_empty_shard(PG_FUNCTION_ARGS)
candidateNodeIndex++;
}
InsertShardRow(relationId, shardId, storageType, shardState, nullMinValue, nullMaxValue);
InsertShardRow(relationId, shardId, storageType, shardState, nullMinValue,
nullMaxValue);
CreateAppendDistributedShardPlacements(relationId, shardId, candidateNodeList,
ShardReplicationFactor);

View File

@ -3982,7 +3982,7 @@ ShardIntervalsOverlapWithParams(Datum firstMin, Datum firstMax,
int firstComparison = DatumGetInt32(firstDatum);
int secondComparison = DatumGetInt32(secondDatum);
// If one of the shards are marked as TO_DELETED, ignore the overlap.
/* If one of the shards are marked as TO_DELETED, ignore the overlap. */
bool markedForDelete = (firstState == SHARD_STATE_TO_DELETE ||
secondState == SHARD_STATE_TO_DELETE);

View File

@ -1,10 +1,10 @@
CREATE OR REPLACE FUNCTION pg_catalog.citus_internal_add_shard_metadata(
relation_id regclass, shard_id bigint,
storage_type "char", shard_min_value text,
shard_max_value text
storage_type "char", shardstate integer,
shard_min_value text, shard_max_value text
)
RETURNS void
LANGUAGE C
AS 'MODULE_PATHNAME';
COMMENT ON FUNCTION pg_catalog.citus_internal_add_shard_metadata(regclass, bigint, "char", text, text) IS
COMMENT ON FUNCTION pg_catalog.citus_internal_add_shard_metadata(regclass, bigint, "char", integer, text, text) IS
'Inserts into pg_dist_shard with user checks';

View File

@ -94,7 +94,8 @@ extern void ProcessUtilityParseTree(Node *node, const char *queryString,
);
extern void MarkInvalidateForeignKeyGraph(void);
extern void InvalidateForeignKeyGraphForDDL(void);
extern List * DDLTaskList(Oid relationId, const char *commandString, bool includeOrphanedShards);
extern List * DDLTaskList(Oid relationId, const char *commandString, bool
includeOrphanedShards);
extern List * NodeDDLTaskList(TargetWorkerSet targets, List *commands);
extern bool AlterTableInProgress(void);
extern bool DropSchemaOrDBInProgress(void);