Index: doc/src/sgml/ref/alter_user.sgml =================================================================== RCS file: /cvsroot/pgsql-server/doc/src/sgml/ref/alter_user.sgml,v retrieving revision 1.27 diff -c -c -r1.27 alter_user.sgml *** doc/src/sgml/ref/alter_user.sgml 15 Apr 2003 13:25:08 -0000 1.27 --- doc/src/sgml/ref/alter_user.sgml 6 Jun 2003 15:00:17 -0000 *************** *** 20,26 **** where option can be: ! [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | CREATEDB | NOCREATEDB | CREATEUSER | NOCREATEUSER | VALID UNTIL 'abstime' --- 20,26 ---- where option can be: ! [ ENCRYPTED | UNENCRYPTED ] PASSWORD [ 'password' | NONE ] | CREATEDB | NOCREATEDB | CREATEUSER | NOCREATEUSER | VALID UNTIL 'abstime' *************** *** 75,81 **** password ! The new password to be used for this account. --- 75,82 ---- password ! The new password to be used for this account. Set to NONE ! to remove the password. Index: src/backend/commands/user.c =================================================================== RCS file: /cvsroot/pgsql-server/src/backend/commands/user.c,v retrieving revision 1.117 diff -c -c -r1.117 user.c *** src/backend/commands/user.c 12 May 2003 23:08:50 -0000 1.117 --- src/backend/commands/user.c 6 Jun 2003 15:00:18 -0000 *************** *** 558,564 **** if (dvalidUntil) validUntil = strVal(dvalidUntil->arg); if (dpassword) ! password = strVal(dpassword->arg); if (dgroupElts) groupElts = (List *) dgroupElts->arg; --- 558,564 ---- if (dvalidUntil) validUntil = strVal(dvalidUntil->arg); if (dpassword) ! password = dpassword->arg ? strVal(dpassword->arg) : NULL; if (dgroupElts) groupElts = (List *) dgroupElts->arg; *************** *** 767,773 **** if (dvalidUntil) validUntil = strVal(dvalidUntil->arg); if (dpassword) ! password = strVal(dpassword->arg); if (password) CheckPgUserAclNotNull(); --- 767,773 ---- if (dvalidUntil) validUntil = strVal(dvalidUntil->arg); if (dpassword) ! password = dpassword->arg ? strVal(dpassword->arg) : NULL; if (password) CheckPgUserAclNotNull(); *************** *** 831,850 **** } /* password */ ! if (password) { ! if (!encrypt_password || isMD5(password)) ! new_record[Anum_pg_shadow_passwd - 1] = ! DirectFunctionCall1(textin, CStringGetDatum(password)); else { ! if (!EncryptMD5(password, stmt->user, strlen(stmt->user), ! encrypted_password)) ! elog(ERROR, "CREATE USER: password encryption failed"); ! new_record[Anum_pg_shadow_passwd - 1] = ! DirectFunctionCall1(textin, CStringGetDatum(encrypted_password)); } - new_record_repl[Anum_pg_shadow_passwd - 1] = 'r'; } /* valid until */ --- 831,858 ---- } /* password */ ! if (dpassword) { ! if (password) ! { ! if (!encrypt_password || isMD5(password)) ! new_record[Anum_pg_shadow_passwd - 1] = ! DirectFunctionCall1(textin, CStringGetDatum(password)); ! else ! { ! if (!EncryptMD5(password, stmt->user, strlen(stmt->user), ! encrypted_password)) ! elog(ERROR, "CREATE USER: password encryption failed"); ! new_record[Anum_pg_shadow_passwd - 1] = ! DirectFunctionCall1(textin, CStringGetDatum(encrypted_password)); ! } ! new_record_repl[Anum_pg_shadow_passwd - 1] = 'r'; ! } else { ! new_record_nulls[Anum_pg_shadow_passwd - 1] = 'n'; ! new_record_repl[Anum_pg_shadow_passwd - 1] = 'r'; } } /* valid until */ Index: src/backend/parser/gram.y =================================================================== RCS file: /cvsroot/pgsql-server/src/backend/parser/gram.y,v retrieving revision 2.416 diff -c -c -r2.416 gram.y *** src/backend/parser/gram.y 29 May 2003 20:40:36 -0000 2.416 --- src/backend/parser/gram.y 6 Jun 2003 15:00:26 -0000 *************** *** 640,645 **** --- 640,649 ---- { $$ = makeDefElem("password", (Node *)makeString($2)); } + | PASSWORD NONE + { + $$ = makeDefElem("password", (Node *)NULL); + } | ENCRYPTED PASSWORD Sconst { $$ = makeDefElem("encryptedPassword", (Node *)makeString($3));