diff -U3 -r smalltalk-3.1/packages/dbd-postgresql/Connection.st smalltalk-3.1-patches/packages/dbd-postgresql/Connection.st
--- smalltalk-3.1/packages/dbd-postgresql/Connection.st	2008-09-22 18:02:23.000000000 +1000
+++ smalltalk-3.1-patches/packages/dbd-postgresql/Connection.st	2009-05-01 11:42:35.000000000 +1000
@@ -63,6 +63,24 @@
 	^ConnectionStatus at: aCode + 1
     ]
 
+    PGConnection class >> synonymousParametersToStrip [
+	<category: 'instance creation'>
+	"These are the synonymous parameters which our superclass adds and
+	 PQconnectdb does not understand"
+
+	^#('db' 'database' 'hostname').
+    ]
+
+    PGConnection class >> stripConnectParamSynonyms: aParams [
+	"PQconnectdb (C func) doesn't like superfluous arguments it doesn't
+	 understand, so strip them - otherwise we can never connect"
+
+	<category: 'instance creation'>
+	"Strip unwanted synonyms from params"
+
+	^aParams removeAllKeys: self synonymousParametersToStrip ifAbsent: [].
+    ]
+
     PGConnection class >> paramConnect: aParams user: aUserName password: aPassword [
 	"Normally you would use Connection>>connect:user:password: with a DSN
 	 specifying the appropriate driver string.
@@ -74,10 +92,10 @@
 
 	| connStr connParams handle conn connOK |
 	connParams := OrderedCollection new.
-	aParams keysAndValuesDo: [:k :v | connParams add: k , '=' , v].
+	(self stripConnectParamSynonyms: aParams) keysAndValuesDo: [:k :v | connParams add: k , '=' , v].
 	aUserName notNil ifTrue: [connParams add: 'user=' , aUserName].
 	aPassword notNil ifTrue: [connParams add: 'password=' , aPassword].
-	connStr := connParams fold: [ :a :b | a, ' ', b ].
+	connStr := connParams inject: '' into: [ :a :b | a, ' ', b ].
 	handle := PQConnection connect: connStr.
 	connOK := self connectionStatus: handle status.
 	connOK == #CONNECTION_OK 
