Re: per user/database connections limit again - Mailing list pgsql-patches

From Petr Jelinek
Subject Re: per user/database connections limit again
Date
Msg-id 42EBCC9A.70002@parba.cz
Whole thread Raw
In response to Re: per user/database connections limit again  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-patches
Here is promised documentation.
Be warned that both my writing skills and my english are far from good :)

--
Regards
Petr Jelinek (PJMODOS)


Index: doc/src/sgml/catalogs.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/catalogs.sgml,v
retrieving revision 2.109
diff -c -r2.109 catalogs.sgml
*** doc/src/sgml/catalogs.sgml    26 Jul 2005 16:38:25 -0000    2.109
--- doc/src/sgml/catalogs.sgml    30 Jul 2005 18:48:10 -0000
***************
*** 1019,1024 ****
--- 1019,1035 ----
       </row>

       <row>
+       <entry><structfield>rolconnlimit</structfield></entry>
+       <entry><type>int4</type></entry>
+       <entry></entry>
+       <entry>
+        For roles that can login this sets maximum amount of concurrent
+        connections this role can make. Default value (-1) means
+        unlimited connections, zero (0) means role can't login.
+       </entry>
+      </row>
+
+      <row>
        <entry><structfield>rolpassword</structfield></entry>
        <entry><type>text</type></entry>
        <entry></entry>
***************
*** 1922,1927 ****
--- 1933,1949 ----
       </row>

       <row>
+       <entry><structfield>datconnlimit</structfield></entry>
+       <entry><type>int4</type></entry>
+       <entry></entry>
+       <entry>
+        Sets maximum amount of concurrent connections that can be made
+        to this database. Default value (-1) means unlimited connections,
+        zero (0) means that database isn't accepting connections.
+       </entry>
+      </row>
+
+      <row>
        <entry><structfield>datlastsysoid</structfield></entry>
        <entry><type>oid</type></entry>
        <entry></entry>
***************
*** 4812,4817 ****
--- 4834,4850 ----
       </row>

       <row>
+       <entry><structfield>rolconnlimit</structfield></entry>
+       <entry><type>int4</type></entry>
+       <entry></entry>
+       <entry>
+        For roles that can login this sets maximum amount of concurrent
+        connections this role can make. Default value (-1) means
+        unlimited connections, zero (0) means role can't login.
+       </entry>
+      </row>
+
+      <row>
        <entry><structfield>rolpassword</structfield></entry>
        <entry><type>text</type></entry>
        <entry></entry>
***************
*** 5094,5099 ****
--- 5127,5143 ----
       </row>

       <row>
+       <entry><structfield>useconnlimit</structfield></entry>
+       <entry><type>int4</type></entry>
+       <entry></entry>
+       <entry>
+        This sets maximum amount of concurrent connections this user can make.
+        Default value (-1) means unlimited connections,
+        zero (0) means user can't login.
+       </entry>
+      </row>
+
+      <row>
        <entry><structfield>passwd</structfield></entry>
        <entry><type>text</type></entry>
        <entry></entry>
Index: doc/src/sgml/ref/alter_database.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/ref/alter_database.sgml,v
retrieving revision 1.15
diff -c -r1.15 alter_database.sgml
*** doc/src/sgml/ref/alter_database.sgml    5 Jan 2005 14:22:39 -0000    1.15
--- doc/src/sgml/ref/alter_database.sgml    30 Jul 2005 18:48:11 -0000
***************
*** 23,28 ****
--- 23,34 ----
  ALTER DATABASE <replaceable class="PARAMETER">name</replaceable> SET <replaceable>parameter</replaceable> { TO | = }
{<replaceable>value</replaceable> | DEFAULT } 
  ALTER DATABASE <replaceable class="PARAMETER">name</replaceable> RESET <replaceable>parameter</replaceable>

+ ALTER DATABASE <replaceable class="PARAMETER">name</replaceable> [ [ WITH ] <replaceable
class="PARAMETER">option</replaceable>[ ... ] ] 
+
+ where <replaceable class="PARAMETER">option</replaceable> can be:
+
+     CONNECTION LIMIT <replaceable class="PARAMETER">connlimit</replaceable>
+
  ALTER DATABASE <replaceable class="PARAMETER">name</replaceable> RENAME TO <replaceable>newname</replaceable>

  ALTER DATABASE <replaceable class="PARAMETER">name</replaceable> OWNER TO <replaceable>new_owner</replaceable>
***************
*** 51,57 ****
    </para>

    <para>
!    The third form changes the name of the database.  Only the database
     owner or a superuser can rename a database; non-superuser owners must
     also have the
     <literal>CREATEDB</literal> privilege.  The current database cannot
--- 57,68 ----
    </para>

    <para>
!    The third form changes certain per-database settings.  (See below for
!    details.)  Only database owner or superuser can change these settings.
!   </para>
!
!   <para>
!    The fourth form changes the name of the database.  Only the database
     owner or a superuser can rename a database; non-superuser owners must
     also have the
     <literal>CREATEDB</literal> privilege.  The current database cannot
***************
*** 60,66 ****
    </para>

    <para>
!    The fourth form changes the owner of the database.  Only a superuser
     can change the database's owner.
    </para>
   </refsect1>
--- 71,77 ----
    </para>

    <para>
!    The fifth form changes the owner of the database.  Only a superuser
     can change the database's owner.
    </para>
   </refsect1>
***************
*** 100,105 ****
--- 111,128 ----
        </listitem>
       </varlistentry>

+      <varlistentry>
+       <term><replaceable class="parameter">connlimit</replaceable></term>
+       <listitem>
+        <para>
+         Number specifying how many concurrent connections can be made
+         to this database. Default (-1) means unlimited
+         (limited by max_connections config variable only),
+         zero (0) means that no connections are allowed.
+        </para>
+       </listitem>
+      </varlistentry>
+
     <varlistentry>
      <term><replaceable>newname</replaceable></term>
      <listitem>
Index: doc/src/sgml/ref/alter_role.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/ref/alter_role.sgml,v
retrieving revision 1.1
diff -c -r1.1 alter_role.sgml
*** doc/src/sgml/ref/alter_role.sgml    26 Jul 2005 23:24:02 -0000    1.1
--- doc/src/sgml/ref/alter_role.sgml    30 Jul 2005 18:48:12 -0000
***************
*** 30,35 ****
--- 30,36 ----
      | CREATEUSER | NOCREATEUSER
      | INHERIT | NOINHERIT
      | LOGIN | NOLOGIN
+     | CONNECTION LIMIT <replaceable class="PARAMETER">connlimit</replaceable>
      | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '<replaceable class="PARAMETER">password</replaceable>'
      | VALID UNTIL '<replaceable class="PARAMETER">timestamp</replaceable>'

***************
*** 118,123 ****
--- 119,135 ----
        <term><literal>NOINHERIT</literal></term>
        <term><literal>LOGIN</literal></term>
        <term><literal>NOLOGIN</literal></term>
+       <term><literal>CONNECTION LIMIT</literal> <replaceable class="parameter">connlimit</replaceable></term>
+       <listitem>
+        <para>
+         If role can login, this specifies many concurrent connections
+         role can make. Default (-1) means unlimited
+         (limited by max_connections config variable only),
+         zero (0) means that role can't connect to server.
+        </para>
+       </listitem>
+      </varlistentry>
+      <varlistentry>
        <term><literal>PASSWORD</> <replaceable class="parameter">password</replaceable></term>
        <term><literal>ENCRYPTED</></term>
        <term><literal>UNENCRYPTED</></term>
***************
*** 225,230 ****
--- 237,250 ----
    </para>

    <para>
+    Set role's maximum connections:
+
+ <programlisting>
+ ALTER ROLE peter WITH CONNECTION LIMIT 20;
+ </programlisting>
+   </para>
+
+   <para>
     Give a role a non-default setting of the
     <xref linkend="guc-maintenance-work-mem"> parameter:

Index: doc/src/sgml/ref/alter_user.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/ref/alter_user.sgml,v
retrieving revision 1.38
diff -c -r1.38 alter_user.sgml
*** doc/src/sgml/ref/alter_user.sgml    26 Jul 2005 23:24:02 -0000    1.38
--- doc/src/sgml/ref/alter_user.sgml    30 Jul 2005 18:48:12 -0000
***************
*** 30,35 ****
--- 30,36 ----
      | CREATEUSER | NOCREATEUSER
      | INHERIT | NOINHERIT
      | LOGIN | NOLOGIN
+     | CONNECTION LIMIT <replaceable class="PARAMETER">connlimit</replaceable>
      | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '<replaceable class="PARAMETER">password</replaceable>'
      | VALID UNTIL '<replaceable class="PARAMETER">timestamp</replaceable>'

Index: doc/src/sgml/ref/create_database.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/ref/create_database.sgml,v
retrieving revision 1.43
diff -c -r1.43 create_database.sgml
*** doc/src/sgml/ref/create_database.sgml    29 Oct 2004 03:17:22 -0000    1.43
--- doc/src/sgml/ref/create_database.sgml    30 Jul 2005 18:48:12 -0000
***************
*** 24,30 ****
      [ [ WITH ] [ OWNER [=] <replaceable class="parameter">dbowner</replaceable> ]
             [ TEMPLATE [=] <replaceable class="parameter">template</replaceable> ]
             [ ENCODING [=] <replaceable class="parameter">encoding</replaceable> ]
!            [ TABLESPACE [=] <replaceable class="parameter">tablespace</replaceable> ] ]
  </synopsis>
   </refsynopsisdiv>

--- 24,31 ----
      [ [ WITH ] [ OWNER [=] <replaceable class="parameter">dbowner</replaceable> ]
             [ TEMPLATE [=] <replaceable class="parameter">template</replaceable> ]
             [ ENCODING [=] <replaceable class="parameter">encoding</replaceable> ]
!            [ TABLESPACE [=] <replaceable class="parameter">tablespace</replaceable> ]
!            [ CONNECTION LIMIT [=] <replaceable class="parameter">connlimit</replaceable> ] ]
  </synopsis>
   </refsynopsisdiv>

***************
*** 123,128 ****
--- 124,140 ----
         </para>
        </listitem>
       </varlistentry>
+      <varlistentry>
+       <term><replaceable class="parameter">connlimit</replaceable></term>
+       <listitem>
+        <para>
+         Number specifying how many concurrent connections can be made
+         to this database. Default (-1) means unlimited
+         (limited by max_connections config variable only),
+         zero (0) means that no connections are allowed.
+        </para>
+       </listitem>
+      </varlistentry>
      </variablelist>

    <para>
Index: doc/src/sgml/ref/create_role.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/ref/create_role.sgml,v
retrieving revision 1.1
diff -c -r1.1 create_role.sgml
*** doc/src/sgml/ref/create_role.sgml    26 Jul 2005 23:24:02 -0000    1.1
--- doc/src/sgml/ref/create_role.sgml    30 Jul 2005 18:48:13 -0000
***************
*** 30,35 ****
--- 30,36 ----
      | CREATEUSER | NOCREATEUSER
      | INHERIT | NOINHERIT
      | LOGIN | NOLOGIN
+     | CONNECTION LIMIT <replaceable class="PARAMETER">connlimit</replaceable>
      | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '<replaceable class="PARAMETER">password</replaceable>'
      | VALID UNTIL '<replaceable class="PARAMETER">timestamp</replaceable>'
      | IN ROLE <replaceable class="PARAMETER">rolename</replaceable> [, ...]
***************
*** 173,178 ****
--- 174,191 ----
       </varlistentry>

       <varlistentry>
+       <term><literal>CONNECTION LIMIT</literal> <replaceable class="parameter">connlimit</replaceable></term>
+       <listitem>
+        <para>
+         If role can login, this specifies many concurrent connections
+         role can make. Default (-1) means unlimited
+         (limited by max_connections config variable only),
+         zero (0) means that role can't connect to server.
+        </para>
+       </listitem>
+      </varlistentry>
+
+      <varlistentry>
        <term><literal>PASSWORD</> <replaceable class="parameter">password</replaceable></term>
        <listitem>
         <para>
Index: doc/src/sgml/ref/create_user.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/ref/create_user.sgml,v
retrieving revision 1.37
diff -c -r1.37 create_user.sgml
*** doc/src/sgml/ref/create_user.sgml    26 Jul 2005 23:24:02 -0000    1.37
--- doc/src/sgml/ref/create_user.sgml    30 Jul 2005 18:48:13 -0000
***************
*** 30,35 ****
--- 30,36 ----
      | CREATEUSER | NOCREATEUSER
      | INHERIT | NOINHERIT
      | LOGIN | NOLOGIN
+     | CONNECTION LIMIT <replaceable class="PARAMETER">connlimit</replaceable>
      | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '<replaceable class="PARAMETER">password</replaceable>'
      | VALID UNTIL '<replaceable class="PARAMETER">timestamp</replaceable>'
      | IN ROLE <replaceable class="PARAMETER">rolename</replaceable> [, ...]

pgsql-patches by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Interval->day docs and regression tests
Next
From: Neil Conway
Date:
Subject: Re: PL/PGSQL: Dynamic Record Introspection