mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +03:00
Allow non-superuser database owners to create procedural languages.
A DBA is allowed to create a language in his database if it's marked "tmpldbacreate" in pg_pltemplate. The factory default is that this is set for all standard trusted languages, but of course a superuser may adjust the settings. In service of this, add the long-foreseen owner column to pg_language; renaming, dropping, and altering owner of a PL now follow normal ownership rules instead of being superuser-only. Jeremy Drake, with some editorialization by Tom Lane.
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
* by PostgreSQL
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.464 2007/03/22 20:47:12 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.465 2007/03/26 16:58:39 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -4030,7 +4030,19 @@ getProcLangs(int *numProcLangs)
|
||||
/* Make sure we are in proper schema */
|
||||
selectSourceSchema("pg_catalog");
|
||||
|
||||
if (g_fout->remoteVersion >= 80100)
|
||||
if (g_fout->remoteVersion >= 80300)
|
||||
{
|
||||
/* pg_language has a lanowner column */
|
||||
appendPQExpBuffer(query, "SELECT tableoid, oid, "
|
||||
"lanname, lanpltrusted, lanplcallfoid, "
|
||||
"lanvalidator, lanacl, "
|
||||
"(%s lanowner) as lanowner "
|
||||
"FROM pg_language "
|
||||
"WHERE lanispl "
|
||||
"ORDER BY oid",
|
||||
username_subquery);
|
||||
}
|
||||
else if (g_fout->remoteVersion >= 80100)
|
||||
{
|
||||
/* Languages are owned by the bootstrap superuser, OID 10 */
|
||||
appendPQExpBuffer(query, "SELECT tableoid, oid, *, "
|
||||
|
Reference in New Issue
Block a user