Skip to content

Commit

Permalink
YQL-18005: fix statement cleanup in pgrun (ydb-platform#2429)
Browse files Browse the repository at this point in the history
  • Loading branch information
marsaly79 authored Mar 4, 2024
1 parent 6632509 commit 377a29f
Show file tree
Hide file tree
Showing 6 changed files with 415 additions and 3 deletions.
228 changes: 228 additions & 0 deletions ydb/library/yql/tests/postgresql/cases/uuid.err
Original file line number Diff line number Diff line change
@@ -0,0 +1,228 @@
<sql-statement>
-- regression test for the uuid datatype
-- creating test tables
CREATE TABLE guid1
(
guid_field UUID,
text_field TEXT DEFAULT(now())
);
</sql-statement>
<sql-statement>
CREATE TABLE guid2
(
guid_field UUID,
text_field TEXT DEFAULT(now())
);
</sql-statement>
<sql-statement>
-- inserting invalid data tests
-- too long
INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-1111-111111111111F');
</sql-statement>
-stdin-:<main>: Fatal: Execution

-stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
-- inserting invalid data tests
^
-stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type uuid: "11111111-1111-1111-1111-111111111111F"

-- inserting invalid data tests
^
<sql-statement>
-- too short
INSERT INTO guid1(guid_field) VALUES('{11111111-1111-1111-1111-11111111111}');
</sql-statement>
-stdin-:<main>: Fatal: Execution

-stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
-- too short
^
-stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type uuid: "{11111111-1111-1111-1111-11111111111}"

-- too short
^
<sql-statement>
-- valid data but invalid format
INSERT INTO guid1(guid_field) VALUES('111-11111-1111-1111-1111-111111111111');
</sql-statement>
-stdin-:<main>: Fatal: Execution

-stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
-- valid data but invalid format
^
-stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type uuid: "111-11111-1111-1111-1111-111111111111"

-- valid data but invalid format
^
<sql-statement>
INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-2222-222222222222 ');
</sql-statement>
-stdin-:<main>: Fatal: Execution

-stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-2222-222222222222 ');
^
-stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type uuid: "{22222222-2222-2222-2222-222222222222 "

INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-2222-222222222222 ');
^
<sql-statement>
-- invalid data
INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-G111-111111111111');
</sql-statement>
-stdin-:<main>: Fatal: Execution

-stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
-- invalid data
^
-stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type uuid: "11111111-1111-1111-G111-111111111111"

-- invalid data
^
<sql-statement>
INSERT INTO guid1(guid_field) VALUES('11+11111-1111-1111-1111-111111111111');
</sql-statement>
-stdin-:<main>: Fatal: Execution

-stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
INSERT INTO guid1(guid_field) VALUES('11+11111-1111-1111-1111-111111111111');
^
-stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type uuid: "11+11111-1111-1111-1111-111111111111"

INSERT INTO guid1(guid_field) VALUES('11+11111-1111-1111-1111-111111111111');
^
<sql-statement>
--inserting three input formats
INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-1111-111111111111');
</sql-statement>
<sql-statement>
INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-2222-222222222222}');
</sql-statement>
<sql-statement>
INSERT INTO guid1(guid_field) VALUES('3f3e3c3b3a3039383736353433a2313e');
</sql-statement>
<sql-statement>
-- retrieving the inserted data
SELECT guid_field FROM guid1;
</sql-statement>
<sql-statement>
-- ordering test
SELECT guid_field FROM guid1 ORDER BY guid_field ASC;
</sql-statement>
<sql-statement>
SELECT guid_field FROM guid1 ORDER BY guid_field DESC;
</sql-statement>
<sql-statement>
-- = operator test
SELECT COUNT(*) FROM guid1 WHERE guid_field = '3f3e3c3b-3a30-3938-3736-353433a2313e';
</sql-statement>
<sql-statement>
-- <> operator test
SELECT COUNT(*) FROM guid1 WHERE guid_field <> '11111111111111111111111111111111';
</sql-statement>
<sql-statement>
-- < operator test
SELECT COUNT(*) FROM guid1 WHERE guid_field < '22222222-2222-2222-2222-222222222222';
</sql-statement>
<sql-statement>
-- <= operator test
SELECT COUNT(*) FROM guid1 WHERE guid_field <= '22222222-2222-2222-2222-222222222222';
</sql-statement>
<sql-statement>
-- > operator test
SELECT COUNT(*) FROM guid1 WHERE guid_field > '22222222-2222-2222-2222-222222222222';
</sql-statement>
<sql-statement>
-- >= operator test
SELECT COUNT(*) FROM guid1 WHERE guid_field >= '22222222-2222-2222-2222-222222222222';
</sql-statement>
<sql-statement>
-- btree and hash index creation test
CREATE INDEX guid1_btree ON guid1 USING BTREE (guid_field);
</sql-statement>
<sql-statement>
CREATE INDEX guid1_hash ON guid1 USING HASH (guid_field);
</sql-statement>
<sql-statement>
-- unique index test
CREATE UNIQUE INDEX guid1_unique_BTREE ON guid1 USING BTREE (guid_field);
</sql-statement>
-stdin-:<main>: Error: Parse Sql

