mirror of
https://github.com/postgres/postgres.git
synced 2025-06-17 17:02:08 +03:00
Allow CREATE/ALTER ROLE PASSWORD NULL to allow restoring the default state
of having no password.
This commit is contained in:
@ -6,7 +6,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/backend/commands/user.c,v 1.166 2005/11/22 18:17:09 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/commands/user.c,v 1.167 2005/12/23 16:46:39 petere Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -225,7 +225,7 @@ CreateRole(CreateRoleStmt *stmt)
|
||||
defel->defname);
|
||||
}
|
||||
|
||||
if (dpassword)
|
||||
if (dpassword && dpassword->arg)
|
||||
password = strVal(dpassword->arg);
|
||||
if (dissuper)
|
||||
issuper = intVal(dissuper->arg) != 0;
|
||||
@ -517,7 +517,7 @@ AlterRole(AlterRoleStmt *stmt)
|
||||
defel->defname);
|
||||
}
|
||||
|
||||
if (dpassword)
|
||||
if (dpassword && dpassword->arg)
|
||||
password = strVal(dpassword->arg);
|
||||
if (dissuper)
|
||||
issuper = intVal(dissuper->arg);
|
||||
@ -573,7 +573,7 @@ AlterRole(AlterRoleStmt *stmt)
|
||||
!dconnlimit &&
|
||||
!rolemembers &&
|
||||
!validUntil &&
|
||||
password &&
|
||||
dpassword &&
|
||||
roleid == GetUserId()))
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
|
||||
@ -651,6 +651,13 @@ AlterRole(AlterRoleStmt *stmt)
|
||||
new_record_repl[Anum_pg_authid_rolpassword - 1] = 'r';
|
||||
}
|
||||
|
||||
/* unset password */
|
||||
if (dpassword && dpassword->arg == NULL)
|
||||
{
|
||||
new_record_repl[Anum_pg_authid_rolpassword - 1] = 'r';
|
||||
new_record_nulls[Anum_pg_authid_rolpassword - 1] = 'n';
|
||||
}
|
||||
|
||||
/* valid until */
|
||||
if (validUntil)
|
||||
{
|
||||
|
Reference in New Issue
Block a user