From: Dave Cramer Date: Thu, 21 Mar 2002 02:52:37 +0000 (+0000) Subject: modifications to the way the protocol is handled to be consistent with X-Git-Tag: REL7_3~1857 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=54cc549d8f2505fa4a3bd0aae382247497a4c613;p=postgresql modifications to the way the protocol is handled to be consistent with QueryExecutor. This includes: 1) only exit after we receive a 'Z' packet 2) append error messages to a buffer and throw the exception at the end --- diff --git a/src/interfaces/jdbc/org/postgresql/fastpath/Fastpath.java b/src/interfaces/jdbc/org/postgresql/fastpath/Fastpath.java index 5c7850147f..2581f59b52 100644 --- a/src/interfaces/jdbc/org/postgresql/fastpath/Fastpath.java +++ b/src/interfaces/jdbc/org/postgresql/fastpath/Fastpath.java @@ -98,7 +98,9 @@ public class Fastpath // Now loop, reading the results Object result = null; // our result - while (true) + StringBuffer errorMessage = null; + boolean loop = true; + while (loop) { int in = stream.ReceiveChar(); //DriverManager.println("ReceiveChar() = "+in+" '"+((char)in)+"'"); @@ -128,8 +130,10 @@ public class Fastpath //------------------------------ // Error message returned case 'E': - throw new PSQLException("postgresql.fp.error", stream.ReceiveString(conn.getEncoding())); - + if ( errorMessage == null ) + errorMessage = new StringBuffer(); + errorMessage.append(stream.ReceiveString(conn.getEncoding())); + break; //------------------------------ // Notice from backend case 'N': @@ -143,15 +147,22 @@ public class Fastpath // processed earlier. If no result, this already contains null case '0': //DriverManager.println("returning "+result); - return result; - + // return result; + break; case 'Z': + // cause the loop to exit + loop = false; break; default: throw new PSQLException("postgresql.fp.protocol", new Character((char)in)); } } + + if ( errorMessage != null ) + throw new PSQLException("postgresql.fp.error", errorMessage.toString()); + + return result; } }