-stdin-:<main>:1:1: Error: unique index creation is not supported yet
-- unique index test
^
<sql-statement>
-- should fail
INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-1111-111111111111');
</sql-statement>
<sql-statement>
-- check to see whether the new indexes are actually there
SELECT count(*) FROM pg_class WHERE relkind='i' AND relname LIKE 'guid%';
</sql-statement>
-stdin-:<main>: Error: Type annotation

-stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect
-- check to see whether the new indexes are actually there
^
-stdin-:<main>: Error: At function: PgSetItem

-stdin-:<main>:1:1: Error: At function: PgWhere
-- check to see whether the new indexes are actually there
^
-stdin-:<main>:2:49: Error: At function: PgAnd
SELECT count(*) FROM pg_class WHERE relkind='i' AND relname LIKE 'guid%';
^
-stdin-:<main>:2:61: Error: At function: PgLike
SELECT count(*) FROM pg_class WHERE relkind='i' AND relname LIKE 'guid%';
^
-stdin-:<main>:2:61: Error: Expected pg text, but got name
SELECT count(*) FROM pg_class WHERE relkind='i' AND relname LIKE 'guid%';
^
<sql-statement>
-- populating the test tables with additional records
INSERT INTO guid1(guid_field) VALUES('44444444-4444-4444-4444-444444444444');
</sql-statement>
<sql-statement>
INSERT INTO guid2(guid_field) VALUES('11111111-1111-1111-1111-111111111111');
</sql-statement>
<sql-statement>
INSERT INTO guid2(guid_field) VALUES('{22222222-2222-2222-2222-222222222222}');
</sql-statement>
<sql-statement>
INSERT INTO guid2(guid_field) VALUES('3f3e3c3b3a3039383736353433a2313e');
</sql-statement>
<sql-statement>
-- join test
SELECT COUNT(*) FROM guid1 g1 INNER JOIN guid2 g2 ON g1.guid_field = g2.guid_field;
</sql-statement>
<sql-statement>
SELECT COUNT(*) FROM guid1 g1 LEFT JOIN guid2 g2 ON g1.guid_field = g2.guid_field WHERE g2.guid_field IS NULL;
</sql-statement>
<sql-statement>
-- generation test
TRUNCATE guid1;
</sql-statement>
-stdin-:<main>: Error: Parse Sql

-stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 257
-- generation test
^
<sql-statement>
INSERT INTO guid1 (guid_field) VALUES (gen_random_uuid());
</sql-statement>
<sql-statement>
INSERT INTO guid1 (guid_field) VALUES (gen_random_uuid());
</sql-statement>
<sql-statement>
SELECT count(DISTINCT guid_field) FROM guid1;
</sql-statement>
<sql-statement>
-- clean up
DROP TABLE guid1, guid2 CASCADE;
</sql-statement>
-stdin-:<main>: Error: Parse Sql

