| SELECT getdatabaseencoding() <> 'UTF8' AS skip_test \gset |
| \if :skip_test |
| \quit |
| \endif |
| SELECT U&'\0061\0308bc' <> U&'\00E4bc' COLLATE "C" AS sanity_check; |
| sanity_check |
| -------------- |
| t |
| (1 row) |
| |
| SELECT normalize(''); |
| normalize |
| ----------- |
| |
| (1 row) |
| |
| SELECT normalize(U&'\0061\0308\24D1c') = U&'\00E4\24D1c' COLLATE "C" AS test_default; |
| test_default |
| -------------- |
| t |
| (1 row) |
| |
| SELECT normalize(U&'\0061\0308\24D1c', NFC) = U&'\00E4\24D1c' COLLATE "C" AS test_nfc; |
| test_nfc |
| ---------- |
| t |
| (1 row) |
| |
| SELECT normalize(U&'\00E4bc', NFC) = U&'\00E4bc' COLLATE "C" AS test_nfc_idem; |
| test_nfc_idem |
| --------------- |
| t |
| (1 row) |
| |
| SELECT normalize(U&'\00E4\24D1c', NFD) = U&'\0061\0308\24D1c' COLLATE "C" AS test_nfd; |
| test_nfd |
| ---------- |
| t |
| (1 row) |
| |
| SELECT normalize(U&'\0061\0308\24D1c', NFKC) = U&'\00E4bc' COLLATE "C" AS test_nfkc; |
| test_nfkc |
| ----------- |
| t |
| (1 row) |
| |
| SELECT normalize(U&'\00E4\24D1c', NFKD) = U&'\0061\0308bc' COLLATE "C" AS test_nfkd; |
| test_nfkd |
| ----------- |
| t |
| (1 row) |
| |
| SELECT "normalize"('abc', 'def'); -- run-time error |
| ERROR: invalid normalization form: def |
| SELECT U&'\00E4\24D1c' IS NORMALIZED AS test_default; |
| test_default |
| -------------- |
| t |
| (1 row) |
| |
| SELECT U&'\00E4\24D1c' IS NFC NORMALIZED AS test_nfc; |
| test_nfc |
| ---------- |
| t |
| (1 row) |
| |
| SELECT num, val, |
| val IS NFC NORMALIZED AS NFC, |
| val IS NFD NORMALIZED AS NFD, |
| val IS NFKC NORMALIZED AS NFKC, |
| val IS NFKD NORMALIZED AS NFKD |
| FROM |
| (VALUES (1, U&'\00E4bc'), |
| (2, U&'\0061\0308bc'), |
| (3, U&'\00E4\24D1c'), |
| (4, U&'\0061\0308\24D1c'), |
| (5, '')) vals (num, val) |
| ORDER BY num; |
| num | val | nfc | nfd | nfkc | nfkd |
| -----+-----+-----+-----+------+------ |
| 1 | äbc | t | f | t | f |
| 2 | äbc | f | t | f | t |
| 3 | äⓑc | t | f | f | f |
| 4 | äⓑc | f | t | f | f |
| 5 | | t | t | t | t |
| (5 rows) |
| |
| SELECT is_normalized('abc', 'def'); -- run-time error |
| ERROR: invalid normalization form: def |