mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-13 19:49:39 +02:00
f5ab0a14ea
in UPDATE. We also now issue a NOTICE if a query has _any_ implicit range table entries -- in the past, we would only warn about implicit RTEs in SELECTs with at least one explicit RTE. As a result of the warning change, 25 of the regression tests had to be updated. I also took the opportunity to remove some bogus whitespace differences between some of the float4 and float8 variants. I believe I have correctly updated all the platform-specific variants, but let me know if that's not the case. Original patch for DELETE ... USING from Euler Taveira de Oliveira, reworked by Neil Conway.
112 lines
2.0 KiB
Plaintext
112 lines
2.0 KiB
Plaintext
--
|
|
-- VARCHAR
|
|
--
|
|
CREATE TABLE VARCHAR_TBL(f1 varchar(1));
|
|
INSERT INTO VARCHAR_TBL (f1) VALUES ('a');
|
|
INSERT INTO VARCHAR_TBL (f1) VALUES ('A');
|
|
-- any of the following three input formats are acceptable
|
|
INSERT INTO VARCHAR_TBL (f1) VALUES ('1');
|
|
INSERT INTO VARCHAR_TBL (f1) VALUES (2);
|
|
INSERT INTO VARCHAR_TBL (f1) VALUES ('3');
|
|
-- zero-length char
|
|
INSERT INTO VARCHAR_TBL (f1) VALUES ('');
|
|
-- try varchar's of greater than 1 length
|
|
INSERT INTO VARCHAR_TBL (f1) VALUES ('cd');
|
|
ERROR: value too long for type character varying(1)
|
|
INSERT INTO VARCHAR_TBL (f1) VALUES ('c ');
|
|
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;
|
|
--
|
|
-- Now test longer arrays of char
|
|
--
|
|
CREATE TABLE VARCHAR_TBL(f1 varchar(4));
|
|
INSERT INTO VARCHAR_TBL (f1) VALUES ('a');
|
|
INSERT INTO VARCHAR_TBL (f1) VALUES ('ab');
|
|
INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd');
|
|
INSERT INTO VARCHAR_TBL (f1) VALUES ('abcde');
|
|
ERROR: value too long for type character varying(4)
|
|
INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd ');
|
|
SELECT '' AS four, * FROM VARCHAR_TBL;
|
|
four | f1
|
|
------+------
|
|
| a
|
|
| ab
|
|
| abcd
|
|
| abcd
|
|
(4 rows)
|
|
|