1
0
mirror of https://github.com/postgres/postgres.git synced 2025-12-07 12:02:30 +03:00

The attached patch fixes some spelling mistakes, makes the

comments on one of the optimizer functions a lot more
clear, adds a summary of the recent KSQO discussion to the
comments in the code, adds regression tests for the bug with
sequence state Tom fixed recently and another reg. test, and
removes some PostQuel legacy stuff: ExecAppend -> ExecInsert,
ExecRetrieve -> ExecSelect, etc. This was changed because the
elog() messages from this routine are user-visible, so we
should be using the SQL terms.

Neil Conway
This commit is contained in:
Bruce Momjian
2002-06-25 17:27:20 +00:00
parent 8a9462867a
commit ed275aea42
13 changed files with 125 additions and 98 deletions

View File

@@ -411,7 +411,7 @@ create table atacc1 ( test int );
alter table atacc1 add constraint atacc_test1 check (test>3);
-- should fail
insert into atacc1 (test) values (2);
ERROR: ExecAppend: rejected due to CHECK constraint atacc_test1
ERROR: ExecInsert: rejected due to CHECK constraint atacc_test1
-- should succeed
insert into atacc1 (test) values (4);
drop table atacc1;
@@ -436,7 +436,7 @@ create table atacc1 ( test int, test2 int, test3 int);
alter table atacc1 add constraint atacc_test1 check (test+test2<test3*4);
-- should fail
insert into atacc1 (test,test2,test3) values (4,4,2);
ERROR: ExecAppend: rejected due to CHECK constraint atacc_test1
ERROR: ExecInsert: rejected due to CHECK constraint atacc_test1
-- should succeed
insert into atacc1 (test,test2,test3) values (4,4,5);
drop table atacc1;
@@ -445,7 +445,7 @@ create table atacc1 (test int check (test>3), test2 int);
alter table atacc1 add check (test2>test);
-- should fail for $2
insert into atacc1 (test2, test) values (3, 4);
ERROR: ExecAppend: rejected due to CHECK constraint $2
ERROR: ExecInsert: rejected due to CHECK constraint $2
drop table atacc1;
-- inheritance related tests
create table atacc1 (test int);
@@ -454,11 +454,11 @@ create table atacc3 (test3 int) inherits (atacc1, atacc2);
alter table atacc2 add constraint foo check (test2>0);
-- fail and then succeed on atacc2
insert into atacc2 (test2) values (-3);
ERROR: ExecAppend: rejected due to CHECK constraint foo
ERROR: ExecInsert: rejected due to CHECK constraint foo
insert into atacc2 (test2) values (3);
-- fail and then succeed on atacc3
insert into atacc3 (test2) values (-3);
ERROR: ExecAppend: rejected due to CHECK constraint foo
ERROR: ExecInsert: rejected due to CHECK constraint foo
insert into atacc3 (test2) values (3);
drop table atacc3;
drop table atacc2;
@@ -470,7 +470,7 @@ create table atacc3 (test3 int) inherits (atacc1, atacc2);
alter table only atacc2 add constraint foo check (test2>0);
-- fail and then succeed on atacc2
insert into atacc2 (test2) values (-3);
ERROR: ExecAppend: rejected due to CHECK constraint foo
ERROR: ExecInsert: rejected due to CHECK constraint foo
insert into atacc2 (test2) values (3);
-- both succeed on atacc3
insert into atacc3 (test2) values (-3);
@@ -608,7 +608,7 @@ insert into atacc1 (test2, test) values (3, 3);
insert into atacc1 (test2, test) values (2, 3);
ERROR: Cannot insert a duplicate key into unique index atacc1_pkey
insert into atacc1 (test2, test) values (1, NULL);
ERROR: ExecAppend: Fail to add null value in not null attribute test
ERROR: ExecInsert: Fail to add null value in not null attribute test
drop table atacc1;
-- alter table / alter column [set/drop] not null tests
-- try altering system catalogs, should fail
@@ -658,9 +658,9 @@ create table parent (a int);
create table child (b varchar(255)) inherits (parent);
alter table parent alter a set not null;
insert into parent values (NULL);
ERROR: ExecAppend: Fail to add null value in not null attribute a
ERROR: ExecInsert: Fail to add null value in not null attribute a
insert into child (a, b) values (NULL, 'foo');
ERROR: ExecAppend: Fail to add null value in not null attribute a
ERROR: ExecInsert: Fail to add null value in not null attribute a
alter table parent alter a drop not null;
insert into parent values (NULL);
insert into child (a, b) values (NULL, 'foo');
@@ -671,14 +671,14 @@ ERROR: ALTER TABLE: Attribute "a" contains NULL values
delete from parent;
alter table only parent alter a set not null;
insert into parent values (NULL);
ERROR: ExecAppend: Fail to add null value in not null attribute a
ERROR: ExecInsert: Fail to add null value in not null attribute a
alter table child alter a set not null;
insert into child (a, b) values (NULL, 'foo');
ERROR: ExecAppend: Fail to add null value in not null attribute a
ERROR: ExecInsert: Fail to add null value in not null attribute a
delete from child;
alter table child alter a set not null;
insert into child (a, b) values (NULL, 'foo');
ERROR: ExecAppend: Fail to add null value in not null attribute a
ERROR: ExecInsert: Fail to add null value in not null attribute a
drop table child;
drop table parent;
-- test setting and removing default values