-stdin-:<main>:1:1: Error: CASCADE is not implemented
-- clean up
^
129 changes: 129 additions & 0 deletions ydb/library/yql/tests/postgresql/cases/uuid.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
-- regression test for the uuid datatype
-- creating test tables
CREATE TABLE guid1
(
guid_field UUID,
text_field TEXT DEFAULT(now())
);
CREATE TABLE guid2
(
guid_field UUID,
text_field TEXT DEFAULT(now())
);
-- inserting invalid data tests
-- too long
INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-1111-111111111111F');
ERROR: invalid input syntax for type uuid: "11111111-1111-1111-1111-111111111111F"
LINE 1: INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-111...
^
-- too short
INSERT INTO guid1(guid_field) VALUES('{11111111-1111-1111-1111-11111111111}');
ERROR: invalid input syntax for type uuid: "{11111111-1111-1111-1111-11111111111}"
LINE 1: INSERT INTO guid1(guid_field) VALUES('{11111111-1111-1111-11...
^
-- valid data but invalid format
INSERT INTO guid1(guid_field) VALUES('111-11111-1111-1111-1111-111111111111');
ERROR: invalid input syntax for type uuid: "111-11111-1111-1111-1111-111111111111"
LINE 1: INSERT INTO guid1(guid_field) VALUES('111-11111-1111-1111-11...
^
INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-2222-222222222222 ');
ERROR: invalid input syntax for type uuid: "{22222222-2222-2222-2222-222222222222 "
LINE 1: INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-22...
^
-- invalid data
INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-G111-111111111111');
ERROR: invalid input syntax for type uuid: "11111111-1111-1111-G111-111111111111"
LINE 1: INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-G11...
^
INSERT INTO guid1(guid_field) VALUES('11+11111-1111-1111-1111-111111111111');
ERROR: invalid input syntax for type uuid: "11+11111-1111-1111-1111-111111111111"
LINE 1: INSERT INTO guid1(guid_field) VALUES('11+11111-1111-1111-111...
^
--inserting three input formats
INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-1111-111111111111');
INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-2222-222222222222}');
INSERT INTO guid1(guid_field) VALUES('3f3e3c3b3a3039383736353433a2313e');
-- retrieving the inserted data
SELECT guid_field FROM guid1;
guid_field
--------------------------------------
11111111-1111-1111-1111-111111111111
22222222-2222-2222-2222-222222222222
3f3e3c3b-3a30-3938-3736-353433a2313e
(3 rows)

-- ordering test
SELECT guid_field FROM guid1 ORDER BY guid_field ASC;
guid_field
--------------------------------------
11111111-1111-1111-1111-111111111111
22222222-2222-2222-2222-222222222222
3f3e3c3b-3a30-3938-3736-353433a2313e
(3 rows)

SELECT guid_field FROM guid1 ORDER BY guid_field DESC;
guid_field
--------------------------------------
3f3e3c3b-3a30-3938-3736-353433a2313e
22222222-2222-2222-2222-222222222222
11111111-1111-1111-1111-111111111111
(3 rows)

-- = operator test
SELECT COUNT(*) FROM guid1 WHERE guid_field = '3f3e3c3b-3a30-3938-3736-353433a2313e';
count
-------
1
(1 row)

-- <> operator test
SELECT COUNT(*) FROM guid1 WHERE guid_field <> '11111111111111111111111111111111';
count
-------
2
(1 row)

-- < operator test
SELECT COUNT(*) FROM guid1 WHERE guid_field < '22222222-2222-2222-2222-222222222222';
count
-------
1
(1 row)

-- <= operator test
SELECT COUNT(*) FROM guid1 WHERE guid_field <= '22222222-2222-2222-2222-222222222222';
count
-------
2
(1 row)

-- > operator test
SELECT COUNT(*) FROM guid1 WHERE guid_field > '22222222-2222-2222-2222-222222222222';
count
-------
1
(1 row)

-- >= operator test
SELECT COUNT(*) FROM guid1 WHERE guid_field >= '22222222-2222-2222-2222-222222222222';
count
-------
2
(1 row)

-- btree and hash index creation test
CREATE INDEX guid1_btree ON guid1 USING BTREE (guid_field);
CREATE INDEX guid1_hash ON guid1 USING HASH (guid_field);
-- populating the test tables with additional records
INSERT INTO guid1(guid_field) VALUES('44444444-4444-4444-4444-444444444444');
INSERT INTO guid2(guid_field) VALUES('11111111-1111-1111-1111-111111111111');
INSERT INTO guid2(guid_field) VALUES('{22222222-2222-2222-2222-222222222222}');
INSERT INTO guid2(guid_field) VALUES('3f3e3c3b3a3039383736353433a2313e');
SELECT COUNT(*) FROM guid1 g1 LEFT JOIN guid2 g2 ON g1.guid_field = g2.guid_field WHERE g2.guid_field IS NULL;
count
-------
1
(1 row)

INSERT INTO guid1 (guid_field) VALUES (gen_random_uuid());
INSERT INTO guid1 (guid_field) VALUES (gen_random_uuid());
Loading

0 comments on commit 377a29f

Please sign in to comment.