Re: Invalid Unicode escape value at or near "\u0000"

From: Thomas Munro <thomas(dot)munro(at)gmail(dot)com>
To: Japin Li <japinli(at)hotmail(dot)com>
Cc: "pgsql-hackers(at)lists(dot)postgresql(dot)org" <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Invalid Unicode escape value at or near "\u0000"
Date: 2021-11-13 05:40:41
Message-ID: CA+hUKGLGU_wUWbfs3G2RXDmo5F0+fC4RX3c+SfpADV3+K+Q6OQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sat, Nov 13, 2021 at 4:32 PM Japin Li <japinli(at)hotmail(dot)com> wrote:
> When I try to insert an Unicode "\u0000", there is an error $subject.
>
> postgres=# CREATE TABLE tbl (s varchar(10));
> CREATE TABLE
> postgres=# INSERT INTO tbl VALUES (E'\u0000');
> ERROR: invalid Unicode escape value at or near "\u0000"
> LINE 1: INSERT INTO tbl VALUES (E'\u0000');
> ^
>
> "\u0000" is valid unicode [1], why not we cannot insert it?

Yes, it is a valid codepoint, but unfortunately PostgreSQL can't
support it because it sometimes deals in null terminated string, even
though internally it does track string data and length separately. We
have to do that to use libc facilities like strcoll_r(), and probably
many other things.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message vignesh C 2021-11-13 07:19:59 Re: Identify missing publications from publisher while create/alter subscription.
Previous Message Amit Kapila 2021-11-13 05:10:30 Re: Parallel vacuum workers prevent the oldest xmin from advancing