diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index 67f36f73e4..60926af2db 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -27,7 +27,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.166 2002/06/25 17:27:20 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.167 2002/06/25 17:58:10 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -62,14 +62,14 @@ static TupleTableSlot *ExecutePlan(EState *estate, Plan *plan, long numberTuples, ScanDirection direction, DestReceiver *destfunc); -static void ExecSelect(TupleTableSlot *slot, +static void ExecRetrieve(TupleTableSlot *slot, DestReceiver *destfunc, EState *estate); -static void ExecInsert(TupleTableSlot *slot, ItemPointer tupleid, +static void ExecAppend(TupleTableSlot *slot, ItemPointer tupleid, EState *estate); static void ExecDelete(TupleTableSlot *slot, ItemPointer tupleid, EState *estate); -static void ExecUpdate(TupleTableSlot *slot, ItemPointer tupleid, +static void ExecReplace(TupleTableSlot *slot, ItemPointer tupleid, EState *estate); static TupleTableSlot *EvalPlanQualNext(EState *estate); static void EndEvalPlanQual(EState *estate); @@ -251,7 +251,7 @@ ExecCheckQueryPerms(CmdType operation, Query *parseTree, Plan *plan) ExecCheckRTPerms(parseTree->rtable, operation); /* - * Search for subplans and INSERT nodes to check their rangetables. + * Search for subplans and APPEND nodes to check their rangetables. */ ExecCheckPlanPerms(plan, parseTree->rtable, operation); } @@ -583,7 +583,7 @@ InitPlan(CmdType operation, Query *parseTree, Plan *plan, EState *estate) /* * Get the tuple descriptor describing the type of tuples to return. * (this is especially important if we are creating a relation with - * "SELECT INTO") + * "retrieve into") */ tupType = ExecGetTupType(plan); /* tuple descriptor */ @@ -892,7 +892,7 @@ EndPlan(Plan *plan, EState *estate) * Retrieves all tuples if numberTuples is 0 * * result is either a slot containing the last tuple in the case - * of a SELECT or NULL otherwise. + * of a RETRIEVE or NULL otherwise. * * Note: the ctid attribute is a 'junk' attribute that is removed before the * user can see it @@ -1068,26 +1068,29 @@ lnext: ; slot = ExecStoreTuple(newTuple, /* tuple to store */ junkfilter->jf_resultSlot, /* dest slot */ - InvalidBuffer, /* this tuple has no buffer */ + InvalidBuffer, /* this tuple has no + * buffer */ true); /* tuple should be pfreed */ - } + } /* if (junkfilter... */ /* * now that we have a tuple, do the appropriate thing with it.. * either return it to the user, add it to a relation someplace, * delete it from a relation, or modify some of its attributes. */ + switch (operation) { case CMD_SELECT: - ExecSelect(slot, /* slot containing tuple */ - destfunc, /* destination's tuple-receiver obj */ - estate); + ExecRetrieve(slot, /* slot containing tuple */ + destfunc, /* destination's tuple-receiver + * obj */ + estate); /* */ result = slot; break; case CMD_INSERT: - ExecInsert(slot, tupleid, estate); + ExecAppend(slot, tupleid, estate); result = NULL; break; @@ -1097,7 +1100,7 @@ lnext: ; break; case CMD_UPDATE: - ExecUpdate(slot, tupleid, estate); + ExecReplace(slot, tupleid, estate); result = NULL; break; @@ -1118,25 +1121,25 @@ lnext: ; /* * here, result is either a slot containing a tuple in the case of a - * SELECT or NULL otherwise. + * RETRIEVE or NULL otherwise. */ return result; } /* ---------------------------------------------------------------- - * ExecSelect + * ExecRetrieve * - * SELECTs are easy.. we just pass the tuple to the appropriate + * RETRIEVEs are easy.. we just pass the tuple to the appropriate * print function. The only complexity is when we do a - * "SELECT INTO", in which case we insert the tuple into + * "retrieve into", in which case we insert the tuple into * the appropriate relation (note: this is a newly created relation * so we don't need to worry about indices or locks.) * ---------------------------------------------------------------- */ static void -ExecSelect(TupleTableSlot *slot, - DestReceiver *destfunc, - EState *estate) +ExecRetrieve(TupleTableSlot *slot, + DestReceiver *destfunc, + EState *estate) { HeapTuple tuple; TupleDesc attrtype; @@ -1166,15 +1169,16 @@ ExecSelect(TupleTableSlot *slot, } /* ---------------------------------------------------------------- - * ExecInsert + * ExecAppend * - * INSERTs are trickier.. we have to insert the tuple into + * APPENDs are trickier.. we have to insert the tuple into * the base relation and insert appropriate tuples into the * index relations. * ---------------------------------------------------------------- */ + static void -ExecInsert(TupleTableSlot *slot, +ExecAppend(TupleTableSlot *slot, ItemPointer tupleid, EState *estate) { @@ -1223,7 +1227,7 @@ ExecInsert(TupleTableSlot *slot, * Check the constraints of the tuple */ if (resultRelationDesc->rd_att->constr) - ExecConstraints("ExecInsert", resultRelInfo, slot, estate); + ExecConstraints("ExecAppend", resultRelInfo, slot, estate); /* * insert the tuple @@ -1255,7 +1259,7 @@ ExecInsert(TupleTableSlot *slot, /* ---------------------------------------------------------------- * ExecDelete * - * DELETE is like UPDATE, we delete the tuple and its + * DELETE is like append, we delete the tuple and its * index tuples. * ---------------------------------------------------------------- */ @@ -1342,18 +1346,18 @@ ldelete:; } /* ---------------------------------------------------------------- - * ExecUpdate + * ExecReplace * - * note: we can't run UPDATE queries with transactions - * off because UPDATEs are actually INSERTs and our - * scan will mistakenly loop forever, updating the tuple - * it just inserted.. This should be fixed but until it + * note: we can't run replace queries with transactions + * off because replaces are actually appends and our + * scan will mistakenly loop forever, replacing the tuple + * it just appended.. This should be fixed but until it * is, we don't want to get stuck in an infinite loop * which corrupts your database.. * ---------------------------------------------------------------- */ static void -ExecUpdate(TupleTableSlot *slot, +ExecReplace(TupleTableSlot *slot, ItemPointer tupleid, EState *estate) { @@ -1369,7 +1373,7 @@ ExecUpdate(TupleTableSlot *slot, */ if (IsBootstrapProcessingMode()) { - elog(WARNING, "ExecUpdate: UPDATE can't run without transactions"); + elog(WARNING, "ExecReplace: replace can't run without transactions"); return; } @@ -1420,7 +1424,7 @@ ExecUpdate(TupleTableSlot *slot, */ lreplace:; if (resultRelationDesc->rd_att->constr) - ExecConstraints("ExecUpdate", resultRelInfo, slot, estate); + ExecConstraints("ExecReplace", resultRelInfo, slot, estate); /* * replace the heap tuple @@ -1468,7 +1472,7 @@ lreplace:; /* * Note: instead of having to update the old index tuples associated * with the heap tuple, all we do is form and insert new index tuples. - * This is because UPDATEs are actually DELETEs and INSERTs and index + * This is because replaces are actually deletes and inserts and index * tuple deletion is done automagically by the vacuum daemon. All we * do is insert new index tuples. -cim 9/27/89 */ @@ -1477,7 +1481,7 @@ lreplace:; * process indices * * heap_update updates a tuple in the base relation by invalidating it - * and then inserting a new tuple to the relation. As a side effect, + * and then appending a new tuple to the relation. As a side effect, * the tupleid of the new tuple is placed in the new tuple's t_ctid * field. So we now insert index tuples using the new tupleid stored * there. @@ -1550,7 +1554,7 @@ ExecRelCheck(ResultRelInfo *resultRelInfo, } void -ExecConstraints(const char *caller, ResultRelInfo *resultRelInfo, +ExecConstraints(char *caller, ResultRelInfo *resultRelInfo, TupleTableSlot *slot, EState *estate) { Relation rel = resultRelInfo->ri_RelationDesc; diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c index 74bb477e0e..f337ef9d14 100644 --- a/src/backend/executor/execUtils.c +++ b/src/backend/executor/execUtils.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.84 2002/06/25 17:27:20 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.85 2002/06/25 17:58:10 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -18,7 +18,7 @@ * * ExecOpenIndices \ * ExecCloseIndices | referenced by InitPlan, EndPlan, - * ExecInsertIndexTuples / ExecInsert, ExecUpdate + * ExecInsertIndexTuples / ExecAppend, ExecReplace * * RegisterExprContextCallback Register function shutdown callback * UnregisterExprContextCallback Deregister function shutdown callback diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c index b626567b21..ecf22eb118 100644 --- a/src/backend/optimizer/path/costsize.c +++ b/src/backend/optimizer/path/costsize.c @@ -42,7 +42,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/optimizer/path/costsize.c,v 1.86 2002/06/25 17:27:20 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/path/costsize.c,v 1.87 2002/06/25 17:58:10 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -154,11 +154,11 @@ cost_seqscan(Path *path, Query *root, * * Given a guesstimated cache size, we estimate the actual I/O cost per page * with the entirely ad-hoc equations: - * if relpages >= effective_cache_size: - * random_page_cost * (1 - (effective_cache_size/relpages)/2) - * if relpages < effective_cache_size: - * 1 + (random_page_cost/2-1) * (relpages/effective_cache_size) ** 2 - * These give the right asymptotic behavior (=> 1.0 as relpages becomes + * for rel_size <= effective_cache_size: + * 1 + (random_page_cost/2-1) * (rel_size/effective_cache_size) ** 2 + * for rel_size >= effective_cache_size: + * random_page_cost * (1 - (effective_cache_size/rel_size)/2) + * These give the right asymptotic behavior (=> 1.0 as rel_size becomes * small, => random_page_cost as it becomes large) and meet in the middle * with the estimate that the cache is about 50% effective for a relation * of the same size as effective_cache_size. (XXX this is probably all diff --git a/src/backend/optimizer/prep/_deadcode/prepkeyset.c b/src/backend/optimizer/prep/_deadcode/prepkeyset.c index 9de8ebb6c7..b67431716f 100644 --- a/src/backend/optimizer/prep/_deadcode/prepkeyset.c +++ b/src/backend/optimizer/prep/_deadcode/prepkeyset.c @@ -1,7 +1,7 @@ /*------------------------------------------------------------------------- * * prepkeyset.c - * Special preparation for keyset queries (KSQO). + * Special preperation for keyset queries. * * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California @@ -14,6 +14,12 @@ #include "postgres.h" #include "optimizer/planmain.h" +/* + * Node_Copy + * a macro to simplify calling of copyObject on the specified field + */ +#define Node_Copy(from, newnode, field) newnode->field = copyObject(from->field) + bool _use_keyset_query_optimizer = FALSE; #ifdef ENABLE_KEY_SET_QUERY @@ -49,20 +55,13 @@ static int TotalExpr; * a HAVING, or a GROUP BY. It must be a single table and have KSQO * set to 'on'. * - * The primary use of this transformation is to avoid the exponential + * The primary use of this transformation is to avoid the exponrntial * memory consumption of cnfify() and to make use of index access * methods. * * daveh@insightdist.com 1998-08-31 * * May want to also prune out duplicate terms. - * - * XXX: this code is currently not compiled because it has not been - * updated to work with the re-implementation of UNION/INTERSECT/EXCEPT - * in PostgreSQL 7.1. However, it is of questionable value in any - * case, because it changes the semantics of the original query: - * UNION will add an implicit SELECT DISTINCT, which might change - * the results that are returned. **********************************************************************/ void transformKeySetQuery(Query *origNode) diff --git a/src/include/executor/executor.h b/src/include/executor/executor.h index 574b1969b6..c960c0e1d7 100644 --- a/src/include/executor/executor.h +++ b/src/include/executor/executor.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: executor.h,v 1.67 2002/06/25 17:27:20 momjian Exp $ + * $Id: executor.h,v 1.68 2002/06/25 17:58:10 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -52,7 +52,7 @@ extern TupleDesc ExecutorStart(QueryDesc *queryDesc, EState *estate); extern TupleTableSlot *ExecutorRun(QueryDesc *queryDesc, EState *estate, ScanDirection direction, long count); extern void ExecutorEnd(QueryDesc *queryDesc, EState *estate); -extern void ExecConstraints(const char *caller, ResultRelInfo *resultRelInfo, +extern void ExecConstraints(char *caller, ResultRelInfo *resultRelInfo, TupleTableSlot *slot, EState *estate); extern TupleTableSlot *EvalPlanQual(EState *estate, Index rti, ItemPointer tid); diff --git a/src/test/regress/expected/alter_table.out b/src/test/regress/expected/alter_table.out index f2e31919cc..31278f89f0 100644 --- a/src/test/regress/expected/alter_table.out +++ b/src/test/regress/expected/alter_table.out @@ -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: ExecInsert: rejected due to CHECK constraint atacc_test1 +ERROR: ExecAppend: 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+test23), test2 int); alter table atacc1 add check (test2>test); -- should fail for $2 insert into atacc1 (test2, test) values (3, 4); -ERROR: ExecInsert: rejected due to CHECK constraint $2 +ERROR: ExecAppend: 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: ExecInsert: rejected due to CHECK constraint foo +ERROR: ExecAppend: 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: ExecInsert: rejected due to CHECK constraint foo +ERROR: ExecAppend: 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: ExecInsert: rejected due to CHECK constraint foo +ERROR: ExecAppend: 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: ExecInsert: Fail to add null value in not null attribute test +ERROR: ExecAppend: 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: ExecInsert: Fail to add null value in not null attribute a +ERROR: ExecAppend: Fail to add null value in not null attribute a insert into child (a, b) values (NULL, 'foo'); -ERROR: ExecInsert: Fail to add null value in not null attribute a +ERROR: ExecAppend: 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: ExecInsert: Fail to add null value in not null attribute a +ERROR: ExecAppend: 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: ExecInsert: Fail to add null value in not null attribute a +ERROR: ExecAppend: 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: ExecInsert: Fail to add null value in not null attribute a +ERROR: ExecAppend: Fail to add null value in not null attribute a drop table child; drop table parent; -- test setting and removing default values diff --git a/src/test/regress/expected/create_misc.out b/src/test/regress/expected/create_misc.out index 9e1faa0a37..1842314ce9 100644 --- a/src/test/regress/expected/create_misc.out +++ b/src/test/regress/expected/create_misc.out @@ -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: ExecInsert: Fail to add null value in not null attribute f2 +ERROR: ExecAppend: Fail to add null value in not null attribute f2 SELECT * FROM serialTest; f1 | f2 -------+----- @@ -151,13 +151,3 @@ 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; diff --git a/src/test/regress/expected/domain.out b/src/test/regress/expected/domain.out index c5615b5757..7127215869 100644 --- a/src/test/regress/expected/domain.out +++ b/src/test/regress/expected/domain.out @@ -88,14 +88,14 @@ create table nulltest , col4 dnull ); INSERT INTO nulltest DEFAULT VALUES; -ERROR: ExecInsert: Fail to add null value in not null attribute col1 +ERROR: ExecAppend: 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: ExecInsert: Fail to add null value in not null attribute col1 +ERROR: ExecAppend: Fail to add null value in not null attribute col1 INSERT INTO nulltest values ('a', NULL, 'c', 'd'); -ERROR: ExecInsert: Fail to add null value in not null attribute col2 +ERROR: ExecAppend: Fail to add null value in not null attribute col2 INSERT INTO nulltest values ('a', 'b', NULL, 'd'); -ERROR: ExecInsert: Fail to add null value in not null attribute col3 +ERROR: ExecAppend: 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 diff --git a/src/test/regress/expected/insert.out b/src/test/regress/expected/insert.out index 1a5225b0a3..e4ecf93417 100644 --- a/src/test/regress/expected/insert.out +++ b/src/test/regress/expected/insert.out @@ -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: ExecInsert: Fail to add null value in not null attribute col2 +ERROR: ExecAppend: 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'); diff --git a/src/test/regress/expected/select_having.out b/src/test/regress/expected/select_having.out index 29321e4414..3f069996fc 100644 --- a/src/test/regress/expected/select_having.out +++ b/src/test/regress/expected/select_having.out @@ -21,15 +21,6 @@ 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 diff --git a/src/test/regress/output/constraints.source b/src/test/regress/output/constraints.source index 3dafd9a877..8986118fd4 100644 --- a/src/test/regress/output/constraints.source +++ b/src/test/regress/output/constraints.source @@ -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: ExecInsert: rejected due to CHECK constraint check_con +ERROR: ExecAppend: rejected due to CHECK constraint check_con INSERT INTO CHECK_TBL VALUES (2); -ERROR: ExecInsert: rejected due to CHECK constraint check_con +ERROR: ExecAppend: rejected due to CHECK constraint check_con INSERT INTO CHECK_TBL VALUES (6); INSERT INTO CHECK_TBL VALUES (1); -ERROR: ExecInsert: rejected due to CHECK constraint check_con +ERROR: ExecAppend: 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: ExecInsert: rejected due to CHECK constraint sequence_con +ERROR: ExecAppend: rejected due to CHECK constraint sequence_con INSERT INTO CHECK2_TBL VALUES (5, 'z check failed', 10); -ERROR: ExecInsert: rejected due to CHECK constraint sequence_con +ERROR: ExecAppend: rejected due to CHECK constraint sequence_con INSERT INTO CHECK2_TBL VALUES (0, 'check failed', -2); -ERROR: ExecInsert: rejected due to CHECK constraint sequence_con +ERROR: ExecAppend: rejected due to CHECK constraint sequence_con INSERT INTO CHECK2_TBL VALUES (6, 'check failed', 11); -ERROR: ExecInsert: rejected due to CHECK constraint sequence_con +ERROR: ExecAppend: 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: ExecInsert: rejected due to CHECK constraint insert_con +ERROR: ExecAppend: 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: ExecInsert: rejected due to CHECK constraint insert_con +ERROR: ExecAppend: rejected due to CHECK constraint insert_con INSERT INTO INSERT_TBL(y) VALUES ('Y'); INSERT INTO INSERT_TBL(x,z) VALUES (1, -2); -ERROR: ExecInsert: rejected due to CHECK constraint $2 +ERROR: ExecAppend: 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: ExecInsert: rejected due to CHECK constraint insert_con +ERROR: ExecAppend: 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: ExecInsert: rejected due to CHECK constraint $2 +ERROR: ExecAppend: rejected due to CHECK constraint $2 INSERT INTO INSERT_TBL(x,y) VALUES (5, 'check failed'); -ERROR: ExecInsert: rejected due to CHECK constraint insert_con +ERROR: ExecAppend: 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: ExecInsert: rejected due to CHECK constraint insert_con +ERROR: ExecAppend: 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: ExecInsert: rejected due to CHECK constraint insert_child_cy +ERROR: ExecAppend: rejected due to CHECK constraint insert_child_cy INSERT INTO INSERT_CHILD(x,z,cy) VALUES (6,-7,7); -ERROR: ExecInsert: rejected due to CHECK constraint $1 +ERROR: ExecAppend: rejected due to CHECK constraint $1 INSERT INTO INSERT_CHILD(x,y,z,cy) VALUES (6,'check failed',-6,7); -ERROR: ExecInsert: rejected due to CHECK constraint insert_con +ERROR: ExecAppend: 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: ExecInsert: rejected due to CHECK constraint insert_con +ERROR: ExecAppend: 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: ExecUpdate: rejected due to CHECK constraint insert_con +ERROR: ExecReplace: 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: ExecInsert: Fail to add null value in not null attribute i +ERROR: ExecAppend: 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: ExecInsert: Fail to add null value in not null attribute i +ERROR: ExecAppend: Fail to add null value in not null attribute i SELECT '' AS three, * FROM PRIMARY_TBL; three | i | t -------+---+------- diff --git a/src/test/regress/sql/create_misc.sql b/src/test/regress/sql/create_misc.sql index 2277d5c8b2..078450a754 100644 --- a/src/test/regress/sql/create_misc.sql +++ b/src/test/regress/sql/create_misc.sql @@ -217,10 +217,3 @@ 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; diff --git a/src/test/regress/sql/select_having.sql b/src/test/regress/sql/select_having.sql index 28b22d9859..44b0329ee5 100644 --- a/src/test/regress/sql/select_having.sql +++ b/src/test/regress/sql/select_having.sql @@ -18,10 +18,6 @@ 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);