Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
e2c00704
Commit
e2c00704
authored
Jun 25, 2002
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Back out cleanup patch. Got old version and needs work.
Neil Conway
parent
ed275aea
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
98 additions
and
125 deletions
+98
-125
src/backend/executor/execMain.c
src/backend/executor/execMain.c
+41
-37
src/backend/executor/execUtils.c
src/backend/executor/execUtils.c
+2
-2
src/backend/optimizer/path/costsize.c
src/backend/optimizer/path/costsize.c
+6
-6
src/backend/optimizer/prep/_deadcode/prepkeyset.c
src/backend/optimizer/prep/_deadcode/prepkeyset.c
+8
-9
src/include/executor/executor.h
src/include/executor/executor.h
+2
-2
src/test/regress/expected/alter_table.out
src/test/regress/expected/alter_table.out
+12
-12
src/test/regress/expected/create_misc.out
src/test/regress/expected/create_misc.out
+1
-11
src/test/regress/expected/domain.out
src/test/regress/expected/domain.out
+4
-4
src/test/regress/expected/insert.out
src/test/regress/expected/insert.out
+1
-1
src/test/regress/expected/select_having.out
src/test/regress/expected/select_having.out
+0
-9
src/test/regress/output/constraints.source
src/test/regress/output/constraints.source
+21
-21
src/test/regress/sql/create_misc.sql
src/test/regress/sql/create_misc.sql
+0
-7
src/test/regress/sql/select_having.sql
src/test/regress/sql/select_having.sql
+0
-4
No files found.
src/backend/executor/execMain.c
View file @
e2c00704
...
...
@@ -27,7 +27,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.16
6 2002/06/25 17:27:2
0 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.16
7 2002/06/25 17:58:1
0 momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -62,14 +62,14 @@ static TupleTableSlot *ExecutePlan(EState *estate, Plan *plan,
long
numberTuples
,
ScanDirection
direction
,
DestReceiver
*
destfunc
);
static
void
Exec
Select
(
TupleTableSlot
*
slot
,
static
void
Exec
Retrieve
(
TupleTableSlot
*
slot
,
DestReceiver
*
destfunc
,
EState
*
estate
);
static
void
Exec
Insert
(
TupleTableSlot
*
slot
,
ItemPointer
tupleid
,
static
void
Exec
Append
(
TupleTableSlot
*
slot
,
ItemPointer
tupleid
,
EState
*
estate
);
static
void
ExecDelete
(
TupleTableSlot
*
slot
,
ItemPointer
tupleid
,
EState
*
estate
);
static
void
Exec
Updat
e
(
TupleTableSlot
*
slot
,
ItemPointer
tupleid
,
static
void
Exec
Replac
e
(
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
:
Exec
Insert
(
slot
,
tupleid
,
estate
);
Exec
Append
(
slot
,
tupleid
,
estate
);
result
=
NULL
;
break
;
...
...
@@ -1097,7 +1100,7 @@ lnext: ;
break
;
case
CMD_UPDATE
:
Exec
Updat
e
(
slot
,
tupleid
,
estate
);
Exec
Replac
e
(
slot
,
tupleid
,
estate
);
result
=
NULL
;
break
;
...
...
@@ -1118,23 +1121,23 @@ 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
;
}
/* ----------------------------------------------------------------
* Exec
Select
* Exec
Retrieve
*
*
SELECT
s are easy.. we just pass the tuple to the appropriate
*
RETRIEVE
s 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
Exec
Select
(
TupleTableSlot
*
slot
,
Exec
Retrieve
(
TupleTableSlot
*
slot
,
DestReceiver
*
destfunc
,
EState
*
estate
)
{
...
...
@@ -1166,15 +1169,16 @@ ExecSelect(TupleTableSlot *slot,
}
/* ----------------------------------------------------------------
* Exec
Insert
* Exec
Append
*
*
INSERT
s are trickier.. we have to insert the tuple into
*
APPEND
s are trickier.. we have to insert the tuple into
* the base relation and insert appropriate tuples into the
* index relations.
* ----------------------------------------------------------------
*/
static
void
Exec
Insert
(
TupleTableSlot
*
slot
,
Exec
Append
(
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
(
"Exec
Insert
"
,
resultRelInfo
,
slot
,
estate
);
ExecConstraints
(
"Exec
Append
"
,
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:;
}
/* ----------------------------------------------------------------
* Exec
Updat
e
* Exec
Replac
e
*
* note: we can't run
UPDATE
queries with transactions
* off because
UPDATEs are actually INSERT
s and our
* scan will mistakenly loop forever,
updat
ing the tuple
* it just
insert
ed.. This should be fixed but until it
* note: we can't run
replace
queries with transactions
* off because
replaces are actually append
s and our
* scan will mistakenly loop forever,
replac
ing the tuple
* it just
append
ed.. 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
Exec
Updat
e
(
TupleTableSlot
*
slot
,
Exec
Replac
e
(
TupleTableSlot
*
slot
,
ItemPointer
tupleid
,
EState
*
estate
)
{
...
...
@@ -1369,7 +1373,7 @@ ExecUpdate(TupleTableSlot *slot,
*/
if
(
IsBootstrapProcessingMode
())
{
elog
(
WARNING
,
"Exec
Update: UPDATE
can't run without transactions"
);
elog
(
WARNING
,
"Exec
Replace: replace
can't run without transactions"
);
return
;
}
...
...
@@ -1420,7 +1424,7 @@ ExecUpdate(TupleTableSlot *slot,
*/
lreplace:
;
if
(
resultRelationDesc
->
rd_att
->
constr
)
ExecConstraints
(
"Exec
Updat
e"
,
resultRelInfo
,
slot
,
estate
);
ExecConstraints
(
"Exec
Replac
e"
,
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 INSERT
s and index
* This is because
replaces are actually deletes and insert
s 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
insert
ing a new tuple to the relation. As a side effect,
* and then
append
ing 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
(
c
onst
c
har
*
caller
,
ResultRelInfo
*
resultRelInfo
,
ExecConstraints
(
char
*
caller
,
ResultRelInfo
*
resultRelInfo
,
TupleTableSlot
*
slot
,
EState
*
estate
)
{
Relation
rel
=
resultRelInfo
->
ri_RelationDesc
;
...
...
src/backend/executor/execUtils.c
View file @
e2c00704
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.8
4 2002/06/25 17:27:2
0 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.8
5 2002/06/25 17:58:1
0 momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -18,7 +18,7 @@
*
* ExecOpenIndices \
* ExecCloseIndices | referenced by InitPlan, EndPlan,
* ExecInsertIndexTuples / Exec
Insert, ExecUpdat
e
* ExecInsertIndexTuples / Exec
Append, ExecReplac
e
*
* RegisterExprContextCallback Register function shutdown callback
* UnregisterExprContextCallback Deregister function shutdown callback
...
...
src/backend/optimizer/path/costsize.c
View file @
e2c00704
...
...
@@ -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.8
6 2002/06/25 17:27:2
0 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/costsize.c,v 1.8
7 2002/06/25 17:58:1
0 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 rel
pages
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
...
...
src/backend/optimizer/prep/_deadcode/prepkeyset.c
View file @
e2c00704
/*-------------------------------------------------------------------------
*
* prepkeyset.c
* Special prep
aration for keyset queries (KSQO)
.
* Special prep
eration 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 expon
e
ntial
* The primary use of this transformation is to avoid the expon
r
ntial
* 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
)
...
...
src/include/executor/executor.h
View file @
e2c00704
...
...
@@ -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.6
7 2002/06/25 17:27:2
0 momjian Exp $
* $Id: executor.h,v 1.6
8 2002/06/25 17:58:1
0 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
(
c
onst
c
har
*
caller
,
ResultRelInfo
*
resultRelInfo
,
extern
void
ExecConstraints
(
char
*
caller
,
ResultRelInfo
*
resultRelInfo
,
TupleTableSlot
*
slot
,
EState
*
estate
);
extern
TupleTableSlot
*
EvalPlanQual
(
EState
*
estate
,
Index
rti
,
ItemPointer
tid
);
...
...
src/test/regress/expected/alter_table.out
View file @
e2c00704
...
...
@@ -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: Exec
Insert
: rejected due to CHECK constraint atacc_test1
ERROR: Exec
Append
: 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: Exec
Insert
: rejected due to CHECK constraint atacc_test1
ERROR: Exec
Append
: 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: Exec
Insert
: rejected due to CHECK constraint $2
ERROR: Exec
Append
: 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: Exec
Insert
: rejected due to CHECK constraint foo
ERROR: Exec
Append
: 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: Exec
Insert
: rejected due to CHECK constraint foo
ERROR: Exec
Append
: 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: Exec
Insert
: rejected due to CHECK constraint foo
ERROR: Exec
Append
: 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: Exec
Insert
: Fail to add null value in not null attribute test
ERROR: Exec
Append
: 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: Exec
Insert
: Fail to add null value in not null attribute a
ERROR: Exec
Append
: Fail to add null value in not null attribute a
insert into child (a, b) values (NULL, 'foo');
ERROR: Exec
Insert
: Fail to add null value in not null attribute a
ERROR: Exec
Append
: 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: Exec
Insert
: Fail to add null value in not null attribute a
ERROR: Exec
Append
: 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: Exec
Insert
: Fail to add null value in not null attribute a
ERROR: Exec
Append
: 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: Exec
Insert
: Fail to add null value in not null attribute a
ERROR: Exec
Append
: Fail to add null value in not null attribute a
drop table child;
drop table parent;
-- test setting and removing default values
...
...
src/test/regress/expected/create_misc.out
View file @
e2c00704
...
...
@@ -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: Exec
Insert
: Fail to add null value in not null attribute f2
ERROR: Exec
Append
: 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;
src/test/regress/expected/domain.out
View file @
e2c00704
...
...
@@ -88,14 +88,14 @@ create table nulltest
, col4 dnull
);
INSERT INTO nulltest DEFAULT VALUES;
ERROR: Exec
Insert
: Fail to add null value in not null attribute col1
ERROR: Exec
Append
: 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: Exec
Insert
: Fail to add null value in not null attribute col1
ERROR: Exec
Append
: Fail to add null value in not null attribute col1
INSERT INTO nulltest values ('a', NULL, 'c', 'd');
ERROR: Exec
Insert
: Fail to add null value in not null attribute col2
ERROR: Exec
Append
: Fail to add null value in not null attribute col2
INSERT INTO nulltest values ('a', 'b', NULL, 'd');
ERROR: Exec
Insert
: Fail to add null value in not null attribute col3
ERROR: Exec
Append
: 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
...
...
src/test/regress/expected/insert.out
View file @
e2c00704
...
...
@@ -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: Exec
Insert
: Fail to add null value in not null attribute col2
ERROR: Exec
Append
: 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');
...
...
src/test/regress/expected/select_having.out
View file @
e2c00704
...
...
@@ -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
...
...
src/test/regress/output/constraints.source
View file @
e2c00704
...
...
@@ -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: Exec
Insert
: rejected due to CHECK constraint check_con
ERROR: Exec
Append
: rejected due to CHECK constraint check_con
INSERT INTO CHECK_TBL VALUES (2);
ERROR: Exec
Insert
: rejected due to CHECK constraint check_con
ERROR: Exec
Append
: rejected due to CHECK constraint check_con
INSERT INTO CHECK_TBL VALUES (6);
INSERT INTO CHECK_TBL VALUES (1);
ERROR: Exec
Insert
: rejected due to CHECK constraint check_con
ERROR: Exec
Append
: 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: Exec
Insert
: rejected due to CHECK constraint sequence_con
ERROR: Exec
Append
: rejected due to CHECK constraint sequence_con
INSERT INTO CHECK2_TBL VALUES (5, 'z check failed', 10);
ERROR: Exec
Insert
: rejected due to CHECK constraint sequence_con
ERROR: Exec
Append
: rejected due to CHECK constraint sequence_con
INSERT INTO CHECK2_TBL VALUES (0, 'check failed', -2);
ERROR: Exec
Insert
: rejected due to CHECK constraint sequence_con
ERROR: Exec
Append
: rejected due to CHECK constraint sequence_con
INSERT INTO CHECK2_TBL VALUES (6, 'check failed', 11);
ERROR: Exec
Insert
: rejected due to CHECK constraint sequence_con
ERROR: Exec
Append
: 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: Exec
Insert
: rejected due to CHECK constraint insert_con
ERROR: Exec
Append
: 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: Exec
Insert
: rejected due to CHECK constraint insert_con
ERROR: Exec
Append
: rejected due to CHECK constraint insert_con
INSERT INTO INSERT_TBL(y) VALUES ('Y');
INSERT INTO INSERT_TBL(x,z) VALUES (1, -2);
ERROR: Exec
Insert
: rejected due to CHECK constraint $2
ERROR: Exec
Append
: 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: Exec
Insert
: rejected due to CHECK constraint insert_con
ERROR: Exec
Append
: 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: Exec
Insert
: rejected due to CHECK constraint $2
ERROR: Exec
Append
: rejected due to CHECK constraint $2
INSERT INTO INSERT_TBL(x,y) VALUES (5, 'check failed');
ERROR: Exec
Insert
: rejected due to CHECK constraint insert_con
ERROR: Exec
Append
: 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: Exec
Insert
: rejected due to CHECK constraint insert_con
ERROR: Exec
Append
: 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: Exec
Insert
: rejected due to CHECK constraint insert_child_cy
ERROR: Exec
Append
: rejected due to CHECK constraint insert_child_cy
INSERT INTO INSERT_CHILD(x,z,cy) VALUES (6,-7,7);
ERROR: Exec
Insert
: rejected due to CHECK constraint $1
ERROR: Exec
Append
: rejected due to CHECK constraint $1
INSERT INTO INSERT_CHILD(x,y,z,cy) VALUES (6,'check failed',-6,7);
ERROR: Exec
Insert
: rejected due to CHECK constraint insert_con
ERROR: Exec
Append
: 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: Exec
Insert
: rejected due to CHECK constraint insert_con
ERROR: Exec
Append
: 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: Exec
Updat
e: rejected due to CHECK constraint insert_con
ERROR: Exec
Replac
e: 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: Exec
Insert
: Fail to add null value in not null attribute i
ERROR: Exec
Append
: 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: Exec
Insert
: Fail to add null value in not null attribute i
ERROR: Exec
Append
: Fail to add null value in not null attribute i
SELECT '' AS three, * FROM PRIMARY_TBL;
three | i | t
-------+---+-------
...
...
src/test/regress/sql/create_misc.sql
View file @
e2c00704
...
...
@@ -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
;
src/test/regress/sql/select_having.sql
View file @
e2c00704
...
...
@@ -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
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment