Thread

Commits

  1. Reword text on ROW SHARE lock as acquired by SELECT FOR <lock>

  1. Add further details to ROW SHARE table level lock modes section

    The Post Office <noreply@postgresql.org> — 2022-04-04T15:54:15Z

    The following documentation comment has been logged on the website:
    
    Page: https://www.postgresql.org/docs/14/explicit-locking.html
    Description:
    
    The ROW SHARE table level lock modes section currently states:
    ```
    Conflicts with the EXCLUSIVE and ACCESS EXCLUSIVE lock modes.
    
    The SELECT FOR UPDATE and SELECT FOR SHARE commands acquire a lock of this
    mode on the target table(s) (in addition to ACCESS SHARE locks on any other
    tables that are referenced but not selected FOR UPDATE/FOR SHARE).
    ```
    I propose that it would be useful to explicitly state that `SELECT FOR KEY
    SHARE` AND `SELECT FOR NO KEY UPDATE` commands also acquire the ROW SHARE
    table level lock on target table(s). That is:
    ```
    Conflicts with the EXCLUSIVE and ACCESS EXCLUSIVE lock modes.
    
    The SELECT FOR UPDATE, SELECT FOR NO KEY UPDATE,  SELECT FOR SHARE, and
    SELECT FOR KEY SHARE commands acquire a lock of this mode on the target
    table(s) (in addition to ACCESS SHARE locks on any other tables that are
    referenced but not selected FOR UPDATE/FOR SHARE).
    ```
    
    Thank you for your time.
    
  2. Re: Add further details to ROW SHARE table level lock modes section

    Alvaro Herrera <alvherre@alvh.no-ip.org> — 2022-04-13T18:00:49Z

    On 2022-Apr-04, PG Doc comments form wrote:
    
    > I propose that it would be useful to explicitly state that `SELECT FOR KEY
    > SHARE` AND `SELECT FOR NO KEY UPDATE` commands also acquire the ROW SHARE
    > table level lock on target table(s). That is:
    > ```
    > Conflicts with the EXCLUSIVE and ACCESS EXCLUSIVE lock modes.
    > 
    > The SELECT FOR UPDATE, SELECT FOR NO KEY UPDATE,  SELECT FOR SHARE, and
    > SELECT FOR KEY SHARE commands acquire a lock of this mode on the target
    > table(s) (in addition to ACCESS SHARE locks on any other tables that are
    > referenced but not selected FOR UPDATE/FOR SHARE).
    > ```
    
    I agree we need an update here.  But the original wording seems a bit
    off; I think we should say SELECT is a command, and that the FOR bits
    are options thereof.  Maybe something like this:
    
            <para>
             The <command>SELECT</command> command acquires a lock of this mode
             on all tables on which one of the <option>FOR UPDATE</option>,
             <option>FOR NO KEY UPDATE</option>,
             <option>FOR SHARE</option>, or
             <option>FOR KEY SHARE</option> options is specified
             (in addition to <literal>ACCESS SHARE</literal> locks on any other
             tables that are referenced without any explicit
             <option>FOR ...</option> locking option).
            </para>
    
    Thoughts?
    
    Grammar check: "one of the a,b,c options IS specified" or "one of the
    a,b,c options ARE specified"?
    
    -- 
    Álvaro Herrera         PostgreSQL Developer  —  https://www.EnterpriseDB.com/
    
    
    
    
  3. Re: Add further details to ROW SHARE table level lock modes section

    Erik Rijkers <er@xs4all.nl> — 2022-04-13T18:11:43Z

    Op 13-04-2022 om 20:00 schreef Alvaro Herrera:
    > On 2022-Apr-04, PG Doc comments form wrote:
    > 
    >> I propose that it would be useful to explicitly state that `SELECT FOR KEY
    >> SHARE` AND `SELECT FOR NO KEY UPDATE` commands also acquire the ROW SHARE
    >> table level lock on target table(s). That is:
    >> ```
    >> Conflicts with the EXCLUSIVE and ACCESS EXCLUSIVE lock modes.
    >>
    >> The SELECT FOR UPDATE, SELECT FOR NO KEY UPDATE,  SELECT FOR SHARE, and
    >> SELECT FOR KEY SHARE commands acquire a lock of this mode on the target
    >> table(s) (in addition to ACCESS SHARE locks on any other tables that are
    >> referenced but not selected FOR UPDATE/FOR SHARE).
    >> ```
    > 
    > I agree we need an update here.  But the original wording seems a bit
    > off; I think we should say SELECT is a command, and that the FOR bits
    > are options thereof.  Maybe something like this:
    > 
    >          <para>
    >           The <command>SELECT</command> command acquires a lock of this mode
    >           on all tables on which one of the <option>FOR UPDATE</option>,
    >           <option>FOR NO KEY UPDATE</option>,
    >           <option>FOR SHARE</option>, or
    >           <option>FOR KEY SHARE</option> options is specified
    >           (in addition to <literal>ACCESS SHARE</literal> locks on any other
    >           tables that are referenced without any explicit
    >           <option>FOR ...</option> locking option).
    >          </para>
    > 
    > Thoughts?
    > 
    > Grammar check: "one of the a,b,c options IS specified" or "one of the
    > a,b,c options ARE specified"?
    
    
    one [...] IS specified