Deduplicate handling of binary and text modes in logicalrep_read_tuple().
authorAmit Kapila <akapila@postgresql.org>
Mon, 6 Mar 2023 04:24:57 +0000 (09:54 +0530)
committerAmit Kapila <akapila@postgresql.org>
Mon, 6 Mar 2023 04:24:57 +0000 (09:54 +0530)
Author: Bharath Rupireddy
Reviewed-by: Peter Smith
Discussion: https://postgr.es/m/CALj2ACXdbq7kW_+bRrSGMsR6nefCvwbHBJ5J51mr3gFf7QysTA@mail.gmail.com

src/backend/replication/logical/proto.c

index 3a9d53a61ed9600c11c7917f6278f730a78ae96a..f3087132758f48ae9f686bdaf95a1800e761b9d7 100644 (file)
@@ -895,25 +895,19 @@ logicalrep_read_tuple(StringInfo in, LogicalRepTupleData *tuple)
                                /* we don't receive the value of an unchanged column */
                                break;
                        case LOGICALREP_COLUMN_TEXT:
-                               len = pq_getmsgint(in, 4);      /* read length */
-
-                               /* and data */
-                               value->data = palloc(len + 1);
-                               pq_copymsgbytes(in, value->data, len);
-                               value->data[len] = '\0';
-                               /* make StringInfo fully valid */
-                               value->len = len;
-                               value->cursor = 0;
-                               value->maxlen = len;
-                               break;
                        case LOGICALREP_COLUMN_BINARY:
                                len = pq_getmsgint(in, 4);      /* read length */
 
                                /* and data */
                                value->data = palloc(len + 1);
                                pq_copymsgbytes(in, value->data, len);
-                               /* not strictly necessary but per StringInfo practice */
+
+                               /*
+                                * Not strictly necessary for LOGICALREP_COLUMN_BINARY, but
+                                * per StringInfo practice.
+                                */
                                value->data[len] = '\0';
+
                                /* make StringInfo fully valid */
                                value->len = len;
                                value->cursor = 0;