Re: Patch queue

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Joe Conway <mail(at)joeconway(dot)com>
Cc: PostgreSQL-development <pgsql-hackers(at)postgreSQL(dot)org>
Subject: Re: Patch queue
Date: 2003-11-30 15:49:29
Message-ID: 200311301549.hAUFnTj26685@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


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(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2003-11-30 16:08:43 Re: Patch queue
Previous Message Peter Eisentraut 2003-11-30 13:55:34 Re: -fpic vs. -fPIC