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

From: Andrew Dunstan <andrew(at)dunslane(dot)net>
To: Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, 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 13:52:01
Message-ID: 16539664-c24c-df89-e44c-8f4219a31a1a@dunslane.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


On 11/13/21 00:40, Thomas Munro wrote:
> 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.
>
>

And it's documented at
<https://www.postgresql.org/docs/current/datatype-character.html>:

The characters that can be stored in any of these data types are
determined by the database character set, which is selected when the
database is created. Regardless of the specific character set, the
character with code zero (sometimes called NUL) cannot be stored.

cheers

andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Daniel Westermann 2021-11-13 13:53:58 Re: support for MERGE
Previous Message Euler Taveira 2021-11-13 13:46:07 Re: Logical Replication - improve error message while adding tables to the publication in check_publication_add_relation