pá 2. 4. 2021 v 11:37 odesílatel Laurenz Albe <laurenz.a...@cybertec.at> napsal:
> On Fri, 2021-04-02 at 10:45 +0200, Pavel Stehule wrote: > > I am checked an query from > https://www.depesz.com/2021/04/01/waiting-for-postgresql-14-add-unistr-function/ > article. > > > > postgres=# SELECT U&'\+01F603'; > > ┌──────────┐ > > │ ?column? │ > > ╞══════════╡ > > │ 😃 │ > > └──────────┘ > > (1 row) > > > > > > The result is not correct. Emoji has width 2 chars, but psql calculates > with just one char. > > How about this: > > diff --git a/src/common/wchar.c b/src/common/wchar.c > index 6e7d731e02..e2d0d9691c 100644 > --- a/src/common/wchar.c > +++ b/src/common/wchar.c > @@ -673,7 +673,8 @@ ucs_wcwidth(pg_wchar ucs) > (ucs >= 0xfe30 && ucs <= 0xfe6f) || /* CJK > Compatibility Forms */ > (ucs >= 0xff00 && ucs <= 0xff5f) || /* Fullwidth Forms > */ > (ucs >= 0xffe0 && ucs <= 0xffe6) || > - (ucs >= 0x20000 && ucs <= 0x2ffff))); > + (ucs >= 0x20000 && ucs <= 0x2ffff) || > + (ucs >= 0x1f300 && ucs <= 0x1faff))); /* symbols and > emojis */ > } > > /* > > This is guesswork based on the unicode entries that look like symbols. > it helps with this patch, the formatting is correct Pavel > > Yours, > Laurenz Albe > >