| -- start_ignore |
| SET SEARCH_PATH=TestType_varchar; |
| SET |
| -- end_ignore |
| -- |
| -- VARCHAR |
| -- |
| CREATE TABLE VARCHAR_TBL(f1 varchar(1)); |
| CREATE TABLE |
| INSERT INTO VARCHAR_TBL (f1) VALUES ('a'); |
| INSERT 0 1 |
| INSERT INTO VARCHAR_TBL (f1) VALUES ('A'); |
| INSERT 0 1 |
| -- any of the following three input formats are acceptable |
| INSERT INTO VARCHAR_TBL (f1) VALUES ('1'); |
| INSERT 0 1 |
| INSERT INTO VARCHAR_TBL (f1) VALUES (2); |
| INSERT 0 1 |
| INSERT INTO VARCHAR_TBL (f1) VALUES ('3'); |
| INSERT 0 1 |
| -- zero-length char |
| INSERT INTO VARCHAR_TBL (f1) VALUES (''); |
| INSERT 0 1 |
| -- try varchar's of greater than 1 length |
| INSERT INTO VARCHAR_TBL (f1) VALUES ('cd'); |
| psql:/tmp/TestType_varchar.sql:25: ERROR: value too long for type character varying(1) |
| INSERT INTO VARCHAR_TBL (f1) VALUES ('c '); |
| INSERT 0 1 |
| SELECT '' AS seven, * FROM VARCHAR_TBL; |
| seven | f1 |
| -------+---- |
| | a |
| | A |
| | 1 |
| | 2 |
| | 3 |
| | |
| | c |
| (7 rows) |
| |
| SELECT '' AS six, c.* |
| FROM VARCHAR_TBL c |
| WHERE c.f1 <> 'a'; |
| six | f1 |
| -----+---- |
| | A |
| | 1 |
| | 2 |
| | 3 |
| | |
| | c |
| (6 rows) |
| |
| SELECT '' AS one, c.* |
| FROM VARCHAR_TBL c |
| WHERE c.f1 = 'a'; |
| one | f1 |
| -----+---- |
| | a |
| (1 row) |
| |
| SELECT '' AS five, c.* |
| FROM VARCHAR_TBL c |
| WHERE c.f1 < 'a'; |
| five | f1 |
| ------+---- |
| | 1 |
| | 2 |
| | 3 |
| | |
| (4 rows) |
| |
| SELECT '' AS six, c.* |
| FROM VARCHAR_TBL c |
| WHERE c.f1 <= 'a'; |
| six | f1 |
| -----+---- |
| | a |
| | 1 |
| | 2 |
| | 3 |
| | |
| (5 rows) |
| |
| SELECT '' AS one, c.* |
| FROM VARCHAR_TBL c |
| WHERE c.f1 > 'a'; |
| one | f1 |
| -----+---- |
| | A |
| | c |
| (2 rows) |
| |
| SELECT '' AS two, c.* |
| FROM VARCHAR_TBL c |
| WHERE c.f1 >= 'a'; |
| two | f1 |
| -----+---- |
| | a |
| | A |
| | c |
| (3 rows) |
| |
| DROP TABLE VARCHAR_TBL; |
| DROP TABLE |
| -- |
| -- Now test longer arrays of char |
| -- |
| CREATE TABLE VARCHAR_TBL(f1 varchar(4)); |
| CREATE TABLE |
| INSERT INTO VARCHAR_TBL (f1) VALUES ('a'); |
| INSERT 0 1 |
| INSERT INTO VARCHAR_TBL (f1) VALUES ('ab'); |
| INSERT 0 1 |
| INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd'); |
| INSERT 0 1 |
| INSERT INTO VARCHAR_TBL (f1) VALUES ('abcde'); |
| psql:/tmp/TestType_varchar.sql:66: ERROR: value too long for type character varying(4) |
| INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd '); |
| INSERT 0 1 |
| SELECT '' AS four, * FROM VARCHAR_TBL; |
| four | f1 |
| ------+------ |
| | a |
| | ab |
| | abcd |
| | abcd |
| (4 rows) |