diff --git a/src/gausskernel/optimizer/commands/schemacmds.cpp b/src/gausskernel/optimizer/commands/schemacmds.cpp index 613546932..bb3affc67 100644 --- a/src/gausskernel/optimizer/commands/schemacmds.cpp +++ b/src/gausskernel/optimizer/commands/schemacmds.cpp @@ -133,6 +133,17 @@ Oid CreateSchemaCommand(CreateSchemaStmt* stmt, const char* queryString) errdetail("The prefix \"gs_role_\" is reserved."))); } +#ifndef ENABLE_MULTIPLE_NODES + if (!g_instance.attr.attr_common.allowSystemTableMods && + stmt->temptype == Temp_None && + (isTempNamespaceName(stmt->schemaname) || isToastTempNamespaceName(stmt->schemaname))) { + ereport(ERROR, + (errcode(ERRCODE_RESERVED_NAME), + errmsg("unacceptable schema name \"%s\"", schemaName), + errdetail("The prefix \"pg_temp_\" is reserved."))); + } +#endif + /* * Who is supposed to own the new schema? */ diff --git a/src/gausskernel/process/postmaster/twophasecleaner.cpp b/src/gausskernel/process/postmaster/twophasecleaner.cpp index 86177ad93..cad5af6e3 100644 --- a/src/gausskernel/process/postmaster/twophasecleaner.cpp +++ b/src/gausskernel/process/postmaster/twophasecleaner.cpp @@ -841,7 +841,9 @@ static void DropTempSchemas(PGconn* conn) if (thirdLastPos == NULL) { PQfinish(conn); conn = NULL; - elog(ERROR, "strrchr failed, can't find '%c' in '%s'\n", '_', tempBuffer2); + elog(ERROR, "strrchr failed, can't find '%c' in '%s'. " + "the schema name '%s' is reserved, advise to delete manually\n", + '_', tempBuffer2, tempSchema->tempSchemaName); } uint32 timeLineID = strtol(thirdLastPos + 1, NULL, 10);