From: | 'Bruce Momjian' <bruce(at)momjian(dot)us> |
---|---|
To: | André Hänsel <andre(at)webkr(dot)de> |
Cc: | orchideric(at)yahoo(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org |
Subject: | Re: BUG #15373: null / utf-8 |
Date: | 2018-09-08 20:36:19 |
Message-ID: | 20180908203619.GA8672@momjian.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
On Sat, Sep 8, 2018 at 09:43:18PM +0200, André Hänsel wrote:
> Bruce Momjian wrote:
>
> > On Sat, Sep 8, 2018 at 05:24:17PM +0000, PG Bug reporting form wrote:
> >> doesn’t support converting NULL bytes to UTF-8 and therefore returns an
> >> error
>
> > You need to encode binary values containing nulls as bytea strings.
>
> Actually this reminds me to log a documentation bug, or rather improvement.
>
> It is already slightly confusing that Postgres doesn't support null bytes
> in text columns at all and in bytea columns cannot take them in as a normal
> string literal. I'm assuming this is traditional and difficult to change.
>
> Now, there are two formats in which bytea column content can be specified,
> the "hex" and the deprecated "escape" format.
>
> This "escape" format is called that way because it allows escape sequences
> which are un-escaped before the data is written to the column. This step is
> comparable to the parsing of JSON for jsonb columns or the parsing of array
> syntax for any array type.
>
> However, during the parsing of an SQL there is a second, completely
> different, un-escaping step going on, the un-escaping of C-style escapes in
> string literals starting with an "E", *if* you start the string literal
> with an "E".
>
> For some reason the example given in the documentation for the "hex"
> format uses such an "escape string literal":
>
> SELECT E'\\xDEADBEEF';
>
> I found this very confusing. Can this example be changed to a normal
> string literal, like this?
>
> SELECT '\xDEADBEEF';
You know, I 100% agree with you. We used the E'' syntax so we would
produce the same results whether standard_conforming_strings was true or
false. However, we changed the standard_conforming_strings default to
true in Postgres 9.1 on 2011-09-12, and that release has been
end-of-life for a year.
I think it is time to clarify our documentation examples by assuming
that standard_conforming_strings is true. I will work on a patch.
Thanks.
--
Bruce Momjian <bruce(at)momjian(dot)us> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ As you are, so once was I. As I am, so you will be. +
+ Ancient Roman grave inscription +
From | Date | Subject | |
---|---|---|---|
Next Message | Andrew Gierth | 2018-09-08 22:25:25 | Re: BUG #15367: Crash in pg_fe_scram_free when using foreign tables |
Previous Message | Tom Lane | 2018-09-08 20:17:39 | Re: BUG #15367: Crash in pg_fe_scram_free when using foreign tables |