diff --git a/src/backend/access/common/reloptions.c b/src/backend/access/common/reloptions.c
index 4adf4666e776a0035661a7a0d19618e4f06fd4b4..9f40fc59d3fd2b56e8cd6cda59a5a4db467607c9 100644
--- a/src/backend/access/common/reloptions.c
+++ b/src/backend/access/common/reloptions.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/access/common/reloptions.c,v 1.4 2007/02/27 23:48:06 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/access/common/reloptions.c,v 1.5 2007/06/03 22:16:02 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -206,7 +206,7 @@ parseRelOptions(Datum options, int numkeywords, const char *const * keywords,
 				if (values[j] && validate)
 					ereport(ERROR,
 							(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-							 errmsg("duplicate parameter \"%s\"",
+							 errmsg("parameter \"%s\" specified more than once",
 									keywords[j])));
 				value_len = text_len - kw_len - 1;
 				value = (char *) palloc(value_len + 1);
diff --git a/src/backend/access/nbtree/nbtinsert.c b/src/backend/access/nbtree/nbtinsert.c
index 5f8be398ca11d755b43887a417e854295b0182b7..7d12c9921f6e51da48c00fd12e14658109d10d4f 100644
--- a/src/backend/access/nbtree/nbtinsert.c
+++ b/src/backend/access/nbtree/nbtinsert.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.157 2007/05/20 21:08:19 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.158 2007/06/03 22:16:02 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -287,7 +287,7 @@ _bt_check_unique(Relation rel, IndexTuple itup, Relation heapRel,
 
 					ereport(ERROR,
 							(errcode(ERRCODE_UNIQUE_VIOLATION),
-					errmsg("duplicate key violates unique constraint \"%s\"",
+					errmsg("duplicate key value violates unique constraint \"%s\"",
 						   RelationGetRelationName(rel))));
 				}
 				else if (htup.t_data != NULL)
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index 005ed63475b59d774b60b9c7a510cdb968b4736f..f1e3ee2a1efa1846d513f960b578eb0bc3dfc15c 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/catalog/heap.c,v 1.321 2007/05/14 20:24:41 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/catalog/heap.c,v 1.322 2007/06/03 22:16:02 petere Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -375,7 +375,7 @@ CheckAttributeNamesTypes(TupleDesc tupdesc, char relkind)
 					   NameStr(tupdesc->attrs[i]->attname)) == 0)
 				ereport(ERROR,
 						(errcode(ERRCODE_DUPLICATE_COLUMN),
-						 errmsg("column name \"%s\" is duplicated",
+						 errmsg("column name \"%s\" specified more than once",
 								NameStr(tupdesc->attrs[j]->attname))));
 		}
 	}
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index f5bdc35615dc33b2b49251699c2353f0a93a154a..b9bebde8f10f58906765eac2efa72f60d2ffeaef 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.226 2007/06/03 17:06:25 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.227 2007/06/03 22:16:03 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -791,7 +791,7 @@ MergeAttributes(List *schema, List *supers, bool istemp,
 			if (strcmp(coldef->colname, restdef->colname) == 0)
 				ereport(ERROR,
 						(errcode(ERRCODE_DUPLICATE_COLUMN),
-						 errmsg("column \"%s\" duplicated",
+						 errmsg("column \"%s\" specified more than once",
 								coldef->colname)));
 		}
 	}
