Reports missing values as bad.
BAD: INSERT INTO tab (col1, col2) VALUES ('val1'); GOOD: INSERT INTO tab (col1, col2) VALUES ('val1', 'val2'); Regress tests against DEFAULT and normal values as they're managed slightly different. Rod Taylor
This commit is contained in:
parent
e975123454
commit
dd4ca824cc
@ -6,7 +6,7 @@
|
|||||||
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.231 2002/04/17 20:57:56 tgl Exp $
|
* $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.232 2002/04/24 02:22:54 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -547,10 +547,12 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* XXX It is possible that the targetlist has fewer entries than were
|
* Ensure that the targetlist has the same number of entries
|
||||||
* in the columns list. We do not consider this an error. Perhaps we
|
* that were present in the columns list. Don't do the check
|
||||||
* should, if the columns list was explicitly given?
|
* for select statements.
|
||||||
*/
|
*/
|
||||||
|
if (stmt->cols != NIL && (icolumns != NIL || attnos != NIL))
|
||||||
|
elog(ERROR, "INSERT has more target columns than expressions");
|
||||||
|
|
||||||
/* done building the range table and jointree */
|
/* done building the range table and jointree */
|
||||||
qry->rtable = pstate->p_rtable;
|
qry->rtable = pstate->p_rtable;
|
||||||
@ -3247,7 +3249,7 @@ analyzeCreateSchemaStmt(CreateSchemaStmt *stmt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result = NIL;
|
result = NIL;
|
||||||
result = nconc(result, cxt.tables);
|
result = nconc(result, cxt.tables);
|
||||||
result = nconc(result, cxt.views);
|
result = nconc(result, cxt.views);
|
||||||
result = nconc(result, cxt.grants);
|
result = nconc(result, cxt.grants);
|
||||||
|
@ -17,4 +17,24 @@ select * from inserttest;
|
|||||||
| 7 | testing
|
| 7 | testing
|
||||||
(4 rows)
|
(4 rows)
|
||||||
|
|
||||||
|
--
|
||||||
|
-- insert with similar expression / target_list values (all fail)
|
||||||
|
--
|
||||||
|
insert into inserttest (col1, col2, col3) values (DEFAULT, DEFAULT);
|
||||||
|
ERROR: INSERT has more target columns than expressions
|
||||||
|
insert into inserttest (col1, col2, col3) values (1, 2);
|
||||||
|
ERROR: INSERT has more target columns than expressions
|
||||||
|
insert into inserttest (col1) values (1, 2);
|
||||||
|
ERROR: INSERT has more expressions than target columns
|
||||||
|
insert into inserttest (col1) values (DEFAULT, DEFAULT);
|
||||||
|
ERROR: INSERT has more expressions than target columns
|
||||||
|
select * from inserttest;
|
||||||
|
col1 | col2 | col3
|
||||||
|
------+------+---------
|
||||||
|
| 3 | testing
|
||||||
|
| 5 | testing
|
||||||
|
| 5 | test
|
||||||
|
| 7 | testing
|
||||||
|
(4 rows)
|
||||||
|
|
||||||
drop table inserttest;
|
drop table inserttest;
|
||||||
|
@ -8,5 +8,15 @@ insert into inserttest (col1, col2, col3) values (DEFAULT, 5, DEFAULT);
|
|||||||
insert into inserttest values (DEFAULT, 5, 'test');
|
insert into inserttest values (DEFAULT, 5, 'test');
|
||||||
insert into inserttest values (DEFAULT, 7);
|
insert into inserttest values (DEFAULT, 7);
|
||||||
|
|
||||||
|
select * from inserttest;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- insert with similar expression / target_list values (all fail)
|
||||||
|
--
|
||||||
|
insert into inserttest (col1, col2, col3) values (DEFAULT, DEFAULT);
|
||||||
|
insert into inserttest (col1, col2, col3) values (1, 2);
|
||||||
|
insert into inserttest (col1) values (1, 2);
|
||||||
|
insert into inserttest (col1) values (DEFAULT, DEFAULT);
|
||||||
|
|
||||||
select * from inserttest;
|
select * from inserttest;
|
||||||
drop table inserttest;
|
drop table inserttest;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user