Add suppressNoticeMessages to TableConversionState

pull/4567/head
Onur Tirtir 2021-01-25 13:05:08 +03:00
parent cacb76d2c6
commit 458a81f93d
2 changed files with 77 additions and 38 deletions

View File

@ -162,6 +162,12 @@ typedef struct TableConversionState
* ALTER_TABLE_SET_ACCESS_METHOD -> AlterTableSetAccessMethod * ALTER_TABLE_SET_ACCESS_METHOD -> AlterTableSetAccessMethod
*/ */
TableConversionFunction function; TableConversionFunction function;
/*
* suppressNoticeMessages determines if we want to suppress NOTICE
* messages that we explicitly issue
*/
bool suppressNoticeMessages;
} TableConversionState; } TableConversionState;
@ -177,7 +183,8 @@ static TableConversionState * CreateTableConversion(TableConversionParameters *p
static void CreateDistributedTableLike(TableConversionState *con); static void CreateDistributedTableLike(TableConversionState *con);
static void CreateCitusTableLike(TableConversionState *con); static void CreateCitusTableLike(TableConversionState *con);
static List * GetViewCreationCommandsOfTable(Oid relationId); static List * GetViewCreationCommandsOfTable(Oid relationId);
static void ReplaceTable(Oid sourceId, Oid targetId, List *justBeforeDropCommands); static void ReplaceTable(Oid sourceId, Oid targetId, List *justBeforeDropCommands,
bool suppressNoticeMessages);
static void CheckAlterDistributedTableConversionParameters(TableConversionState *con); static void CheckAlterDistributedTableConversionParameters(TableConversionState *con);
static char * CreateWorkerChangeSequenceDependencyCommand(char *sequenceSchemaName, static char * CreateWorkerChangeSequenceDependencyCommand(char *sequenceSchemaName,
char *sequenceName, char *sequenceName,
@ -521,6 +528,8 @@ ConvertTable(TableConversionState *con)
bool includeIndexes = true; bool includeIndexes = true;
if (con->accessMethod && strcmp(con->accessMethod, "columnar") == 0) if (con->accessMethod && strcmp(con->accessMethod, "columnar") == 0)
{
if (!con->suppressNoticeMessages)
{ {
List *explicitIndexesOnTable = GetExplicitIndexOidList(con->relationId); List *explicitIndexesOnTable = GetExplicitIndexOidList(con->relationId);
Oid indexOid = InvalidOid; Oid indexOid = InvalidOid;
@ -532,6 +541,7 @@ ConvertTable(TableConversionState *con)
quote_qualified_identifier(con->schemaName, quote_qualified_identifier(con->schemaName,
con->relationName)))); con->relationName))));
} }
}
includeIndexes = false; includeIndexes = false;
} }
@ -579,10 +589,13 @@ ConvertTable(TableConversionState *con)
} }
if (PartitionedTable(con->relationId)) if (PartitionedTable(con->relationId))
{
if (!con->suppressNoticeMessages)
{ {
ereport(NOTICE, (errmsg("converting the partitions of %s", ereport(NOTICE, (errmsg("converting the partitions of %s",
quote_qualified_identifier(con->schemaName, quote_qualified_identifier(con->schemaName,
con->relationName)))); con->relationName))));
}
List *partitionList = PartitionList(con->relationId); List *partitionList = PartitionList(con->relationId);
@ -617,6 +630,7 @@ ConvertTable(TableConversionState *con)
.shardCount = con->shardCount, .shardCount = con->shardCount,
.cascadeToColocated = cascadeOption, .cascadeToColocated = cascadeOption,
.colocateWith = con->colocateWith, .colocateWith = con->colocateWith,
.suppressNoticeMessages = con->suppressNoticeMessages,
/* /*
* Even if we called UndistributeTable with cascade option, we * Even if we called UndistributeTable with cascade option, we
@ -636,9 +650,12 @@ ConvertTable(TableConversionState *con)
} }
} }
if (!con->suppressNoticeMessages)
{
ereport(NOTICE, (errmsg("creating a new table for %s", ereport(NOTICE, (errmsg("creating a new table for %s",
quote_qualified_identifier(con->schemaName, quote_qualified_identifier(con->schemaName,
con->relationName)))); con->relationName))));
}
TableDDLCommand *tableCreationCommand = NULL; TableDDLCommand *tableCreationCommand = NULL;
foreach_ptr(tableCreationCommand, preLoadCommands) foreach_ptr(tableCreationCommand, preLoadCommands)
@ -687,7 +704,8 @@ ConvertTable(TableConversionState *con)
CreateCitusTableLike(con); CreateCitusTableLike(con);
} }
ReplaceTable(con->relationId, con->newRelationId, justBeforeDropCommands); ReplaceTable(con->relationId, con->newRelationId, justBeforeDropCommands,
con->suppressNoticeMessages);
TableDDLCommand *tableConstructionCommand = NULL; TableDDLCommand *tableConstructionCommand = NULL;
foreach_ptr(tableConstructionCommand, postLoadCommands) foreach_ptr(tableConstructionCommand, postLoadCommands)
@ -732,7 +750,8 @@ ConvertTable(TableConversionState *con)
.shardCountIsNull = con->shardCountIsNull, .shardCountIsNull = con->shardCountIsNull,
.shardCount = con->shardCount, .shardCount = con->shardCount,
.colocateWith = qualifiedRelationName, .colocateWith = qualifiedRelationName,
.cascadeToColocated = CASCADE_TO_COLOCATED_NO_ALREADY_CASCADED .cascadeToColocated = CASCADE_TO_COLOCATED_NO_ALREADY_CASCADED,
.suppressNoticeMessages = con->suppressNoticeMessages
}; };
TableConversionReturn *colocatedReturn = con->function(&cascadeParam); TableConversionReturn *colocatedReturn = con->function(&cascadeParam);
foreignKeyCommands = list_concat(foreignKeyCommands, foreignKeyCommands = list_concat(foreignKeyCommands,
@ -875,6 +894,7 @@ CreateTableConversion(TableConversionParameters *params)
con->accessMethod = params->accessMethod; con->accessMethod = params->accessMethod;
con->cascadeToColocated = params->cascadeToColocated; con->cascadeToColocated = params->cascadeToColocated;
con->cascadeViaForeignKeys = params->cascadeViaForeignKeys; con->cascadeViaForeignKeys = params->cascadeViaForeignKeys;
con->suppressNoticeMessages = params->suppressNoticeMessages;
Relation relation = try_relation_open(con->relationId, ExclusiveLock); Relation relation = try_relation_open(con->relationId, ExclusiveLock);
if (relation == NULL) if (relation == NULL)
@ -1076,7 +1096,8 @@ GetViewCreationCommandsOfTable(Oid relationId)
* Source and target tables need to be in the same schema and have the same columns. * Source and target tables need to be in the same schema and have the same columns.
*/ */
void void
ReplaceTable(Oid sourceId, Oid targetId, List *justBeforeDropCommands) ReplaceTable(Oid sourceId, Oid targetId, List *justBeforeDropCommands,
bool suppressNoticeMessages)
{ {
char *sourceName = get_rel_name(sourceId); char *sourceName = get_rel_name(sourceId);
char *targetName = get_rel_name(targetId); char *targetName = get_rel_name(targetId);
@ -1086,9 +1107,12 @@ ReplaceTable(Oid sourceId, Oid targetId, List *justBeforeDropCommands)
StringInfo query = makeStringInfo(); StringInfo query = makeStringInfo();
if (!PartitionedTable(sourceId)) if (!PartitionedTable(sourceId))
{
if (!suppressNoticeMessages)
{ {
ereport(NOTICE, (errmsg("Moving the data of %s", ereport(NOTICE, (errmsg("Moving the data of %s",
quote_qualified_identifier(schemaName, sourceName)))); quote_qualified_identifier(schemaName, sourceName))));
}
appendStringInfo(query, "INSERT INTO %s SELECT * FROM %s", appendStringInfo(query, "INSERT INTO %s SELECT * FROM %s",
quote_qualified_identifier(schemaName, targetName), quote_qualified_identifier(schemaName, targetName),
@ -1126,16 +1150,22 @@ ReplaceTable(Oid sourceId, Oid targetId, List *justBeforeDropCommands)
ExecuteQueryViaSPI(justBeforeDropCommand, SPI_OK_UTILITY); ExecuteQueryViaSPI(justBeforeDropCommand, SPI_OK_UTILITY);
} }
if (!suppressNoticeMessages)
{
ereport(NOTICE, (errmsg("Dropping the old %s", ereport(NOTICE, (errmsg("Dropping the old %s",
quote_qualified_identifier(schemaName, sourceName)))); quote_qualified_identifier(schemaName, sourceName))));
}
resetStringInfo(query); resetStringInfo(query);
appendStringInfo(query, "DROP TABLE %s CASCADE", appendStringInfo(query, "DROP TABLE %s CASCADE",
quote_qualified_identifier(schemaName, sourceName)); quote_qualified_identifier(schemaName, sourceName));
ExecuteQueryViaSPI(query->data, SPI_OK_UTILITY); ExecuteQueryViaSPI(query->data, SPI_OK_UTILITY);
if (!suppressNoticeMessages)
{
ereport(NOTICE, (errmsg("Renaming the new table to %s", ereport(NOTICE, (errmsg("Renaming the new table to %s",
quote_qualified_identifier(schemaName, sourceName)))); quote_qualified_identifier(schemaName, sourceName))));
}
resetStringInfo(query); resetStringInfo(query);
appendStringInfo(query, "ALTER TABLE %s RENAME TO %s", appendStringInfo(query, "ALTER TABLE %s RENAME TO %s",
@ -1309,6 +1339,8 @@ CheckAlterDistributedTableConversionParameters(TableConversionState *con)
} }
} }
if (!con->suppressNoticeMessages)
{
/* Notices for no operation UDF calls */ /* Notices for no operation UDF calls */
if (sameDistColumn) if (sameDistColumn)
{ {
@ -1328,6 +1360,7 @@ CheckAlterDistributedTableConversionParameters(TableConversionState *con)
con->colocateWith))); con->colocateWith)));
} }
} }
}
/* /*

View File

@ -153,6 +153,12 @@ typedef struct TableConversionParameters
* to the table * to the table
*/ */
bool cascadeViaForeignKeys; bool cascadeViaForeignKeys;
/*
* suppressNoticeMessages determines if we want to suppress NOTICE
* messages that we explicitly issue
*/
bool suppressNoticeMessages;
} TableConversionParameters; } TableConversionParameters;
typedef struct TableConversionReturn typedef struct TableConversionReturn