View File

@@ -142,7 +142,7 @@ INSERT INTO serialTest VALUES ('foo');
INSERT INTO serialTest VALUES ('bar');
INSERT INTO serialTest VALUES ('force', 100);
INSERT INTO serialTest VALUES ('wrong', NULL);
ERROR: ExecAppend: Fail to add null value in not null attribute f2
ERROR: ExecInsert: Fail to add null value in not null attribute f2
SELECT * FROM serialTest;
f1 | f2
-------+-----
@@ -151,3 +151,13 @@ SELECT * FROM serialTest;
force | 100
(3 rows)
CREATE SEQUENCE sequence_test;
BEGIN;
SELECT nextval('sequence_test');
nextval
---------
1
(1 row)
DROP SEQUENCE sequence_test;
END;

View File

@@ -88,14 +88,14 @@ create table nulltest
, col4 dnull
);
INSERT INTO nulltest DEFAULT VALUES;
ERROR: ExecAppend: Fail to add null value in not null attribute col1
ERROR: ExecInsert: Fail to add null value in not null attribute col1
INSERT INTO nulltest values ('a', 'b', 'c', 'd'); -- Good
INSERT INTO nulltest values (NULL, 'b', 'c', 'd');
ERROR: ExecAppend: Fail to add null value in not null attribute col1
ERROR: ExecInsert: Fail to add null value in not null attribute col1
INSERT INTO nulltest values ('a', NULL, 'c', 'd');
ERROR: ExecAppend: Fail to add null value in not null attribute col2
ERROR: ExecInsert: Fail to add null value in not null attribute col2
INSERT INTO nulltest values ('a', 'b', NULL, 'd');
ERROR: ExecAppend: Fail to add null value in not null attribute col3
ERROR: ExecInsert: Fail to add null value in not null attribute col3
INSERT INTO nulltest values ('a', 'b', 'c', NULL); -- Good
select * from nulltest;
col1 | col2 | col3 | col4

View File

@@ -3,7 +3,7 @@
--
create table inserttest (col1 int4, col2 int4 NOT NULL, col3 text default 'testing');
insert into inserttest (col1, col2, col3) values (DEFAULT, DEFAULT, DEFAULT);
ERROR: ExecAppend: Fail to add null value in not null attribute col2
ERROR: ExecInsert: Fail to add null value in not null attribute col2
insert into inserttest (col2, col3) values (3, DEFAULT);
insert into inserttest (col1, col2, col3) values (DEFAULT, 5, DEFAULT);
insert into inserttest values (DEFAULT, 5, 'test');

View File

@@ -21,6 +21,15 @@ SELECT b, c FROM test_having
3 | bbbb
(2 rows)
-- HAVING is equivalent to WHERE in this case
SELECT b, c FROM test_having
GROUP BY b, c HAVING b = 3;
b | c
---+----------
3 | BBBB
3 | bbbb
(2 rows)
SELECT lower(c), count(c) FROM test_having
GROUP BY lower(c) HAVING count(*) > 2 OR min(a) = max(a);
lower | count

View File

