Index: PgSqlCommand.cs
===================================================================
RCS file: /mono/mcs/class/Mono.Data.PostgreSqlClient/Mono.Data.PostgreSqlClient/PgSqlCommand.cs,v
retrieving revision 1.31
diff -u -r1.31 PgSqlCommand.cs
--- PgSqlCommand.cs	6 Dec 2002 12:34:22 -0000	1.31
+++ PgSqlCommand.cs	8 Jan 2003 23:23:35 -0000
@@ -886,8 +886,9 @@
 					schemaRow["IsHidden"] = false;
 					schemaRow["IsLong"] = false;
 					schemaRow["IsReadOnly"] = false;
-					schemaRow.AcceptChanges();
+
 					dataTableSchema.Rows.Add (schemaRow);
+					schemaRow.AcceptChanges();
 				}
 				
 #if DEBUG_SqlCommand
Index: PgSqlConnection.cs
===================================================================
RCS file: /mono/mcs/class/Mono.Data.PostgreSqlClient/Mono.Data.PostgreSqlClient/PgSqlConnection.cs,v
retrieving revision 1.22
diff -u -r1.22 PgSqlConnection.cs
--- PgSqlConnection.cs	14 Nov 2002 12:40:40 -0000	1.22
+++ PgSqlConnection.cs	8 Jan 2003 23:23:36 -0000
@@ -214,7 +214,7 @@
 					"ConnnectionState is already Open");
 
 			ConnStatusType connStatus;
-
+			
 			// FIXME: check to make sure we have 
 			//        everything to connect,
 			//        otherwise, throw an exception
Index: PostgresLibrary.cs
===================================================================
RCS file: /mono/mcs/class/Mono.Data.PostgreSqlClient/Mono.Data.PostgreSqlClient/PostgresLibrary.cs,v
retrieving revision 1.14
diff -u -r1.14 PostgresLibrary.cs
--- PostgresLibrary.cs	6 Dec 2002 12:34:22 -0000	1.14
+++ PostgresLibrary.cs	8 Jan 2003 23:23:36 -0000
@@ -117,41 +117,45 @@
 		// int PQrequestCancel(PGconn *conn);
 
 		[DllImport("pq")]
-		public static extern string PQdb (IntPtr conn);
+		private static extern IntPtr PQdb0 (IntPtr conn);
 		// char *PQdb(const PGconn *conn);
 
 		[DllImport("pq")]
-		public static extern string PQuser (IntPtr conn);
+		private static extern IntPtr PQuser0 (IntPtr conn);
 		// char *PQuser(const PGconn *conn);
 
 		[DllImport("pq")]
-		public static extern string PQpass (IntPtr conn);
+		private static extern IntPtr PQpass0 (IntPtr conn);
 		// char *PQpass(const PGconn *conn);
 
 		[DllImport("pq")]
-		public static extern string PQhost (IntPtr conn);
+		private static extern IntPtr PQhost0 (IntPtr conn);
 		// char *PQhost(const PGconn *conn);
 
 		[DllImport("pq")]
-		public static extern string PQport (IntPtr conn);
+		private static extern IntPtr PQport0 (IntPtr conn);
 		// char *PQport(const PGconn *conn);
 
 		[DllImport("pq")]
-		public static extern string PQtty (IntPtr conn);
+		private static extern IntPtr PQtty0 (IntPtr conn);
 		// char *PQtty(const PGconn *conn);
 
 		[DllImport("pq")]
-		public static extern string PQoptions (IntPtr conn);
+		private static extern IntPtr PQoptions0 (IntPtr conn);
 		// char *PQoptions(const PGconn *conn);
 
 		[DllImport("pq")]
 		public static extern ConnStatusType PQstatus (IntPtr conn);
 		// ConnStatusType PQstatus(const PGconn *conn);
 
-		[DllImport("pq")]
-		public static extern string PQerrorMessage (IntPtr conn);
+		[DllImport("pq",EntryPoint="PQerrorMessage")]
+		private static extern IntPtr PQerrorMessage0 (IntPtr conn);
 		// char *PQerrorMessage(const PGconn *conn);
 
