On Mon, Jan 18, 2021 at 1:16 PM japin <japi...@hotmail.com> wrote: > > > Hi, > > I find that the outputstr variable in logicalrep_write_tuple() only use in > `else` branch, I think we can narrow the scope, just like variable outputbytes > in `if` branch (for more readable). > > /* > * Send in binary if requested and type has suitable send function. > */ > if (binary && OidIsValid(typclass->typsend)) > { > bytea *outputbytes; > int len; > > pq_sendbyte(out, LOGICALREP_COLUMN_BINARY); > outputbytes = OidSendFunctionCall(typclass->typsend, values[i]); > len = VARSIZE(outputbytes) - VARHDRSZ; > pq_sendint(out, len, 4); /* length */ > pq_sendbytes(out, VARDATA(outputbytes), len); /* data */ > pfree(outputbytes); > } > else > { > pq_sendbyte(out, LOGICALREP_COLUMN_TEXT); > outputstr = OidOutputFunctionCall(typclass->typoutput, values[i]); > pq_sendcountedtext(out, outputstr, strlen(outputstr), false); > pfree(outputstr); > } > > Attached is a samll patch to fix it.
+1. Binary mode uses block level variable outputbytes, so making outputstr block level is fine IMO. Patch basically looks good to me, but it doesn't apply on my system. Looks like it's not created with git commit. Please create the patch with git commit command. git apply /mnt/hgfs/Shared/narrow-the-scope-of-the-variable-in-logicalrep_write_tuple.patch error: corrupt patch at line 10 With Regards, Bharath Rupireddy. EnterpriseDB: http://www.enterprisedb.com