unicode.sql 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. SELECT getdatabaseencoding() <> 'UTF8' AS skip_test \gset
  2. \if :skip_test
  3. \quit
  4. \endif
  5. SELECT U&'\0061\0308bc' <> U&'\00E4bc' COLLATE "C" AS sanity_check;
  6. SELECT normalize('');
  7. SELECT normalize(U&'\0061\0308\24D1c') = U&'\00E4\24D1c' COLLATE "C" AS test_default;
  8. SELECT normalize(U&'\0061\0308\24D1c', NFC) = U&'\00E4\24D1c' COLLATE "C" AS test_nfc;
  9. SELECT normalize(U&'\00E4bc', NFC) = U&'\00E4bc' COLLATE "C" AS test_nfc_idem;
  10. SELECT normalize(U&'\00E4\24D1c', NFD) = U&'\0061\0308\24D1c' COLLATE "C" AS test_nfd;
  11. SELECT normalize(U&'\0061\0308\24D1c', NFKC) = U&'\00E4bc' COLLATE "C" AS test_nfkc;
  12. SELECT normalize(U&'\00E4\24D1c', NFKD) = U&'\0061\0308bc' COLLATE "C" AS test_nfkd;
  13. SELECT "normalize"('abc', 'def'); -- run-time error
  14. SELECT U&'\00E4\24D1c' IS NORMALIZED AS test_default;
  15. SELECT U&'\00E4\24D1c' IS NFC NORMALIZED AS test_nfc;
  16. SELECT num, val,
  17. val IS NFC NORMALIZED AS NFC,
  18. val IS NFD NORMALIZED AS NFD,
  19. val IS NFKC NORMALIZED AS NFKC,
  20. val IS NFKD NORMALIZED AS NFKD
  21. FROM
  22. (VALUES (1, U&'\00E4bc'),
  23. (2, U&'\0061\0308bc'),
  24. (3, U&'\00E4\24D1c'),
  25. (4, U&'\0061\0308\24D1c'),
  26. (5, '')) vals (num, val)
  27. ORDER BY num;
  28. SELECT is_normalized('abc', 'def'); -- run-time error