I have loaded the patch queue with all patches that were in my main
mailbox:

	http://momjian.postgresql.org/cgi-bin/pgpatches

I still have to go through the saved patches in:

	http:/momjian.postgresql.org/cgi-bin/pgpatches2

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Sun, 30 Nov 2003 01:12:54 -0500 (EST)
Bruce Momjian <pgman@candle.pha.pa.us>
Patch queue
Bruce Momjian wrote:

> I have loaded the patch queue with all patches that were in my main
> mailbox:
> 
> 	http://momjian.postgresql.org/cgi-bin/pgpatches

I posted an alternative to this one
http://candle.pha.pa.us/mhonarc/patches/msg00004.html
for comment last night (however I can't find it in the archives -- I'll 
paste it below). I was going to commit it tomorrow if I don't hear any 
objections.

Joe


8<---------------------------------------------------------------------
Tom Lane wrote:
 > I was actually thinking it'd be best to hexify everything outside the
 > range 0x20 to 0x7e.
 >

Here's a proposed fix. Any objections?

I'm thinking this applies to 7.4 and 7.3 stable branches as well as cvs 
head -- correct?

Joe



Index: doc/src/sgml/datatype.sgml
===================================================================
RCS file: /cvsroot/pgsql-server/doc/src/sgml/datatype.sgml,v
retrieving revision 1.131
diff -c -r1.131 datatype.sgml
*** doc/src/sgml/datatype.sgml	16 Nov 2003 20:29:16 -0000	1.131
--- doc/src/sgml/datatype.sgml	29 Nov 2003 05:28:38 -0000
***************
*** 1076,1084 ****
       strings are distinguished from characters strings by two
       characteristics: First, binary strings specifically allow storing
       octets of value zero and other <quote>non-printable</quote>
!     octets.  Second, operations on binary strings process the actual
!     bytes, whereas the encoding and processing of character strings
!     depends on locale settings.
      </para>

      <para>
--- 1076,1085 ----
       strings are distinguished from characters strings by two
       characteristics: First, binary strings specifically allow storing
       octets of value zero and other <quote>non-printable</quote>
!     octets (defined as octets outside the range 32 to 126).
!     Second, operations on binary strings process the actual bytes,
!     whereas the encoding and processing of character strings depends
!     on locale settings.
      </para>

      <para>
***************
*** 1131,1144 ****
          <entry><literal>\\</literal></entry>
         </row>

        </tbody>
       </tgroup>
      </table>

      <para>
!     Note that the result in each of the examples in <xref 
linkend="datatype-binary-sqlesc"> was exactly one
!     octet in length, even though the output representation of the zero
!     octet and backslash are more than one character.
      </para>

      <para>
--- 1132,1156 ----
          <entry><literal>\\</literal></entry>
         </row>

+       <row>
+        <entry>0 to 31 and 127 to 255</entry>
+        <entry><quote>non-printable</quote> octets</entry>
+        <entry><literal>'\\<replaceable>xxx'</></literal> (octal 
value)</entry>
+        <entry><literal>SELECT '\\001'::bytea;</literal></entry>
+        <entry><literal>\001</literal></entry>
+       </row>
+
        </tbody>
       </tgroup>
      </table>

      <para>
!     The requirement to escape <quote>non-printable</quote> octets actually
!     varies depending on locale settings. In some instances you can get 
away
!     with leaving them unescaped. Note that the result in each of the 
examples
!     in <xref linkend="datatype-binary-sqlesc"> was exactly one octet in
!     length, even though the output representation of the zero octet and
!     backslash are more than one character.
      </para>

      <para>
***************
*** 1206,1212 ****
         <row>
          <entry>32 to 126</entry>
          <entry><quote>printable</quote> octets</entry>
!        <entry>ASCII representation</entry>
          <entry><literal>SELECT '\\176'::bytea;</literal></entry>
          <entry><literal>~</literal></entry>
         </row>
--- 1218,1224 ----
         <row>
          <entry>32 to 126</entry>
          <entry><quote>printable</quote> octets</entry>
