新增CREATE USER IF NOT EXISTS语法

This commit is contained in:
luozihao
2022-10-26 14:21:33 +08:00
parent 9b6d81382c
commit b426dc4842
9 changed files with 37 additions and 3 deletions

View File

@ -6093,7 +6093,7 @@ static void RenameTableFeature(RenameStmt* stmt)
/* Rename regular table */
replaces[Anum_pg_class_relname - 1] = true;
values[Anum_pg_class_relname - 1] = CStringGetDatum(modfytable);
values[Anum_pg_class_relname - 1] = DirectFunctionCall1(namein, CStringGetDatum(modfytable));
if (modfySchema != NULL) {
replaces[Anum_pg_class_relnamespace - 1] = true;
values[Anum_pg_class_relnamespace - 1] = ObjectIdGetDatum(modfyNameSpace);

View File

@ -1184,7 +1184,12 @@ void CreateRole(CreateRoleStmt* stmt)
if (OidIsValid(get_role_oid(stmt->role, true))) {
str_reset(password);
ereport(ERROR, (errcode(ERRCODE_DUPLICATE_OBJECT), errmsg("role \"%s\" already exists", stmt->role)));
int elevel = stmt->missing_ok ? NOTICE : ERROR;
ereport(elevel, (errmsg("role \"%s\" already exists", stmt->role)));
if (stmt->missing_ok) {
heap_close(pg_authid_rel, NoLock);
return;
}
}
/* Convert validBegin to internal form */