# LogicTest: local local-opt local-parallel-stmts fakedist fakedist-opt fakedist-metadata

statement ok
CREATE TABLE u (token uuid PRIMARY KEY,
                token2 uuid,
                token3 uuid,
                UNIQUE INDEX i_token2 (token2))

statement ok
INSERT INTO u VALUES
  ('63616665-6630-3064-6465-616462656562', '{63616665-6630-3064-6465-616462656563}', b'kafef00ddeadbeed'),
  ('urn:uuid:63616665-6630-3064-6465-616462656564', '63616665-6630-3064-6465-616462656565'::uuid, b'kafef00ddeadbeee'),
  (b'cafef00ddeadbeef', '63616665-6630-3064-6465-616462656567', b'kafef00ddeadbeef')

query TTT
SELECT * FROM u ORDER BY token
----
63616665-6630-3064-6465-616462656562 63616665-6630-3064-6465-616462656563 6b616665-6630-3064-6465-616462656564
63616665-6630-3064-6465-616462656564 63616665-6630-3064-6465-616462656565 6b616665-6630-3064-6465-616462656565
63616665-6630-3064-6465-616462656566 63616665-6630-3064-6465-616462656567 6b616665-6630-3064-6465-616462656566

query TTT
SELECT * FROM u WHERE token < '63616665-6630-3064-6465-616462656564'::uuid
----
63616665-6630-3064-6465-616462656562 63616665-6630-3064-6465-616462656563 6b616665-6630-3064-6465-616462656564

query TTT
SELECT * FROM u WHERE token <= '63616665-6630-3064-6465-616462656564'::uuid ORDER BY token
----
63616665-6630-3064-6465-616462656562 63616665-6630-3064-6465-616462656563 6b616665-6630-3064-6465-616462656564
63616665-6630-3064-6465-616462656564 63616665-6630-3064-6465-616462656565 6b616665-6630-3064-6465-616462656565

statement error duplicate key value
INSERT INTO u VALUES ('63616665-6630-3064-6465-616462656566')

statement error duplicate key value
INSERT INTO u VALUES ('63616665-6630-3064-6465-616462656569', '63616665-6630-3064-6465-616462656565')

statement error UUID must be exactly 16 bytes long, got 15 bytes
INSERT INTO u VALUES (b'cafef00ddeadbee')

statement error UUID must be exactly 16 bytes long, got 17 bytes
INSERT INTO u VALUES (b'cafef00ddeadbeefs')

statement error uuid: incorrect UUID length
INSERT INTO u VALUES ('63616665-6630-3064-6465-61646265656')

statement error uuid: incorrect UUID length
INSERT INTO u VALUES ('63616665-6630-3064-6465-6164626565620')

statement error unsupported comparison operator: <uuid> = <bytes>
SELECT token FROM u WHERE token=b'cafef00ddeadbeef'::bytes

statement error unsupported comparison operator: <uuid> = <string>
SELECT token FROM u WHERE token='63616665-6630-3064-6465-616462656562'::string

statement ok
SELECT token FROM u WHERE token='63616665-6630-3064-6465-616462656562'::uuid

query T
SELECT token FROM u WHERE token='urn:uuid:63616665-6630-3064-6465-616462656562'
----
63616665-6630-3064-6465-616462656562

query T
SELECT token FROM u WHERE token=b'cafef00ddeadbeef'
----
63616665-6630-3064-6465-616462656566

query T
SELECT token2 FROM u WHERE token2='63616665-6630-3064-6465-616462656563'
----
63616665-6630-3064-6465-616462656563

query T
SELECT token FROM u WHERE token IN ('63616665-6630-3064-6465-616462656562', '63616665-6630-3064-6465-616462656564') ORDER BY token
----
63616665-6630-3064-6465-616462656562
63616665-6630-3064-6465-616462656564

statement ok
INSERT INTO u VALUES ('63616665-6630-3064-6465-616462656567'::uuid)

statement ok
INSERT INTO u VALUES ('urn:uuid:63616665-6630-3064-6465-616462656568'::uuid)

statement ok
INSERT INTO u VALUES (uuid_v4()::uuid)

statement error value type bytes doesn't match type UUID
INSERT INTO u VALUES ('cafef00ddeadbeef'::bytes)

statement error value type string doesn't match type UUID
INSERT INTO u VALUES ('63616665-6630-3064-6465-616462656562'::string)

statement error value type bytes doesn't match type UUID
INSERT INTO u VALUES (uuid_v4())

query T
SELECT token::uuid FROM u WHERE token=b'cafef00ddeadbeef'
----
63616665-6630-3064-6465-616462656566

query T
SELECT token::string FROM u WHERE token=b'cafef00ddeadbeef'
----
63616665-6630-3064-6465-616462656566

query T
SELECT token::bytes FROM u WHERE token=b'cafef00ddeadbeef'
----
cafef00ddeadbeef

statement error invalid cast: uuid -> INT
SELECT token::int FROM u

query T
SELECT ('63616665-6630-3064-6465-616462656562' COLLATE en)::uuid
----
63616665-6630-3064-6465-616462656562
