uuid.out 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. -- regression test for the uuid datatype
  2. -- creating test tables
  3. CREATE TABLE guid1
  4. (
  5. guid_field UUID,
  6. text_field TEXT DEFAULT(now())
  7. );
  8. CREATE TABLE guid2
  9. (
  10. guid_field UUID,
  11. text_field TEXT DEFAULT(now())
  12. );
  13. -- inserting invalid data tests
  14. -- too long
  15. INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-1111-111111111111F');
  16. ERROR: invalid input syntax for type uuid: "11111111-1111-1111-1111-111111111111F"
  17. LINE 1: INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-111...
  18. ^
  19. -- too short
  20. INSERT INTO guid1(guid_field) VALUES('{11111111-1111-1111-1111-11111111111}');
  21. ERROR: invalid input syntax for type uuid: "{11111111-1111-1111-1111-11111111111}"
  22. LINE 1: INSERT INTO guid1(guid_field) VALUES('{11111111-1111-1111-11...
  23. ^
  24. -- valid data but invalid format
  25. INSERT INTO guid1(guid_field) VALUES('111-11111-1111-1111-1111-111111111111');
  26. ERROR: invalid input syntax for type uuid: "111-11111-1111-1111-1111-111111111111"
  27. LINE 1: INSERT INTO guid1(guid_field) VALUES('111-11111-1111-1111-11...
  28. ^
  29. INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-2222-222222222222 ');
  30. ERROR: invalid input syntax for type uuid: "{22222222-2222-2222-2222-222222222222 "
  31. LINE 1: INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-22...
  32. ^
  33. -- invalid data
  34. INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-G111-111111111111');
  35. ERROR: invalid input syntax for type uuid: "11111111-1111-1111-G111-111111111111"
  36. LINE 1: INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-G11...
  37. ^
  38. INSERT INTO guid1(guid_field) VALUES('11+11111-1111-1111-1111-111111111111');
  39. ERROR: invalid input syntax for type uuid: "11+11111-1111-1111-1111-111111111111"
  40. LINE 1: INSERT INTO guid1(guid_field) VALUES('11+11111-1111-1111-111...
  41. ^
  42. --inserting three input formats
  43. INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-1111-111111111111');
  44. INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-2222-222222222222}');
  45. INSERT INTO guid1(guid_field) VALUES('3f3e3c3b3a3039383736353433a2313e');
  46. -- retrieving the inserted data
  47. SELECT guid_field FROM guid1;
  48. guid_field
  49. --------------------------------------
  50. 11111111-1111-1111-1111-111111111111
  51. 22222222-2222-2222-2222-222222222222
  52. 3f3e3c3b-3a30-3938-3736-353433a2313e
  53. (3 rows)
  54. -- ordering test
  55. SELECT guid_field FROM guid1 ORDER BY guid_field ASC;
  56. guid_field
  57. --------------------------------------
  58. 11111111-1111-1111-1111-111111111111
  59. 22222222-2222-2222-2222-222222222222
  60. 3f3e3c3b-3a30-3938-3736-353433a2313e
  61. (3 rows)
  62. SELECT guid_field FROM guid1 ORDER BY guid_field DESC;
  63. guid_field
  64. --------------------------------------
  65. 3f3e3c3b-3a30-3938-3736-353433a2313e
  66. 22222222-2222-2222-2222-222222222222
  67. 11111111-1111-1111-1111-111111111111
  68. (3 rows)
  69. -- = operator test
  70. SELECT COUNT(*) FROM guid1 WHERE guid_field = '3f3e3c3b-3a30-3938-3736-353433a2313e';
  71. count
  72. -------
  73. 1
  74. (1 row)
  75. -- <> operator test
  76. SELECT COUNT(*) FROM guid1 WHERE guid_field <> '11111111111111111111111111111111';
  77. count
  78. -------
  79. 2
  80. (1 row)
  81. -- < operator test
  82. SELECT COUNT(*) FROM guid1 WHERE guid_field < '22222222-2222-2222-2222-222222222222';
  83. count
  84. -------
  85. 1
  86. (1 row)
  87. -- <= operator test
  88. SELECT COUNT(*) FROM guid1 WHERE guid_field <= '22222222-2222-2222-2222-222222222222';
  89. count
  90. -------
  91. 2
  92. (1 row)
  93. -- > operator test
  94. SELECT COUNT(*) FROM guid1 WHERE guid_field > '22222222-2222-2222-2222-222222222222';
  95. count
  96. -------
  97. 1
  98. (1 row)
  99. -- >= operator test
  100. SELECT COUNT(*) FROM guid1 WHERE guid_field >= '22222222-2222-2222-2222-222222222222';
  101. count
  102. -------
  103. 2
  104. (1 row)
  105. -- btree and hash index creation test
  106. CREATE INDEX guid1_btree ON guid1 USING BTREE (guid_field);
  107. CREATE INDEX guid1_hash ON guid1 USING HASH (guid_field);
  108. -- populating the test tables with additional records
  109. INSERT INTO guid1(guid_field) VALUES('44444444-4444-4444-4444-444444444444');
  110. INSERT INTO guid2(guid_field) VALUES('11111111-1111-1111-1111-111111111111');
  111. INSERT INTO guid2(guid_field) VALUES('{22222222-2222-2222-2222-222222222222}');
  112. INSERT INTO guid2(guid_field) VALUES('3f3e3c3b3a3039383736353433a2313e');
  113. SELECT COUNT(*) FROM guid1 g1 LEFT JOIN guid2 g2 ON g1.guid_field = g2.guid_field WHERE g2.guid_field IS NULL;
  114. count
  115. -------
  116. 1
  117. (1 row)
  118. INSERT INTO guid1 (guid_field) VALUES (gen_random_uuid());
  119. INSERT INTO guid1 (guid_field) VALUES (gen_random_uuid());