@@ -62,12 +62,12 @@ CREATE TABLE CHECK_TBL (x int,
INSERT INTO CHECK_TBL VALUES (5);
INSERT INTO CHECK_TBL VALUES (4);
INSERT INTO CHECK_TBL VALUES (3);
ERROR: ExecAppend: rejected due to CHECK constraint check_con
ERROR: ExecInsert: rejected due to CHECK constraint check_con
INSERT INTO CHECK_TBL VALUES (2);
ERROR: ExecAppend: rejected due to CHECK constraint check_con
ERROR: ExecInsert: rejected due to CHECK constraint check_con
INSERT INTO CHECK_TBL VALUES (6);
INSERT INTO CHECK_TBL VALUES (1);
ERROR: ExecAppend: rejected due to CHECK constraint check_con
ERROR: ExecInsert: rejected due to CHECK constraint check_con
SELECT '' AS three, * FROM CHECK_TBL;
three | x
-------+---
@@ -82,13 +82,13 @@ CREATE TABLE CHECK2_TBL (x int, y text, z int,
CHECK (x > 3 and y <> 'check failed' and z < 8));
INSERT INTO CHECK2_TBL VALUES (4, 'check ok', -2);
INSERT INTO CHECK2_TBL VALUES (1, 'x check failed', -2);
ERROR: ExecAppend: rejected due to CHECK constraint sequence_con
ERROR: ExecInsert: rejected due to CHECK constraint sequence_con
INSERT INTO CHECK2_TBL VALUES (5, 'z check failed', 10);
ERROR: ExecAppend: rejected due to CHECK constraint sequence_con
ERROR: ExecInsert: rejected due to CHECK constraint sequence_con
INSERT INTO CHECK2_TBL VALUES (0, 'check failed', -2);
ERROR: ExecAppend: rejected due to CHECK constraint sequence_con
ERROR: ExecInsert: rejected due to CHECK constraint sequence_con
INSERT INTO CHECK2_TBL VALUES (6, 'check failed', 11);
ERROR: ExecAppend: rejected due to CHECK constraint sequence_con
ERROR: ExecInsert: rejected due to CHECK constraint sequence_con
INSERT INTO CHECK2_TBL VALUES (7, 'check ok', 7);
SELECT '' AS two, * from CHECK2_TBL;
two | x | y | z
@@ -107,7 +107,7 @@ CREATE TABLE INSERT_TBL (x INT DEFAULT nextval('insert_seq'),
CONSTRAINT INSERT_CON CHECK (x >= 3 AND y <> 'check failed' AND x < 8),
CHECK (x + z = 0));
INSERT INTO INSERT_TBL(x,z) VALUES (2, -2);
ERROR: ExecAppend: rejected due to CHECK constraint insert_con
ERROR: ExecInsert: rejected due to CHECK constraint insert_con
SELECT '' AS zero, * FROM INSERT_TBL;
zero | x | y | z
------+---+---+---
@@ -120,13 +120,13 @@ SELECT 'one' AS one, nextval('insert_seq');
(1 row)
INSERT INTO INSERT_TBL(y) VALUES ('Y');
ERROR: ExecAppend: rejected due to CHECK constraint insert_con
ERROR: ExecInsert: rejected due to CHECK constraint insert_con
INSERT INTO INSERT_TBL(y) VALUES ('Y');
INSERT INTO INSERT_TBL(x,z) VALUES (1, -2);
ERROR: ExecAppend: rejected due to CHECK constraint $2
ERROR: ExecInsert: rejected due to CHECK constraint $2
INSERT INTO INSERT_TBL(z,x) VALUES (-7, 7);
INSERT INTO INSERT_TBL VALUES (5, 'check failed', -5);
ERROR: ExecAppend: rejected due to CHECK constraint insert_con
ERROR: ExecInsert: rejected due to CHECK constraint insert_con
INSERT INTO INSERT_TBL VALUES (7, '!check failed', -7);
INSERT INTO INSERT_TBL(y) VALUES ('-!NULL-');
SELECT '' AS four, * FROM INSERT_TBL;
@@ -139,9 +139,9 @@ SELECT '' AS four, * FROM INSERT_TBL;
(4 rows)
INSERT INTO INSERT_TBL(y,z) VALUES ('check failed', 4);
ERROR: ExecAppend: rejected due to CHECK constraint $2
ERROR: ExecInsert: rejected due to CHECK constraint $2
INSERT INTO INSERT_TBL(x,y) VALUES (5, 'check failed');
ERROR: ExecAppend: rejected due to CHECK constraint insert_con
ERROR: ExecInsert: rejected due to CHECK constraint insert_con
INSERT INTO INSERT_TBL(x,y) VALUES (5, '!check failed');
INSERT INTO INSERT_TBL(y) VALUES ('-!NULL-');
SELECT '' AS six, * FROM INSERT_TBL;
@@ -162,7 +162,7 @@ SELECT 'seven' AS one, nextval('insert_seq');
(1 row)
INSERT INTO INSERT_TBL(y) VALUES ('Y');
ERROR: ExecAppend: rejected due to CHECK constraint insert_con
ERROR: ExecInsert: rejected due to CHECK constraint insert_con
SELECT 'eight' AS one, currval('insert_seq');
one | currval
-------+---------
@@ -193,11 +193,11 @@ CREATE TABLE INSERT_CHILD (cx INT default 42,
INHERITS (INSERT_TBL);
INSERT INTO INSERT_CHILD(x,z,cy) VALUES (7,-7,11);
INSERT INTO INSERT_CHILD(x,z,cy) VALUES (7,-7,6);
ERROR: ExecAppend: rejected due to CHECK constraint insert_child_cy
ERROR: ExecInsert: rejected due to CHECK constraint insert_child_cy
INSERT INTO INSERT_CHILD(x,z,cy) VALUES (6,-7,7);
ERROR: ExecAppend: rejected due to CHECK constraint $1
ERROR: ExecInsert: rejected due to CHECK constraint $1
INSERT INTO INSERT_CHILD(x,y,z,cy) VALUES (6,'check failed',-6,7);
ERROR: ExecAppend: rejected due to CHECK constraint insert_con
ERROR: ExecInsert: rejected due to CHECK constraint insert_con
SELECT * FROM INSERT_CHILD;
x | y | z | cx | cy
---+--------+----+----+----
@@ -227,7 +227,7 @@ SELECT '' AS three, * FROM INSERT_TBL;
INSERT INTO INSERT_TBL SELECT * FROM tmp WHERE yd = 'try again';
INSERT INTO INSERT_TBL(y,z) SELECT yd, -7 FROM tmp WHERE yd = 'try again';
INSERT INTO INSERT_TBL(y,z) SELECT yd, -8 FROM tmp WHERE yd = 'try again';
ERROR: ExecAppend: rejected due to CHECK constraint insert_con
ERROR: ExecInsert: rejected due to CHECK constraint insert_con
SELECT '' AS four, * FROM INSERT_TBL;
four | x | y | z
------+---+---------------+----
@@ -246,7 +246,7 @@ UPDATE INSERT_TBL SET x = NULL WHERE x = 5;
UPDATE INSERT_TBL SET x = 6 WHERE x = 6;
UPDATE INSERT_TBL SET x = -z, z = -x;
UPDATE INSERT_TBL SET x = z, z = x;
ERROR: ExecReplace: rejected due to CHECK constraint insert_con
ERROR: ExecUpdate: rejected due to CHECK constraint insert_con
SELECT * FROM INSERT_TBL;
x | y | z
---+---------------+----
@@ -293,7 +293,7 @@ ERROR: Cannot insert a duplicate key into unique index primary_tbl_pkey
INSERT INTO PRIMARY_TBL VALUES (4, 'three');
INSERT INTO PRIMARY_TBL VALUES (5, 'one');
INSERT INTO PRIMARY_TBL (t) VALUES ('six');
ERROR: ExecAppend: Fail to add null value in not null attribute i
ERROR: ExecInsert: Fail to add null value in not null attribute i
SELECT '' AS four, * FROM PRIMARY_TBL;
four | i | t
------+---+-------
@@ -313,7 +313,7 @@ INSERT INTO PRIMARY_TBL VALUES (1, 'three');
INSERT INTO PRIMARY_TBL VALUES (4, 'three');
INSERT INTO PRIMARY_TBL VALUES (5, 'one');
INSERT INTO PRIMARY_TBL (t) VALUES ('six');
ERROR: ExecAppend: Fail to add null value in not null attribute i
ERROR: ExecInsert: Fail to add null value in not null attribute i
SELECT '' AS three, * FROM PRIMARY_TBL;
three | i | t
-------+---+-------

View File

@@ -217,3 +217,10 @@ INSERT INTO serialTest VALUES ('force', 100);
INSERT INTO serialTest VALUES ('wrong', NULL);
SELECT * FROM serialTest;
CREATE SEQUENCE sequence_test;
BEGIN;
SELECT nextval('sequence_test');
DROP SEQUENCE sequence_test;
END;

View File

@@ -18,6 +18,10 @@ INSERT INTO test_having VALUES (9, 4, 'CCCC', 'j');
SELECT b, c FROM test_having
GROUP BY b, c HAVING count(*) = 1;
-- HAVING is equivalent to WHERE in this case
SELECT b, c FROM test_having
GROUP BY b, c HAVING b = 3;
SELECT lower(c), count(c) FROM test_having
GROUP BY lower(c) HAVING count(*) > 2 OR min(a) = max(a);