|
1 | | -QUERY: SELECT 'c'::char = 'c'::char AS true; |
2 | | -true |
3 | | ----- |
4 | | -t |
| 1 | +-- |
| 2 | +-- CHAR |
| 3 | +-- all inputs are SILENTLY truncated at 1 character |
| 4 | +-- |
| 5 | +-- fixed-length by value |
| 6 | +-- internally passed by value if <= 4 bytes in storage |
| 7 | +SELECT char 'c' = char 'c' AS true; |
| 8 | + true |
| 9 | +------ |
| 10 | + t |
5 | 11 | (1 row) |
6 | 12 |
|
7 | | -QUERY: CREATE TABLE CHAR_TBL(f1 char); |
8 | | -QUERY: INSERT INTO CHAR_TBL (f1) VALUES ('a'); |
9 | | -QUERY: INSERT INTO CHAR_TBL (f1) VALUES ('A'); |
10 | | -QUERY: INSERT INTO CHAR_TBL (f1) VALUES ('1'); |
11 | | -QUERY: INSERT INTO CHAR_TBL (f1) VALUES (2); |
12 | | -QUERY: INSERT INTO CHAR_TBL (f1) VALUES ('3'); |
13 | | -QUERY: INSERT INTO CHAR_TBL (f1) VALUES (''); |
14 | | -QUERY: INSERT INTO CHAR_TBL (f1) VALUES ('cd'); |
15 | | -QUERY: SELECT '' AS seven, CHAR_TBL.*; |
16 | | -seven|f1 |
17 | | ------+-- |
18 | | - |a |
19 | | - |A |
20 | | - |1 |
21 | | - |2 |
22 | | - |3 |
23 | | - | |
24 | | - |c |
| 13 | +-- |
| 14 | +-- Build a table for testing |
| 15 | +-- |
| 16 | +CREATE TABLE CHAR_TBL(f1 char); |
| 17 | +INSERT INTO CHAR_TBL (f1) VALUES ('a'); |
| 18 | +INSERT INTO CHAR_TBL (f1) VALUES ('A'); |
| 19 | +-- any of the following three input formats are acceptable |
| 20 | +INSERT INTO CHAR_TBL (f1) VALUES ('1'); |
| 21 | +INSERT INTO CHAR_TBL (f1) VALUES (2); |
| 22 | +INSERT INTO CHAR_TBL (f1) VALUES ('3'); |
| 23 | +-- zero-length char |
| 24 | +INSERT INTO CHAR_TBL (f1) VALUES (''); |
| 25 | +-- try char's of greater than 1 length |
| 26 | +INSERT INTO CHAR_TBL (f1) VALUES ('cd'); |
| 27 | +SELECT '' AS seven, CHAR_TBL.*; |
| 28 | + seven | f1 |
| 29 | +-------+---- |
| 30 | + | a |
| 31 | + | A |
| 32 | + | 1 |
| 33 | + | 2 |
| 34 | + | 3 |
| 35 | + | |
| 36 | + | c |
25 | 37 | (7 rows) |
26 | 38 |
|
27 | | -QUERY:SELECT '' AS six, c.* |
| 39 | +SELECT '' AS six, c.* |
28 | 40 | FROM CHAR_TBL c |
29 | 41 | WHERE c.f1 <> 'a'; |
30 | | -six|f1 |
31 | | ----+-- |
32 | | -|A |
33 | | -|1 |
34 | | -|2 |
35 | | -|3 |
36 | | - | |
37 | | -|c |
| 42 | +six | f1 |
| 43 | +-----+---- |
| 44 | + | A |
| 45 | + | 1 |
| 46 | + | 2 |
| 47 | + | 3 |
| 48 | +| |
| 49 | + | c |
38 | 50 | (6 rows) |
39 | 51 |
|
40 | | -QUERY:SELECT '' AS one, c.* |
| 52 | +SELECT '' AS one, c.* |
41 | 53 | FROM CHAR_TBL c |
42 | 54 | WHERE c.f1 = 'a'; |
43 | | -one|f1 |
44 | | ----+-- |
45 | | -|a |
| 55 | +one | f1 |
| 56 | +-----+---- |
| 57 | + | a |
46 | 58 | (1 row) |
47 | 59 |
|
48 | | -QUERY:SELECT '' AS five, c.* |
| 60 | +SELECT '' AS five, c.* |
49 | 61 | FROM CHAR_TBL c |
50 | 62 | WHERE c.f1 < 'a'; |
51 | | -five|f1 |
52 | | -----+-- |
53 | | -|A |
54 | | -|1 |
55 | | -|2 |
56 | | -|3 |
57 | | - | |
| 63 | +five | f1 |
| 64 | +------+---- |
| 65 | + | A |
| 66 | + | 1 |
| 67 | + | 2 |
| 68 | + | 3 |
| 69 | +| |
58 | 70 | (5 rows) |
59 | 71 |
|
60 | | -QUERY:SELECT '' AS six, c.* |
| 72 | +SELECT '' AS six, c.* |
61 | 73 | FROM CHAR_TBL c |
62 | 74 | WHERE c.f1 <= 'a'; |
63 | | -six|f1 |
64 | | ----+-- |
65 | | -|a |
66 | | -|A |
67 | | -|1 |
68 | | -|2 |
69 | | -|3 |
70 | | - | |
| 75 | +six | f1 |
| 76 | +-----+---- |
| 77 | + | a |
| 78 | + | A |
| 79 | + | 1 |
| 80 | + | 2 |
| 81 | + | 3 |
| 82 | +| |
71 | 83 | (6 rows) |
72 | 84 |
|
73 | | -QUERY:SELECT '' AS one, c.* |
| 85 | +SELECT '' AS one, c.* |
74 | 86 | FROM CHAR_TBL c |
75 | 87 | WHERE c.f1 > 'a'; |
76 | | -one|f1 |
77 | | ----+-- |
78 | | -|c |
| 88 | +one | f1 |
| 89 | +-----+---- |
| 90 | + | c |
79 | 91 | (1 row) |
80 | 92 |
|
81 | | -QUERY:SELECT '' AS two, c.* |
| 93 | +SELECT '' AS two, c.* |
82 | 94 | FROM CHAR_TBL c |
83 | 95 | WHERE c.f1 >= 'a'; |
84 | | -two|f1 |
85 | | ----+-- |
86 | | -|a |
87 | | -|c |
| 96 | +two | f1 |
| 97 | +-----+---- |
| 98 | + | a |
| 99 | + | c |
88 | 100 | (2 rows) |
89 | 101 |
|
90 | | -QUERY: DROP TABLE CHAR_TBL; |
91 | | -QUERY: CREATE TABLE CHAR_TBL(f1 char(4)); |
92 | | -QUERY: INSERT INTO CHAR_TBL (f1) VALUES ('a'); |
93 | | -QUERY: INSERT INTO CHAR_TBL (f1) VALUES ('ab'); |
94 | | -QUERY: INSERT INTO CHAR_TBL (f1) VALUES ('abcd'); |
95 | | -QUERY: INSERT INTO CHAR_TBL (f1) VALUES ('abcde'); |
96 | | -QUERY: SELECT '' AS four, CHAR_TBL.*; |
97 | | -four|f1 |
98 | | -----+---- |
99 | | - |a |
100 | | - |ab |
101 | | - |abcd |
102 | | - |abcd |
| 102 | +DROP TABLE CHAR_TBL; |
| 103 | +-- |
| 104 | +-- Now test longer arrays of char |
| 105 | +-- |
| 106 | +CREATE TABLE CHAR_TBL(f1 char(4)); |
| 107 | +INSERT INTO CHAR_TBL (f1) VALUES ('a'); |
| 108 | +INSERT INTO CHAR_TBL (f1) VALUES ('ab'); |
| 109 | +INSERT INTO CHAR_TBL (f1) VALUES ('abcd'); |
| 110 | +INSERT INTO CHAR_TBL (f1) VALUES ('abcde'); |
| 111 | +SELECT '' AS four, CHAR_TBL.*; |
| 112 | + four | f1 |
| 113 | +------+------ |
| 114 | + | a |
| 115 | + | ab |
| 116 | + | abcd |
| 117 | + | abcd |
103 | 118 | (4 rows) |
104 | 119 |
|