@@ -839,7 +839,7 @@ MergeAttributes(List *schema, List *supers, bool istemp,
 		if (list_member_oid(parentOids, RelationGetRelid(relation)))
 			ereport(ERROR,
 					(errcode(ERRCODE_DUPLICATE_TABLE),
-					 errmsg("inherited relation \"%s\" duplicated",
+					 errmsg("relation \"%s\" would be inherited from more than once",
 							parent->relname)));
 
 		parentOids = lappend_oid(parentOids, RelationGetRelid(relation));
@@ -1139,7 +1139,7 @@ add_nonduplicate_constraint(Constraint *cdef, ConstrCheck *check, int *ncheck)
 			return;				/* duplicate constraint, so ignore it */
 		ereport(ERROR,
 				(errcode(ERRCODE_DUPLICATE_OBJECT),
-				 errmsg("duplicate check constraint name \"%s\"",
+				 errmsg("check constraint name \"%s\" appears multiple times but with different expressions",
 						cdef->name)));
 	}
 	/* No match on name, so add it to array */
@@ -6013,7 +6013,7 @@ ATExecAddInherit(Relation child_rel, RangeVar *parent)
 		if (inh->inhparent == RelationGetRelid(parent_rel))
 			ereport(ERROR,
 					(errcode(ERRCODE_DUPLICATE_TABLE),
-					 errmsg("inherited relation \"%s\" duplicated",
+					 errmsg("relation \"%s\" would be inherited from more than once",
 							RelationGetRelationName(parent_rel))));
 		if (inh->inhseqno > inhseqno)
 			inhseqno = inh->inhseqno;
diff --git a/src/test/regress/expected/alter_table.out b/src/test/regress/expected/alter_table.out
index 99f0c0b04980a5898e274fde5c6178628cb8c858..bf2d66af49e5a1322231359d8c27bf964a22ab89 100644
--- a/src/test/regress/expected/alter_table.out
+++ b/src/test/regress/expected/alter_table.out
@@ -360,7 +360,7 @@ alter table atacc3 add constraint foo check (test2>0);
 alter table atacc3 inherit atacc2;
 -- fail due to duplicates and circular inheritance
 alter table atacc3 inherit atacc2;
-ERROR:  inherited relation "atacc2" duplicated
+ERROR:  relation "atacc2" would be inherited from more than once
 alter table atacc2 inherit atacc3;
 ERROR:  circular inheritance not allowed
 DETAIL:  "atacc3" is already a child of "atacc2".
@@ -402,7 +402,7 @@ NOTICE:  ALTER TABLE / ADD UNIQUE will create implicit index "atacc_test1" for t
 insert into atacc1 (test) values (2);
 -- should fail
 insert into atacc1 (test) values (2);
-ERROR:  duplicate key violates unique constraint "atacc_test1"
+ERROR:  duplicate key value violates unique constraint "atacc_test1"
 -- should succeed
 insert into atacc1 (test) values (4);
 -- try adding a unique oid constraint
@@ -437,7 +437,7 @@ NOTICE:  ALTER TABLE / ADD UNIQUE will create implicit index "atacc_test1" for t
 insert into atacc1 (test,test2) values (4,4);
 -- should fail
 insert into atacc1 (test,test2) values (4,4);
-ERROR:  duplicate key violates unique constraint "atacc_test1"
+ERROR:  duplicate key value violates unique constraint "atacc_test1"
 -- should all succeed
 insert into atacc1 (test,test2) values (4,5);
 insert into atacc1 (test,test2) values (5,4);
@@ -451,7 +451,7 @@ NOTICE:  ALTER TABLE / ADD UNIQUE will create implicit index "atacc1_test2_key"
 -- should fail for @@ second one @@
 insert into atacc1 (test2, test) values (3, 3);
 insert into atacc1 (test2, test) values (2, 3);
-ERROR:  duplicate key violates unique constraint "atacc1_test_key"
+ERROR:  duplicate key value violates unique constraint "atacc1_test_key"
 drop table atacc1;
 -- test primary key constraint adding
 create table atacc1 ( test int ) with oids;
@@ -462,7 +462,7 @@ NOTICE:  ALTER TABLE / ADD PRIMARY KEY will create implicit index "atacc_test1"
 insert into atacc1 (test) values (2);
 -- should fail
 insert into atacc1 (test) values (2);
-ERROR:  duplicate key violates unique constraint "atacc_test1"
+ERROR:  duplicate key value violates unique constraint "atacc_test1"
 -- should succeed
 insert into atacc1 (test) values (4);
 -- inserting NULL should fail
@@ -517,7 +517,7 @@ ERROR:  multiple primary keys for table "atacc1" are not allowed
 insert into atacc1 (test,test2) values (4,4);
 -- should fail
 insert into atacc1 (test,test2) values (4,4);
-ERROR:  duplicate key violates unique constraint "atacc_test1"
+ERROR:  duplicate key value violates unique constraint "atacc_test1"
 insert into atacc1 (test,test2) values (NULL,3);
 ERROR:  null value in column "test" violates not-null constraint
 insert into atacc1 (test,test2) values (3, NULL);
@@ -535,7 +535,7 @@ NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "atacc1_pkey" for
 -- only first should succeed
 insert into atacc1 (test2, test) values (3, 3);
 insert into atacc1 (test2, test) values (2, 3);
-ERROR:  duplicate key violates unique constraint "atacc1_pkey"
+ERROR:  duplicate key value violates unique constraint "atacc1_pkey"
 insert into atacc1 (test2, test) values (1, NULL);
 ERROR:  null value in column "test" violates not-null constraint
 drop table atacc1;
diff --git a/src/test/regress/expected/arrays.out b/src/test/regress/expected/arrays.out
index 936db41c4b8c93235850db561a8514f59b686ee5..0f611bf7d7821488209fa2568e59eba7da674ab7 100644
--- a/src/test/regress/expected/arrays.out
+++ b/src/test/regress/expected/arrays.out
@@ -703,7 +703,7 @@ insert into arr_tbl values ('{1,2,3}');
 insert into arr_tbl values ('{1,2}');
 -- failure expected:
 insert into arr_tbl values ('{1,2,3}');
-ERROR:  duplicate key violates unique constraint "arr_tbl_f1_key"
+ERROR:  duplicate key value violates unique constraint "arr_tbl_f1_key"
 insert into arr_tbl values ('{2,3,4}');
 insert into arr_tbl values ('{1,5,3}');
 insert into arr_tbl values ('{1,2,10}');
diff --git a/src/test/regress/expected/create_index.out b/src/test/regress/expected/create_index.out
index bd785fb8b186bb1b83d8bf136d70035c8c44bc38..adec0e6c8470fdd22b518dbb89a14fe8c4487d1b 100644
--- a/src/test/regress/expected/create_index.out
+++ b/src/test/regress/expected/create_index.out
@@ -348,7 +348,7 @@ INSERT INTO func_index_heap VALUES('AB','CDEFG');
 INSERT INTO func_index_heap VALUES('QWE','RTY');
 -- this should fail because of unique index:
 INSERT INTO func_index_heap VALUES('ABCD', 'EF');
-ERROR:  duplicate key violates unique constraint "func_index_index"
+ERROR:  duplicate key value violates unique constraint "func_index_index"
 -- but this shouldn't:
 INSERT INTO func_index_heap VALUES('QWERTY');
 --
@@ -362,7 +362,7 @@ INSERT INTO func_index_heap VALUES('AB','CDEFG');
 INSERT INTO func_index_heap VALUES('QWE','RTY');
 -- this should fail because of unique index:
 INSERT INTO func_index_heap VALUES('ABCD', 'EF');
-ERROR:  duplicate key violates unique constraint "func_index_index"
+ERROR:  duplicate key value violates unique constraint "func_index_index"
 -- but this shouldn't:
 INSERT INTO func_index_heap VALUES('QWERTY');
 --
@@ -386,7 +386,7 @@ INSERT INTO concur_heap VALUES  ('b','b');
 CREATE UNIQUE INDEX CONCURRENTLY concur_index2 ON concur_heap(f1);
 -- check if constraint is set up properly to be enforced
 INSERT INTO concur_heap VALUES ('b','x');
-ERROR:  duplicate key violates unique constraint "concur_index2"
+ERROR:  duplicate key value violates unique constraint "concur_index2"
 -- check if constraint is enforced properly at build time
 CREATE UNIQUE INDEX CONCURRENTLY concur_index3 ON concur_heap(f2);
 ERROR:  could not create unique index
diff --git a/src/test/regress/expected/inherit.out b/src/test/regress/expected/inherit.out
index f4bdb8d825503ac8231e2aea12998978e182405a..fa97f019b1d7aac435017153357b708879f7d40c 100644
--- a/src/test/regress/expected/inherit.out
+++ b/src/test/regress/expected/inherit.out
@@ -605,7 +605,7 @@ SELECT * FROM a; /* Has ee entry */
 (1 row)
 
 CREATE TABLE inhf (LIKE inhx, LIKE inhx); /* Throw error */
-ERROR:  column "xx" duplicated
+ERROR:  column "xx" specified more than once
 CREATE TABLE inhf (LIKE inhx INCLUDING DEFAULTS INCLUDING CONSTRAINTS);
 INSERT INTO inhf DEFAULT VALUES;
 SELECT * FROM inhf; /* Single entry with value 'text' */
diff --git a/src/test/regress/expected/plpgsql.out b/src/test/regress/expected/plpgsql.out
index 12a6d4e4e491762bc035c4e8ed7753441b23f922..ddb44a72527d960033065293b05aa5127df168b5 100644
--- a/src/test/regress/expected/plpgsql.out
+++ b/src/test/regress/expected/plpgsql.out
@@ -1516,7 +1516,7 @@ select * from PField_v1 where pfname = 'PF0_2' order by slotname;
 -- Finally we want errors
 --
 insert into PField values ('PF1_1', 'should fail due to unique index');
-ERROR:  duplicate key violates unique constraint "pfield_name"
+ERROR:  duplicate key value violates unique constraint "pfield_name"
 update PSlot set backlink = 'WS.not.there' where slotname = 'PS.base.a1';
 ERROR:  WS.not.there         does not exist
 CONTEXT:  PL/pgSQL function "tg_backlink_a" line 16 at assignment
@@ -1530,7 +1530,7 @@ update PSlot set slotlink = 'XX.illegal' where slotname = 'PS.base.a1';
 ERROR:  illegal slotlink beginning with XX
 CONTEXT:  PL/pgSQL function "tg_slotlink_a" line 16 at assignment
 insert into HSlot values ('HS', 'base.hub1', 1, '');
-ERROR:  duplicate key violates unique constraint "hslot_name"
+ERROR:  duplicate key value violates unique constraint "hslot_name"
 insert into HSlot values ('HS', 'base.hub1', 20, '');
 ERROR:  no manual manipulation of HSlot
 delete from HSlot;
diff --git a/src/test/regress/expected/transactions.out b/src/test/regress/expected/transactions.out
index c8fe0522bfe001b1cb4309ded045a64180d2bb4e..e956bf053a752005b90f7bb76c496072b6f17f21 100644
--- a/src/test/regress/expected/transactions.out
+++ b/src/test/regress/expected/transactions.out
@@ -463,13 +463,13 @@ BEGIN;
 NOTICE:  CREATE TABLE / UNIQUE will create implicit index "koju_a_key" for table "koju"
 		INSERT INTO koju VALUES (1);
 		INSERT INTO koju VALUES (1);
-ERROR:  duplicate key violates unique constraint "koju_a_key"
+ERROR:  duplicate key value violates unique constraint "koju_a_key"
 	rollback to x;
 	CREATE TABLE koju (a INT UNIQUE);
 NOTICE:  CREATE TABLE / UNIQUE will create implicit index "koju_a_key" for table "koju"
 	INSERT INTO koju VALUES (1);
 	INSERT INTO koju VALUES (1);
-ERROR:  duplicate key violates unique constraint "koju_a_key"
+ERROR:  duplicate key value violates unique constraint "koju_a_key"
 ROLLBACK;
 DROP TABLE foo;
 DROP TABLE baz;
diff --git a/src/test/regress/expected/uuid.out b/src/test/regress/expected/uuid.out
index 331a6de5a2ee33bbc68c18a4bbe4f106b8587068..179bf60d983d90c80760d619fe49221a106aa476 100644
--- a/src/test/regress/expected/uuid.out
+++ b/src/test/regress/expected/uuid.out
@@ -106,7 +106,7 @@ CREATE INDEX guid1_hash  ON guid1 USING HASH  (guid_field);
 CREATE UNIQUE INDEX guid1_unique_BTREE ON guid1 USING BTREE (guid_field);
 -- should fail
 INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-1111-111111111111');
-ERROR:  duplicate key violates unique constraint "guid1_unique_btree"
+ERROR:  duplicate key value violates unique constraint "guid1_unique_btree"
 -- check to see whether the new indexes are actually there
 SELECT count(*) FROM pg_class WHERE relkind='i' AND relname LIKE 'guid%';
  count 
diff --git a/src/test/regress/output/constraints.source b/src/test/regress/output/constraints.source
index e40c445014e68537a253f2da4063091b2d313d7c..654e8d995351348f4b0f442eb1f5ecf1a80e888f 100644
--- a/src/test/regress/output/constraints.source
+++ b/src/test/regress/output/constraints.source
@@ -293,7 +293,7 @@ NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "primary_tbl_pkey
 INSERT INTO PRIMARY_TBL VALUES (1, 'one');
 INSERT INTO PRIMARY_TBL VALUES (2, 'two');
 INSERT INTO PRIMARY_TBL VALUES (1, 'three');
-ERROR:  duplicate key violates unique constraint "primary_tbl_pkey"
+ERROR:  duplicate key value violates unique constraint "primary_tbl_pkey"
 INSERT INTO PRIMARY_TBL VALUES (4, 'three');
 INSERT INTO PRIMARY_TBL VALUES (5, 'one');
 INSERT INTO PRIMARY_TBL (t) VALUES ('six');
@@ -337,7 +337,7 @@ NOTICE:  CREATE TABLE / UNIQUE will create implicit index "unique_tbl_i_key" for
 INSERT INTO UNIQUE_TBL VALUES (1, 'one');
 INSERT INTO UNIQUE_TBL VALUES (2, 'two');
 INSERT INTO UNIQUE_TBL VALUES (1, 'three');
-ERROR:  duplicate key violates unique constraint "unique_tbl_i_key"
+ERROR:  duplicate key value violates unique constraint "unique_tbl_i_key"
 INSERT INTO UNIQUE_TBL VALUES (4, 'four');
 INSERT INTO UNIQUE_TBL VALUES (5, 'one');
 INSERT INTO UNIQUE_TBL (t) VALUES ('six');
@@ -361,7 +361,7 @@ INSERT INTO UNIQUE_TBL VALUES (1, 'one');
 INSERT INTO UNIQUE_TBL VALUES (2, 'two');
 INSERT INTO UNIQUE_TBL VALUES (1, 'three');
 INSERT INTO UNIQUE_TBL VALUES (1, 'one');
-ERROR:  duplicate key violates unique constraint "unique_tbl_i_key"
+ERROR:  duplicate key value violates unique constraint "unique_tbl_i_key"
 INSERT INTO UNIQUE_TBL VALUES (5, 'one');
 INSERT INTO UNIQUE_TBL (t) VALUES ('six');
 SELECT '' AS five, * FROM UNIQUE_TBL;
diff --git a/src/test/regress/output/tablespace.source b/src/test/regress/output/tablespace.source
index 8ab6b68f124ab0d56484ca940dfd7b493162fdf7..607232f5353bf8b17a2cf3fe51e87388135c672e 100644
--- a/src/test/regress/output/tablespace.source
+++ b/src/test/regress/output/tablespace.source
@@ -48,7 +48,7 @@ ALTER TABLE testschema.atable SET TABLESPACE testspace;
 ALTER INDEX testschema.anindex SET TABLESPACE testspace;
 INSERT INTO testschema.atable VALUES(3);	-- ok
 INSERT INTO testschema.atable VALUES(1);	-- fail (checks index)
-ERROR:  duplicate key violates unique constraint "anindex"
+ERROR:  duplicate key value violates unique constraint "anindex"
 SELECT COUNT(*) FROM testschema.atable;		-- checks heap
  count 
 -------