!5915 【bugfix】补充按需回放redo节点适配ddl,reindex database场景的适配
Merge pull request !5915 from 周聪/bugfix_redo_phase_enable_ddl_reindex_database
This commit is contained in:
@ -13908,13 +13908,15 @@ struct OndemandParseInfo {
|
||||
NodeTag parseType;
|
||||
ObjectType objectType;
|
||||
RangeVar* relationRangeVar;
|
||||
const char* dbName;
|
||||
};
|
||||
|
||||
static List* AppendItemToOndemandParseList(List* ondemandParseList, NodeTag parseType, ObjectType objectType, RangeVar* relationRangeVar) {
|
||||
static List* AppendItemToOndemandParseList(List* ondemandParseList, NodeTag parseType, ObjectType objectType, RangeVar* relationRangeVar, const char* dbName = NULL) {
|
||||
OndemandParseInfo* info = (OndemandParseInfo*)palloc(sizeof(OndemandParseInfo));
|
||||
info->parseType = parseType;
|
||||
info->objectType = objectType;
|
||||
info->relationRangeVar = relationRangeVar;
|
||||
info->dbName = dbName;
|
||||
ondemandParseList = lappend(ondemandParseList, info);
|
||||
return ondemandParseList;
|
||||
}
|
||||
@ -14011,7 +14013,8 @@ static void PreRedoInOndemandRecovery(Node* parseTree) {
|
||||
case T_ReindexStmt: {
|
||||
ReindexStmt* reindexStmt = (ReindexStmt*) parseTree;
|
||||
ondemandParseList = AppendItemToOndemandParseList(ondemandParseList, T_ReindexStmt,
|
||||
reindexStmt->kind, reindexStmt->relation);
|
||||
reindexStmt->kind, reindexStmt->relation,
|
||||
reindexStmt->kind == OBJECT_DATABASE ? reindexStmt->name : NULL);
|
||||
break;
|
||||
}
|
||||
/* ALTER TABLE/INDEX/PROCEDURE/ SET SCHEMA */
|
||||
@ -14045,7 +14048,17 @@ static void PreRedoInOndemandRecovery(Node* parseTree) {
|
||||
case T_AlterOwnerStmt: {
|
||||
break;
|
||||
}
|
||||
case T_ReindexStmt:
|
||||
case T_ReindexStmt: {
|
||||
const char* dbName = ondemandParseInfo->dbName;
|
||||
Oid dbOid = get_database_oid_by_name(dbName);
|
||||
if (!OidIsValid(dbOid)) {
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("Database \"%s\" does not exist.", dbName)));
|
||||
break;
|
||||
}
|
||||
RedoDatabaseForOndemandExtremeRTO(dbOid);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("[On-demand] Not support this sql in ondemand redo phase, nodeType: %d, relKind: %d.",
|
||||
|
||||
Reference in New Issue
Block a user