Commit eef5c4f0 authored by Peter Eisentraut's avatar Peter Eisentraut

pq_getstring doesn't go through pq_getbyte anymore, for better performance.

parent 32c6c99e
......@@ -29,7 +29,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: pqcomm.c,v 1.130 2002/04/03 00:44:27 tgl Exp $
* $Id: pqcomm.c,v 1.131 2002/04/20 23:35:43 petere Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -569,20 +569,37 @@ pq_getbytes(char *s, size_t len)
int
pq_getstring(StringInfo s)
{
int c;
int i;
/* Reset string to empty */
s->len = 0;
s->data[0] = '\0';
/* Read until we get the terminating '\0' */
while ((c = pq_getbyte()) != EOF && c != '\0')
appendStringInfoCharMacro(s, c);
for(;;)
{
while (PqRecvPointer >= PqRecvLength)
{
if (pq_recvbuf()) /* If nothing in buffer, then recv some */
return EOF; /* Failed to recv data */
}
if (c == EOF)
return EOF;
for (i = PqRecvPointer; i < PqRecvLength; i++)
if (PqRecvBuffer[i] == '\0')
{
/* does not copy the \0 */
appendBinaryStringInfo(s, PqRecvBuffer + PqRecvPointer,
i - PqRecvPointer);
PqRecvPointer += i + 1;
return 0;
}
return 0;
/* If we're here we haven't got the \0 in the buffer yet. */
appendBinaryStringInfo(s, PqRecvBuffer + PqRecvPointer,
PqRecvLength - PqRecvPointer);
PqRecvPointer = PqRecvLength;
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment