Fix a memory leak in dumping functions with TRANSFORMs
[pgsql.git] / src / test / regress / expected / char.out
blob4df596d111dbb3298e380c8f8dcc7bdc908c1e63
1 --
2 -- CHAR
3 --
4 -- Per SQL standard, CHAR means character(1), that is a varlena type
5 -- with a constraint restricting it to one character (not byte)
6 SELECT char 'c' = char 'c' AS true;
7  true 
8 ------
9  t
10 (1 row)
13 -- Build a table for testing
14 -- (This temporarily hides the table created in test_setup.sql)
16 CREATE TEMP 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 ERROR:  value too long for type character(1)
28 INSERT INTO CHAR_TBL (f1) VALUES ('c     ');
29 SELECT * FROM CHAR_TBL;
30  f1 
31 ----
32  a
33  A
34  1
35  2
36  3
37   
38  c
39 (7 rows)
41 SELECT c.*
42    FROM CHAR_TBL c
43    WHERE c.f1 <> 'a';
44  f1 
45 ----
46  A
47  1
48  2
49  3
50   
51  c
52 (6 rows)
54 SELECT c.*
55    FROM CHAR_TBL c
56    WHERE c.f1 = 'a';
57  f1 
58 ----
59  a
60 (1 row)
62 SELECT c.*
63    FROM CHAR_TBL c
64    WHERE c.f1 < 'a';
65  f1 
66 ----
67  A
68  1
69  2
70  3
71   
72 (5 rows)
74 SELECT c.*
75    FROM CHAR_TBL c
76    WHERE c.f1 <= 'a';
77  f1 
78 ----
79  a
80  A
81  1
82  2
83  3
84   
85 (6 rows)
87 SELECT c.*
88    FROM CHAR_TBL c
89    WHERE c.f1 > 'a';
90  f1 
91 ----
92  c
93 (1 row)
95 SELECT c.*
96    FROM CHAR_TBL c
97    WHERE c.f1 >= 'a';
98  f1 
99 ----
102 (2 rows)
104 DROP TABLE CHAR_TBL;
106 -- Now test longer arrays of char
108 -- This char_tbl was already created and filled in test_setup.sql.
109 -- Here we just try to insert bad values.
111 INSERT INTO CHAR_TBL (f1) VALUES ('abcde');
112 ERROR:  value too long for type character(4)
113 SELECT * FROM CHAR_TBL;
114   f1  
115 ------
116  a   
117  ab  
118  abcd
119  abcd
120 (4 rows)
122 -- Also try it with non-error-throwing API
123 SELECT pg_input_is_valid('abcd  ', 'char(4)');
124  pg_input_is_valid 
125 -------------------
127 (1 row)
129 SELECT pg_input_is_valid('abcde', 'char(4)');
130  pg_input_is_valid 
131 -------------------
133 (1 row)
135 SELECT * FROM pg_input_error_info('abcde', 'char(4)');
136                message                | detail | hint | sql_error_code 
137 --------------------------------------+--------+------+----------------
138  value too long for type character(4) |        |      | 22001
139 (1 row)
142 -- Also test "char", which is an ad-hoc one-byte type.  It can only
143 -- really store ASCII characters, but we allow high-bit-set characters
144 -- to be accessed via bytea-like escapes.
146 SELECT 'a'::"char";
147  char 
148 ------
150 (1 row)
152 SELECT '\101'::"char";
153  char 
154 ------
156 (1 row)
158 SELECT '\377'::"char";
159  char 
160 ------
161  \377
162 (1 row)
164 SELECT 'a'::"char"::text;
165  text 
166 ------
168 (1 row)
170 SELECT '\377'::"char"::text;
171  text 
172 ------
173  \377
174 (1 row)
176 SELECT '\000'::"char"::text;
177  text 
178 ------
180 (1 row)
182 SELECT 'a'::text::"char";
183  char 
184 ------
186 (1 row)
188 SELECT '\377'::text::"char";
189  char 
190 ------
191  \377
192 (1 row)
194 SELECT ''::text::"char";
195  char 
196 ------
198 (1 row)