<term><literal>\dg[+] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
- Lists database roles. If <replaceable
- class="parameter">pattern</replaceable> is specified, only
- those roles whose names match the pattern are listed.
- (This command is now effectively the same as <literal>\du</literal>).
+ Lists database roles.
+ (Since the concepts of <quote>users</> and <quote>groups</> have been
+ unified into <quote>roles</>, this command is now equivalent to
+ <literal>\du</literal>.)
+ If <replaceable class="parameter">pattern</replaceable> is specified,
+ only those roles whose names match the pattern are listed.
If the form <literal>\dg+</literal> is used, additional information
- is shown about each role, including the comment for each role.
+ is shown about each role; currently this adds the comment for each
+ role.
</para>
</listitem>
</varlistentry>
<term><literal>\du[+] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
<listitem>
<para>
- Lists database roles. If <replaceable
- class="parameter">pattern</replaceable> is specified, only
- those roles whose names match the pattern are listed.
+ Lists database roles.
+ (Since the concepts of <quote>users</> and <quote>groups</> have been
+ unified into <quote>roles</>, this command is now equivalent to
+ <literal>\dg</literal>.)
+ If <replaceable class="parameter">pattern</replaceable> is specified,
+ only those roles whose names match the pattern are listed.
If the form <literal>\du+</literal> is used, additional information
- is shown about each role, including the comment for each role.
+ is shown about each role; currently this adds the comment for each
+ role.
</para>
</listitem>
</varlistentry>
printfPQExpBuffer(&buf,
"SELECT r.rolname, r.rolsuper, r.rolinherit,\n"
" r.rolcreaterole, r.rolcreatedb, r.rolcanlogin,\n"
- " r.rolconnlimit,\n"
+ " r.rolconnlimit, r.rolvaliduntil,\n"
" ARRAY(SELECT b.rolname\n"
" FROM pg_catalog.pg_auth_members m\n"
" JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid)\n"
" u.usesuper AS rolsuper,\n"
" true AS rolinherit, false AS rolcreaterole,\n"
" u.usecreatedb AS rolcreatedb, true AS rolcanlogin,\n"
- " -1 AS rolconnlimit,\n"
+ " -1 AS rolconnlimit,"
+ " u.valuntil as rolvaliduntil,\n"
" ARRAY(SELECT g.groname FROM pg_catalog.pg_group g WHERE u.usesysid = ANY(g.grolist)) as memberof"
"\nFROM pg_catalog.pg_user u\n");
add_role_attribute(&buf, _("Cannot login"));
if (pset.sversion >= 90100)
- if (strcmp(PQgetvalue(res, i, (verbose ? 9 : 8)), "t") == 0)
+ if (strcmp(PQgetvalue(res, i, (verbose ? 10 : 9)), "t") == 0)
add_role_attribute(&buf, _("Replication"));
conns = atoi(PQgetvalue(res, i, 6));
conns);
}
+ if (strcmp(PQgetvalue(res, i, 7), "") != 0)
+ {
+ if (buf.len > 0)
+ appendPQExpBufferStr(&buf, "\n");
+ appendPQExpBufferStr(&buf, _("Password valid until "));
+ appendPQExpBufferStr(&buf, PQgetvalue(res, i, 7));
+ }
+
attr[i] = pg_strdup(buf.data);
printTableAddCell(&cont, attr[i], false, false);
- printTableAddCell(&cont, PQgetvalue(res, i, 7), false, false);
+ printTableAddCell(&cont, PQgetvalue(res, i, 8), false, false);
if (verbose && pset.sversion >= 80200)
- printTableAddCell(&cont, PQgetvalue(res, i, 8), false, false);
+ printTableAddCell(&cont, PQgetvalue(res, i, 9), false, false);
}
termPQExpBuffer(&buf);