+		public static string PQerrorMessage(IntPtr conn)
+		{
+			return Marshal.PtrToStringAnsi(PQerrorMessage0(conn));
+		}
 		[DllImport("pq")]
 		public static extern int PQsocket (IntPtr conn);
 		// int PQsocket(const PGconn *conn);
@@ -290,12 +294,22 @@
 		public static extern ExecStatusType PQresultStatus (IntPtr res);
 		// ExecStatusType PQresultStatus(const PGresult *res);
 
-		[DllImport("pq")]
-		public static extern string PQresStatus (ExecStatusType status);
+		[DllImport("pq",EntryPoint="PQresStatus")]
+		private static extern IntPtr PQresStatus0 (ExecStatusType status);
 		// char *PQresStatus(ExecStatusType status);
 
-		[DllImport("pq")]
-		public static extern string PQresultErrorMessage (IntPtr res);
+		public static string PQresStatus(ExecStatusType status)
+		{
+			return Marshal.PtrToStringAnsi(PQresStatus0(status));
+		}
+
+		[DllImport("pq",EntryPoint="PQresultErrorMessage")]
+		private static extern IntPtr PQresultErrorMessage0 (IntPtr res);
+
+		public static string PQresultErrorMessage(IntPtr res)
+		{
+			return Marshal.PtrToStringAnsi(PQresultErrorMessage0(res));
+		}
 		// char *PQresultErrorMessage(const PGresult *res);
 
 		[DllImport("pq")]
@@ -310,12 +324,17 @@
 		public static extern int PQbinaryTuples (IntPtr res);
 		// int PQbinaryTuples(const PGresult *res);
 
-		[DllImport("pq")]
-		public static extern string PQfname (IntPtr res,
+		[DllImport("pq",EntryPoint="PQfname")]
+		private static extern IntPtr PQfname0 (IntPtr res,
                         int field_num);
 		// char *PQfname(const PGresult *res,
                 //      int field_num);
 
+		public static string PQfname(IntPtr res, int field_num)
+		{
+			return Marshal.PtrToStringAnsi(PQfname0(res, field_num));
+		}
+
 		[DllImport("pq")]
 		public static extern int PQfnumber (IntPtr res,
                         string field_name);
@@ -339,27 +358,37 @@
 		// int PQfmod(const PGresult *res, int field_num);
 
 		[DllImport("pq")]
-		public static extern string PQcmdStatus (IntPtr res);
+		private static extern IntPtr PQcmdStatus0 (IntPtr res);
 		// char *PQcmdStatus(PGresult *res);
 
 		[DllImport("pq")]
-		public static extern string PQoidStatus (IntPtr res);
+		private static extern IntPtr PQoidStatus0 (IntPtr res);
 		// char *PQoidStatus(const PGresult *res);
 
 		[DllImport("pq")]
 		public static extern int PQoidValue (IntPtr res);
 		// Oid PQoidValue(const PGresult *res);
 
-		[DllImport("pq")]
-		public static extern string PQcmdTuples (IntPtr res);
+		[DllImport("pq",EntryPoint="PQcmdTuples")]
+		private static extern IntPtr PQcmdTuples0 (IntPtr res);
+
+		public static string PQcmdTuples(IntPtr res)
+		{
+			return Marshal.PtrToStringAnsi(PQcmdTuples0(res));
+		}
 		// char *PQcmdTuples(PGresult *res);
 
-		[DllImport("pq")]
-		public static extern string PQgetvalue (IntPtr res,
+		[DllImport("pq",EntryPoint="PQgetvalue")]
+		private static extern IntPtr PQgetvalue0 (IntPtr res,
                         int tup_num, int field_num);
 		// char *PQgetvalue(const PGresult *res,
                 //      int tup_num, int field_num);
 
+		public static string PQgetvalue(IntPtr res,
+			int tup_num, int field_num)
+		{
+			return Marshal.PtrToStringAnsi(PQgetvalue0(res, tup_num, field_num));
+		}
 		[DllImport("pq")]
 		public static extern int PQgetlength (IntPtr res,
                         int tup_num, int field_num);
