提交 54cc549d 编写于 作者: D Dave Cramer

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
上级 00923229
......@@ -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;
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册