mirror of https://github.com/citusdata/citus.git
Add suppressNoticeMessages to TableConversionState
parent
cacb76d2c6
commit
458a81f93d
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -1327,6 +1359,7 @@ CheckAlterDistributedTableConversionParameters(TableConversionState *con)
|
||||||
ereport(NOTICE, (errmsg("table is already colocated with %s",
|
ereport(NOTICE, (errmsg("table is already colocated with %s",
|
||||||
con->colocateWith)));
|
con->colocateWith)));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue