Thread

  1. [PATCH] Correct the version sent in protocol negotiation

    Ning Sun <classicning@gmail.com> — 2026-06-07T02:00:09Z

    Our protocol doc describes protocol negotiation message will send latest 
    minor version. However that field is a 4-byte one. The actual 
    implementation sends full version including the major part:
    
    static void
    SendNegotiateProtocolVersion(List *unrecognized_protocol_options)
    {
         StringInfoData buf;
         ListCell   *lc;
    
         pq_beginmessage(&buf, PqMsg_NegotiateProtocolVersion);
         pq_sendint32(&buf, FrontendProtocol);
         pq_sendint32(&buf, list_length(unrecognized_protocol_options));
         foreach(lc, unrecognized_protocol_options)
             pq_sendstring(&buf, lfirst(lc));
         pq_endmessage(&buf);
    
         /* no need to flush, some other message will follow */
    }
    
    The patch included just clarifies this behavior by removing "minor" from 
    "newest minor version".
    
    
  2. Re: [PATCH] Correct the version sent in protocol negotiation

    Laurenz Albe <laurenz.albe@cybertec.at> — 2026-06-07T05:06:55Z

    On Sun, 2026-06-07 at 10:00 +0800, Ning Sun wrote:
    > Our protocol doc describes protocol negotiation message will send latest 
    > minor version. However that field is a 4-byte one. The actual 
    > implementation sends full version including the major part:
    > 
    > The patch included just clarifies this behavior by removing "minor" from 
    > "newest minor version".
    
    To my understanding, the "minor version" is the entire version *including*
    the last number, like 18.4 (and not only .4).
    
    In this, I seem to be in agreement with
    https://www.postgresql.org/support/versioning/
    
    To me, removing the "minor" makes the text less clear.  If we change that
    at all, perhaps a wording like "the full version, including the minor
    release" would remove any ambiguity.
    
    Yours,
    Laurenz Albe
    
    
    
    
  3. Re: [PATCH] Correct the version sent in protocol negotiation

    Ning Sun <classicning@gmail.com> — 2026-06-07T07:40:37Z

    I see. The "minor version"  has its own meaning in postgres context.
    
    That makes sense. Thank you for clarification, Laurenz.
    
    On 07/06/2026 13:06, Laurenz Albe wrote:
    > On Sun, 2026-06-07 at 10:00 +0800, Ning Sun wrote:
    >> Our protocol doc describes protocol negotiation message will send latest
    >> minor version. However that field is a 4-byte one. The actual
    >> implementation sends full version including the major part:
    >>
    >> The patch included just clarifies this behavior by removing "minor" from
    >> "newest minor version".
    > To my understanding, the "minor version" is the entire version *including*
    > the last number, like 18.4 (and not only .4).
    >
    > In this, I seem to be in agreement with
    > https://www.postgresql.org/support/versioning/
    >
    > To me, removing the "minor" makes the text less clear.  If we change that
    > at all, perhaps a wording like "the full version, including the minor
    > release" would remove any ambiguity.
    >
    > Yours,
    > Laurenz Albe