Drop server support for FE/BE protocol version 1.0.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 11 Oct 2016 16:19:18 +0000 (12:19 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 11 Oct 2016 16:19:18 +0000 (12:19 -0400)
While this isn't a lot of code, it's been essentially untestable for
a very long time, because libpq doesn't support anything older than
protocol 2.0, and has not since release 6.3.  There's no reason to
believe any other client-side code still uses that protocol, either.

Discussion: <2661.1475849167@sss.pgh.pa.us>

src/backend/access/common/printtup.c
src/backend/commands/copy.c
src/backend/tcop/dest.c
src/backend/tcop/postgres.c
src/include/libpq/pqcomm.h

index d213af90749f4dcfe704132eac5b755d6600774e..e2b1050c9698c01fa249c669c9c69208279b6561 100644 (file)
@@ -229,9 +229,7 @@ SendRowDescriptionMessage(TupleDesc typeinfo, List *targetlist, int16 *formats)
        atttypid = getBaseTypeAndTypmod(atttypid, &atttypmod);
        pq_sendint(&buf, (int) atttypid, sizeof(atttypid));
        pq_sendint(&buf, attrs[i]->attlen, sizeof(attrs[i]->attlen));
-       /* typmod appears in protocol 2.0 and up */
-       if (proto >= 2)
-           pq_sendint(&buf, atttypmod, sizeof(atttypmod));
+       pq_sendint(&buf, atttypmod, sizeof(atttypmod));
        /* format info appears in protocol 3.0 and up */
        if (proto >= 3)
        {
index 457c9bbd74b91fd60f19566e069d19a02bbf6852..b4140eb68a731b876cb032a3366430017581e87b 100644 (file)
@@ -353,7 +353,7 @@ SendCopyBegin(CopyState cstate)
        pq_endmessage(&buf);
        cstate->copy_dest = COPY_NEW_FE;
    }
-   else if (PG_PROTOCOL_MAJOR(FrontendProtocol) >= 2)
+   else
    {
        /* old way */
        if (cstate->binary)
@@ -365,18 +365,6 @@ SendCopyBegin(CopyState cstate)
        pq_startcopyout();
        cstate->copy_dest = COPY_OLD_FE;
    }
-   else
-   {
-       /* very old way */
-       if (cstate->binary)
-           ereport(ERROR,
-                   (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-           errmsg("COPY BINARY is not supported to stdout or from stdin")));
-       pq_putemptymessage('B');
-       /* grottiness needed for old COPY OUT protocol */
-       pq_startcopyout();
-       cstate->copy_dest = COPY_OLD_FE;
-   }
 }
 
 static void
@@ -399,7 +387,7 @@ ReceiveCopyBegin(CopyState cstate)
        cstate->copy_dest = COPY_NEW_FE;
        cstate->fe_msgbuf = makeStringInfo();
    }
-   else if (PG_PROTOCOL_MAJOR(FrontendProtocol) >= 2)
+   else
    {
        /* old way */
        if (cstate->binary)
@@ -411,18 +399,6 @@ ReceiveCopyBegin(CopyState cstate)
        pq_startmsgread();
        cstate->copy_dest = COPY_OLD_FE;
    }
-   else
-   {
-       /* very old way */
-       if (cstate->binary)
-           ereport(ERROR,
-                   (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-           errmsg("COPY BINARY is not supported to stdout or from stdin")));
-       pq_putemptymessage('D');
-       /* any error in old protocol will make us lose sync */
-       pq_startmsgread();
-       cstate->copy_dest = COPY_OLD_FE;
-   }
    /* We *must* flush here to ensure FE knows it can send. */
    pq_flush();
 }
index de45cbc4fb8e8867464b39b25600166a230a9964..60a92801f1d89366318e7fb6ec99b96c579201b2 100644 (file)
@@ -218,8 +218,8 @@ NullCommand(CommandDest dest)
 /* ----------------
  *     ReadyForQuery - tell dest that we are ready for a new query
  *
- *     The ReadyForQuery message is sent in protocol versions 2.0 and up
- *     so that the FE can tell when we are done processing a query string.
+ *     The ReadyForQuery message is sent so that the FE can tell when
+ *     we are done processing a query string.
  *     In versions 3.0 and up, it also carries a transaction state indicator.
  *
  *     Note that by flushing the stdio buffer here, we can avoid doing it
@@ -241,7 +241,7 @@ ReadyForQuery(CommandDest dest)
                pq_sendbyte(&buf, TransactionBlockStatusCode());
                pq_endmessage(&buf);
            }
-           else if (PG_PROTOCOL_MAJOR(FrontendProtocol) >= 2)
+           else
                pq_putemptymessage('Z');
            /* Flush output at end of cycle in any case. */
            pq_flush();
index 98ccbbb4d1acf77d646732f2b067fd08b141c78a..2347f1bcdccd144de2681f60d5e59cdd2f925a9d 100644 (file)
@@ -3768,8 +3768,7 @@ PostgresMain(int argc, char *argv[],
    /*
     * Send this backend's cancellation info to the frontend.
     */
-   if (whereToSendOutput == DestRemote &&
-       PG_PROTOCOL_MAJOR(FrontendProtocol) >= 2)
+   if (whereToSendOutput == DestRemote)
    {
        StringInfoData buf;
 
index c6bbfc237725298c7c8123916a0d39c774b592a2..96484227f7edcd3d8f03343cf4eeda8aedf4ebf3 100644 (file)
@@ -107,7 +107,7 @@ typedef struct
 
 /* The earliest and latest frontend/backend protocol version supported. */
 
-#define PG_PROTOCOL_EARLIEST   PG_PROTOCOL(1,0)
+#define PG_PROTOCOL_EARLIEST   PG_PROTOCOL(2,0)
 #define PG_PROTOCOL_LATEST     PG_PROTOCOL(3,0)
 
 typedef uint32 ProtocolVersion; /* FE/BE protocol version number */