[PyGreSQL] [CVS] Change to pygresql: pgmodule.c

D'Arcy J.M. Cain darcy at druid.net
Fri Oct 12 08:20:00 EDT 2007


Update of /usr/cvs/Public/pygresql/module
In directory druid.net:/tmp/cvs-serv27386/module

Modified Files:
	pgmodule.c 
Log Message:
Raise error when direct copy fails.  From Carl Staelin.


To see the diffs for this commit:
   http://www.druid.net/pygresql/viewcvs.cgi/cvs/pygresql/module/pgmodule.c.diff?r1=1.75&r2=1.76

Index: pgmodule.c
===================================================================
RCS file: /usr/cvs/Public/pygresql/module/pgmodule.c,v
retrieving revision 1.75
retrieving revision 1.76
diff -u -p -u -r1.75 -r1.76
--- pgmodule.c	24 Feb 2007 07:38:59 -0000	1.75
+++ pgmodule.c	12 Oct 2007 12:20:00 -0000	1.76
@@ -1,5 +1,5 @@
 /*
- * $Id: pgmodule.c,v 1.75 2007/02/24 07:38:59 cito Exp $
+ * $Id: pgmodule.c,v 1.76 2007/10/12 12:20:00 darcy Exp $
  * PyGres, version 2.2 A Python interface for PostgreSQL database. Written by
  * D'Arcy J.M. Cain, (darcy at druid.net).  Based heavily on code written by
  * Pascal Andre, andre at chimay.via.ecp.fr. Copyright (c) 1995, Pascal Andre
@@ -2336,7 +2336,11 @@ pg_putline(pgobject * self, PyObject * a
 	}
 
 	/* sends line to backend */
-	PQputline(self->cnx, line);
+	if (PQputline(self->cnx, line))
+	{
+		PyErr_SetString(PyExc_IOError, PQerrorMessage(self->cnx));
+		return NULL;
+	}
 	Py_INCREF(Py_None);
 	return Py_None;
 }
@@ -2406,7 +2410,11 @@ pg_endcopy(pgobject * self, PyObject * a
 	}
 
 	/* ends direct copy */
-	PQendcopy(self->cnx);
+	if (PQendcopy(self->cnx))
+	{
+		PyErr_SetString(PyExc_IOError, PQerrorMessage(self->cnx));
+		return NULL;
+	}
 	Py_INCREF(Py_None);
 	return Py_None;
 }
@@ -2619,12 +2627,31 @@ pg_inserttable(pgobject * self, PyObject
 		*bufpt++ = '\n'; *bufpt = '\0';
 
 		/* sends data */
-		PQputline(self->cnx, buffer);
+		if (PQputline(self->cnx, buffer))
+		{
+			PyErr_SetString(PyExc_IOError, PQerrorMessage(self->cnx));
+			PQendcopy(self->cnx);
+			free(buffer);
+			return NULL;
+		}
 	}
 
 	/* ends query */
-	PQputline(self->cnx, "\\.\n");
-	PQendcopy(self->cnx);
+	if (PQputline(self->cnx, "\\.\n"))
+	{
+		PyErr_SetString(PyExc_IOError, PQerrorMessage(self->cnx));
+		PQendcopy(self->cnx);
+		free(buffer);
+		return NULL;
+	}
+
+	if (PQendcopy(self->cnx))
+	{
+		PyErr_SetString(PyExc_IOError, PQerrorMessage(self->cnx));
+		free(buffer);
+		return NULL;
+	}
+
 	free(buffer);
 
 	/* no error : returns nothing */



More information about the PyGreSQL mailing list