!        <entry>client character set representation</entry>
          <entry><literal>SELECT '\\176'::bytea;</literal></entry>
          <entry><literal>~</literal></entry>
         </row>
Index: src/backend/utils/adt/varlena.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/utils/adt/varlena.c,v
retrieving revision 1.106
diff -c -r1.106 varlena.c
*** src/backend/utils/adt/varlena.c	25 Sep 2003 06:58:05 -0000	1.106
--- src/backend/utils/adt/varlena.c	29 Nov 2003 05:28:40 -0000
***************
*** 186,195 ****
   	{
   		if (*vp == '\\')
   			len += 2;
! 		else if (isprint((unsigned char) *vp))
! 			len++;
! 		else
   			len += 4;
   	}
   	rp = result = (char *) palloc(len);
   	vp = VARDATA(vlena);
--- 186,195 ----
   	{
   		if (*vp == '\\')
   			len += 2;
! 		else if ((unsigned char) *vp < 0x20 || (unsigned char) *vp > 0x7e)
   			len += 4;
+ 		else
+ 			len++;
   	}
   	rp = result = (char *) palloc(len);
   	vp = VARDATA(vlena);
***************
*** 200,208 ****
   			*rp++ = '\\';
   			*rp++ = '\\';
   		}
! 		else if (isprint((unsigned char) *vp))
! 			*rp++ = *vp;
! 		else
   		{
   			val = *vp;
   			rp[0] = '\\';
--- 200,206 ----
   			*rp++ = '\\';
   			*rp++ = '\\';
   		}
! 		else if ((unsigned char) *vp < 0x20 || (unsigned char) *vp > 0x7e)
   		{
   			val = *vp;
   			rp[0] = '\\';
***************
*** 213,218 ****
--- 211,218 ----
   			rp[1] = DIG(val & 03);
   			rp += 4;
   		}
+ 		else
+ 			*rp++ = *vp;
   	}
   	*rp = '\0';
   	PG_RETURN_CSTRING(result);
Index: src/interfaces/libpq/fe-exec.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/interfaces/libpq/fe-exec.c,v
retrieving revision 1.153
diff -c -r1.153 fe-exec.c
*** src/interfaces/libpq/fe-exec.c	31 Oct 2003 17:43:10 -0000	1.153
--- src/interfaces/libpq/fe-exec.c	29 Nov 2003 05:28:45 -0000
***************
*** 2261,2267 ****
    *		'\0' == ASCII  0 == \\000
    *		'\'' == ASCII 39 == \'
    *		'\\' == ASCII 92 == \\\\
!  *		anything >= 0x80 ---> \\ooo (where ooo is an octal expression)
    */
   unsigned char *
   PQescapeBytea(const unsigned char *bintext, size_t binlen, size_t 
*bytealen)
--- 2261,2268 ----
    *		'\0' == ASCII  0 == \\000
    *		'\'' == ASCII 39 == \'
    *		'\\' == ASCII 92 == \\\\
!  *		anything < 0x20, or > 0x7e ---> \\ooo
!  *                                      (where ooo is an octal expression)
    */
   unsigned char *
   PQescapeBytea(const unsigned char *bintext, size_t binlen, size_t 
*bytealen)
***************
*** 2280,2286 ****
   	vp = bintext;
   	for (i = binlen; i > 0; i--, vp++)
   	{
! 		if (*vp == 0 || *vp >= 0x80)
   			len += 5;			/* '5' is for '\\ooo' */
   		else if (*vp == '\'')
   			len += 2;
--- 2281,2287 ----
   	vp = bintext;
   	for (i = binlen; i > 0; i--, vp++)
   	{
! 		if (*vp < 0x20 || *vp > 0x7e)
   			len += 5;			/* '5' is for '\\ooo' */
   		else if (*vp == '\'')
   			len += 2;
***************
*** 2299,2305 ****

   	for (i = binlen; i > 0; i--, vp++)
   	{
! 		if (*vp == 0 || *vp >= 0x80)
   		{
   			(void) sprintf(rp, "\\\\%03o", *vp);
   			rp += 5;
--- 2300,2306 ----

   	for (i = binlen; i > 0; i--, vp++)
   	{
! 		if (*vp < 0x20 || *vp > 0x7e)
   		{
   			(void) sprintf(rp, "\\\\%03o", *vp);
   			rp += 5;



Sat, 29 Nov 2003 22:45:22 -0800
Joe Conway <mail@joeconway.com>
Re: Patch queue

Strange --- I have not seen it either.

---------------------------------------------------------------------------

Joe Conway wrote:
> Bruce Momjian wrote:
> 
> > I have loaded the patch queue with all patches that were in my main
> > mailbox:
> > 
> > 	http://momjian.postgresql.org/cgi-bin/pgpatches
> 
> I posted an alternative to this one
> http://candle.pha.pa.us/mhonarc/patches/msg00004.html
> for comment last night (however I can't find it in the archives -- I'll 
> paste it below). I was going to commit it tomorrow if I don't hear any 
> objections.
> 
> Joe
> 
> 
> 8<---------------------------------------------------------------------
> Tom Lane wrote:
>  > I was actually thinking it'd be best to hexify everything outside the
>  > range 0x20 to 0x7e.
>  >
> 
> Here's a proposed fix. Any objections?
> 
> I'm thinking this applies to 7.4 and 7.3 stable branches as well as cvs 
> head -- correct?
> 
> Joe
> 
> 
> 
> Index: doc/src/sgml/datatype.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql-server/doc/src/sgml/datatype.sgml,v
> retrieving revision 1.131
> diff -c -r1.131 datatype.sgml
> *** doc/src/sgml/datatype.sgml	16 Nov 2003 20:29:16 -0000	1.131
> --- doc/src/sgml/datatype.sgml	29 Nov 2003 05:28:38 -0000
> ***************
> *** 1076,1084 ****
>        strings are distinguished from characters strings by two
>        characteristics: First, binary strings specifically allow storing
>        octets of value zero and other <quote>non-printable</quote>
> !     octets.  Second, operations on binary strings process the actual
> !     bytes, whereas the encoding and processing of character strings
> !     depends on locale settings.
>       </para>
> 
>       <para>
> --- 1076,1085 ----
>        strings are distinguished from characters strings by two
>        characteristics: First, binary strings specifically allow storing
>        octets of value zero and other <quote>non-printable</quote>
> !     octets (defined as octets outside the range 32 to 126).
> !     Second, operations on binary strings process the actual bytes,
> !     whereas the encoding and processing of character strings depends
> !     on locale settings.
>       </para>
> 
>       <para>
> ***************
> *** 1131,1144 ****
>           <entry><literal>\\</literal></entry>
>          </row>
> 
>         </tbody>
>        </tgroup>
>       </table>
> 
>       <para>
> !     Note that the result in each of the examples in <xref 
> linkend="datatype-binary-sqlesc"> was exactly one
> !     octet in length, even though the output representation of the zero
> !     octet and backslash are more than one character.
>       </para>
> 
>       <para>
> --- 1132,1156 ----
>           <entry><literal>\\</literal></entry>
>          </row>
> 
> +       <row>
> +        <entry>0 to 31 and 127 to 255</entry>
> +        <entry><quote>non-printable</quote> octets</entry>
> +        <entry><literal>'\\<replaceable>xxx'</></literal> (octal 
> value)</entry>
> +        <entry><literal>SELECT '\\001'::bytea;</literal></entry>
> +        <entry><literal>\001</literal></entry>
> +       </row>
> +
>         </tbody>
>        </tgroup>
>       </table>
> 
>       <para>
> !     The requirement to escape <quote>non-printable</quote> octets actually
> !     varies depending on locale settings. In some instances you can get 
> away
> !     with leaving them unescaped. Note that the result in each of the 
> examples
> !     in <xref linkend="datatype-binary-sqlesc"> was exactly one octet in
> !     length, even though the output representation of the zero octet and
> !     backslash are more than one character.
>       </para>
> 
>       <para>
> ***************
> *** 1206,1212 ****
>          <row>
>           <entry>32 to 126</entry>
>           <entry><quote>printable</quote> octets</entry>
> !        <entry>ASCII representation</entry>
>           <entry><literal>SELECT '\\176'::bytea;</literal></entry>
>           <entry><literal>~</literal></entry>
>          </row>
> --- 1218,1224 ----
>          <row>
>           <entry>32 to 126</entry>
>           <entry><quote>printable</quote> octets</entry>
> !        <entry>client character set representation</entry>
>           <entry><literal>SELECT '\\176'::bytea;</literal></entry>
>           <entry><literal>~</literal></entry>
>          </row>
> Index: src/backend/utils/adt/varlena.c
> ===================================================================
> RCS file: /cvsroot/pgsql-server/src/backend/utils/adt/varlena.c,v
> retrieving revision 1.106
> diff -c -r1.106 varlena.c
> *** src/backend/utils/adt/varlena.c	25 Sep 2003 06:58:05 -0000	1.106
> --- src/backend/utils/adt/varlena.c	29 Nov 2003 05:28:40 -0000
> ***************
> *** 186,195 ****
>    	{
>    		if (*vp == '\\')
>    			len += 2;
> ! 		else if (isprint((unsigned char) *vp))
> ! 			len++;
> ! 		else
>    			len += 4;
>    	}
>    	rp = result = (char *) palloc(len);
>    	vp = VARDATA(vlena);
> --- 186,195 ----
>    	{
>    		if (*vp == '\\')
>    			len += 2;
> ! 		else if ((unsigned char) *vp < 0x20 || (unsigned char) *vp > 0x7e)
>    			len += 4;
> + 		else
> + 			len++;
>    	}
>    	rp = result = (char *) palloc(len);
>    	vp = VARDATA(vlena);
> ***************
> *** 200,208 ****
>    			*rp++ = '\\';
>    			*rp++ = '\\';
>    		}
> ! 		else if (isprint((unsigned char) *vp))
> ! 			*rp++ = *vp;
> ! 		else
>    		{
>    			val = *vp;
>    			rp[0] = '\\';
> --- 200,206 ----
>    			*rp++ = '\\';
>    			*rp++ = '\\';
>    		}
> ! 		else if ((unsigned char) *vp < 0x20 || (unsigned char) *vp > 0x7e)
>    		{
>    			val = *vp;
>    			rp[0] = '\\';
> ***************
> *** 213,218 ****
> --- 211,218 ----
>    			rp[1] = DIG(val & 03);
>    			rp += 4;
>    		}
> + 		else
> + 			*rp++ = *vp;
>    	}
>    	*rp = '\0';
>    	PG_RETURN_CSTRING(result);
> Index: src/interfaces/libpq/fe-exec.c
> ===================================================================
> RCS file: /cvsroot/pgsql-server/src/interfaces/libpq/fe-exec.c,v
> retrieving revision 1.153
> diff -c -r1.153 fe-exec.c
> *** src/interfaces/libpq/fe-exec.c	31 Oct 2003 17:43:10 -0000	1.153
> --- src/interfaces/libpq/fe-exec.c	29 Nov 2003 05:28:45 -0000
> ***************
> *** 2261,2267 ****
>     *		'\0' == ASCII  0 == \\000
>     *		'\'' == ASCII 39 == \'
>     *		'\\' == ASCII 92 == \\\\
> !  *		anything >= 0x80 ---> \\ooo (where ooo is an octal expression)
>     */
>    unsigned char *
>    PQescapeBytea(const unsigned char *bintext, size_t binlen, size_t 
> *bytealen)
> --- 2261,2268 ----
>     *		'\0' == ASCII  0 == \\000
>     *		'\'' == ASCII 39 == \'
>     *		'\\' == ASCII 92 == \\\\
> !  *		anything < 0x20, or > 0x7e ---> \\ooo
> !  *                                      (where ooo is an octal expression)
>     */
>    unsigned char *
>    PQescapeBytea(const unsigned char *bintext, size_t binlen, size_t 
> *bytealen)
> ***************
> *** 2280,2286 ****
>    	vp = bintext;
>    	for (i = binlen; i > 0; i--, vp++)
>    	{
> ! 		if (*vp == 0 || *vp >= 0x80)
>    			len += 5;			/* '5' is for '\\ooo' */
>    		else if (*vp == '\'')
>    			len += 2;
> --- 2281,2287 ----
>    	vp = bintext;
>    	for (i = binlen; i > 0; i--, vp++)
>    	{
> ! 		if (*vp < 0x20 || *vp > 0x7e)
>    			len += 5;			/* '5' is for '\\ooo' */
>    		else if (*vp == '\'')
>    			len += 2;
> ***************
> *** 2299,2305 ****
> 
>    	for (i = binlen; i > 0; i--, vp++)
>    	{
> ! 		if (*vp == 0 || *vp >= 0x80)
>    		{
>    			(void) sprintf(rp, "\\\\%03o", *vp);
>    			rp += 5;
> --- 2300,2306 ----
> 
>    	for (i = binlen; i > 0; i--, vp++)
>    	{
> ! 		if (*vp < 0x20 || *vp > 0x7e)
>    		{
>    			(void) sprintf(rp, "\\\\%03o", *vp);
>    			rp += 5;
> 
> 

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Sun, 30 Nov 2003 10:49:29 -0500 (EST)
Bruce Momjian <pgman@candle.pha.pa.us>
Re: Patch queue

OK, I emailed him telling him you had a newer version and would email
him back once it is applied.

Basic patch application is:

	notify reviewers patch will be applied shortly
	make sure patch is easily retrievable by reviewers
	apply patch
	run tools/pgtest (checks compile, warnings, and regression)
	notify author that patch was applied, and thank him

---------------------------------------------------------------------------

Joe Conway wrote:
> Bruce Momjian wrote:
> 
> > I have loaded the patch queue with all patches that were in my main
> > mailbox:
> > 
> > 	http://momjian.postgresql.org/cgi-bin/pgpatches
> 
> I posted an alternative to this one
> http://candle.pha.pa.us/mhonarc/patches/msg00004.html
> for comment last night (however I can't find it in the archives -- I'll 
> paste it below). I was going to commit it tomorrow if I don't hear any 
> objections.
> 
> Joe
> 
> 
> 8<---------------------------------------------------------------------
> Tom Lane wrote:
>  > I was actually thinking it'd be best to hexify everything outside the
>  > range 0x20 to 0x7e.
>  >
> 
> Here's a proposed fix. Any objections?
> 
> I'm thinking this applies to 7.4 and 7.3 stable branches as well as cvs 
> head -- correct?
> 
> Joe
> 
> 
> 
> Index: doc/src/sgml/datatype.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql-server/doc/src/sgml/datatype.sgml,v
> retrieving revision 1.131
> diff -c -r1.131 datatype.sgml
> *** doc/src/sgml/datatype.sgml	16 Nov 2003 20:29:16 -0000	1.131
> --- doc/src/sgml/datatype.sgml	29 Nov 2003 05:28:38 -0000
> ***************
> *** 1076,1084 ****
>        strings are distinguished from characters strings by two
>        characteristics: First, binary strings specifically allow storing
>        octets of value zero and other <quote>non-printable</quote>
> !     octets.  Second, operations on binary strings process the actual
> !     bytes, whereas the encoding and processing of character strings
> !     depends on locale settings.
>       </para>
> 
>       <para>
> --- 1076,1085 ----
>        strings are distinguished from characters strings by two
>        characteristics: First, binary strings specifically allow storing
>        octets of value zero and other <quote>non-printable</quote>
> !     octets (defined as octets outside the range 32 to 126).
> !     Second, operations on binary strings process the actual bytes,
> !     whereas the encoding and processing of character strings depends
> !     on locale settings.
>       </para>
> 
>       <para>
> ***************
> *** 1131,1144 ****
>           <entry><literal>\\</literal></entry>
>          </row>
> 
>         </tbody>
>        </tgroup>
>       </table>
> 
>       <para>
> !     Note that the result in each of the examples in <xref 
> linkend="datatype-binary-sqlesc"> was exactly one
> !     octet in length, even though the output representation of the zero
> !     octet and backslash are more than one character.
>       </para>
> 
>       <para>
> --- 1132,1156 ----
>           <entry><literal>\\</literal></entry>
>          </row>
> 
> +       <row>
> +        <entry>0 to 31 and 127 to 255</entry>
> +        <entry><quote>non-printable</quote> octets</entry>
> +        <entry><literal>'\\<replaceable>xxx'</></literal> (octal 
> value)</entry>
> +        <entry><literal>SELECT '\\001'::bytea;</literal></entry>
> +        <entry><literal>\001</literal></entry>
> +       </row>
> +
>         </tbody>
>        </tgroup>
>       </table>
> 
>       <para>
> !     The requirement to escape <quote>non-printable</quote> octets actually
> !     varies depending on locale settings. In some instances you can get 
> away
> !     with leaving them unescaped. Note that the result in each of the 
> examples
> !     in <xref linkend="datatype-binary-sqlesc"> was exactly one octet in
> !     length, even though the output representation of the zero octet and
> !     backslash are more than one character.
>       </para>
> 
>       <para>
> ***************
> *** 1206,1212 ****
>          <row>
>           <entry>32 to 126</entry>
>           <entry><quote>printable</quote> octets</entry>
> !        <entry>ASCII representation</entry>
>           <entry><literal>SELECT '\\176'::bytea;</literal></entry>
>           <entry><literal>~</literal></entry>
>          </row>
> --- 1218,1224 ----
>          <row>
>           <entry>32 to 126</entry>
>           <entry><quote>printable</quote> octets</entry>
> !        <entry>client character set representation</entry>
>           <entry><literal>SELECT '\\176'::bytea;</literal></entry>
>           <entry><literal>~</literal></entry>
>          </row>
> Index: src/backend/utils/adt/varlena.c
> ===================================================================
> RCS file: /cvsroot/pgsql-server/src/backend/utils/adt/varlena.c,v
> retrieving revision 1.106
> diff -c -r1.106 varlena.c
> *** src/backend/utils/adt/varlena.c	25 Sep 2003 06:58:05 -0000	1.106
> --- src/backend/utils/adt/varlena.c	29 Nov 2003 05:28:40 -0000
> ***************
> *** 186,195 ****
>    	{
>    		if (*vp == '\\')
>    			len += 2;
> ! 		else if (isprint((unsigned char) *vp))
> ! 			len++;
> ! 		else
>    			len += 4;
>    	}
>    	rp = result = (char *) palloc(len);
>    	vp = VARDATA(vlena);
> --- 186,195 ----
>    	{
>    		if (*vp == '\\')
>    			len += 2;
> ! 		else if ((unsigned char) *vp < 0x20 || (unsigned char) *vp > 0x7e)
>    			len += 4;
> + 		else
> + 			len++;
>    	}
>    	rp = result = (char *) palloc(len);
>    	vp = VARDATA(vlena);
> ***************
> *** 200,208 ****
>    			*rp++ = '\\';
>    			*rp++ = '\\';
>    		}
> ! 		else if (isprint((unsigned char) *vp))
> ! 			*rp++ = *vp;
> ! 		else
>    		{
>    			val = *vp;
>    			rp[0] = '\\';
> --- 200,206 ----
>    			*rp++ = '\\';
>    			*rp++ = '\\';
>    		}
> ! 		else if ((unsigned char) *vp < 0x20 || (unsigned char) *vp > 0x7e)
>    		{
>    			val = *vp;
>    			rp[0] = '\\';
> ***************
> *** 213,218 ****
> --- 211,218 ----
>    			rp[1] = DIG(val & 03);
>    			rp += 4;
>    		}
> + 		else
> + 			*rp++ = *vp;
>    	}
>    	*rp = '\0';
>    	PG_RETURN_CSTRING(result);
> Index: src/interfaces/libpq/fe-exec.c
> ===================================================================
> RCS file: /cvsroot/pgsql-server/src/interfaces/libpq/fe-exec.c,v
> retrieving revision 1.153
> diff -c -r1.153 fe-exec.c
> *** src/interfaces/libpq/fe-exec.c	31 Oct 2003 17:43:10 -0000	1.153
> --- src/interfaces/libpq/fe-exec.c	29 Nov 2003 05:28:45 -0000
> ***************
> *** 2261,2267 ****
>     *		'\0' == ASCII  0 == \\000
>     *		'\'' == ASCII 39 == \'
>     *		'\\' == ASCII 92 == \\\\
> !  *		anything >= 0x80 ---> \\ooo (where ooo is an octal expression)
>     */
>    unsigned char *
>    PQescapeBytea(const unsigned char *bintext, size_t binlen, size_t 
> *bytealen)
> --- 2261,2268 ----
>     *		'\0' == ASCII  0 == \\000
>     *		'\'' == ASCII 39 == \'
>     *		'\\' == ASCII 92 == \\\\
> !  *		anything < 0x20, or > 0x7e ---> \\ooo
> !  *                                      (where ooo is an octal expression)
>     */
>    unsigned char *
>    PQescapeBytea(const unsigned char *bintext, size_t binlen, size_t 
> *bytealen)
> ***************
> *** 2280,2286 ****
>    	vp = bintext;
>    	for (i = binlen; i > 0; i--, vp++)
>    	{
> ! 		if (*vp == 0 || *vp >= 0x80)
>    			len += 5;			/* '5' is for '\\ooo' */
>    		else if (*vp == '\'')
>    			len += 2;
> --- 2281,2287 ----
>    	vp = bintext;
>    	for (i = binlen; i > 0; i--, vp++)
>    	{
> ! 		if (*vp < 0x20 || *vp > 0x7e)
>    			len += 5;			/* '5' is for '\\ooo' */
>    		else if (*vp == '\'')
>    			len += 2;
> ***************
> *** 2299,2305 ****
> 
>    	for (i = binlen; i > 0; i--, vp++)
>    	{
> ! 		if (*vp == 0 || *vp >= 0x80)
>    		{
>    			(void) sprintf(rp, "\\\\%03o", *vp);
>    			rp += 5;
> --- 2300,2306 ----
> 
>    	for (i = binlen; i > 0; i--, vp++)
>    	{
> ! 		if (*vp < 0x20 || *vp > 0x7e)
>    		{
>    			(void) sprintf(rp, "\\\\%03o", *vp);
>    			rp += 5;
> 
> 

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Sun, 30 Nov 2003 11:08:43 -0500 (EST)
Bruce Momjian <pgman@candle.pha.pa.us>
Re: Patch queue
Joe Conway <mail@joeconway.com> writes:
> I posted an alternative to this one
> http://candle.pha.pa.us/mhonarc/patches/msg00004.html
> for comment last night (however I can't find it in the archives -- I'll 
> paste it below). I was going to commit it tomorrow if I don't hear any 
> objections.

Looks all right to me.

> I'm thinking this applies to 7.4 and 7.3 stable branches as well as cvs 
> head -- correct?

Yes.  Please commit to 7.3 branch before Tuesday noon so it gets into
7.3.5 (or if you can't make that, let me know and we'll work something
out).

			regards, tom lane

Sun, 30 Nov 2003 14:01:26 -0500
Tom Lane <tgl@sss.pgh.pa.us>
Re: Patch queue 
Tom Lane wrote:
> Yes.  Please commit to 7.3 branch before Tuesday noon so it gets into
> 7.3.5 (or if you can't make that, let me know and we'll work something
> out).

Done.

Joe



Sun, 30 Nov 2003 12:59:45 -0800
Joe Conway <mail@joeconway.com>
Re: Patch queue