pgpool2.git / summary / log / commit / refs
commit e1dfeb255ca3d9431b70a2e113fe4f14c6e0003e
Author: Yoshiyuki Asaba <y-asaba at pgfoundry.org>
Date: Fri Oct 26 07:41:31 2007 +0000
Check return value of pool_flush().
pool_process_query.c | 43 +++++++++++++++++++++++++++++--------------
1 file changed, 29 insertions(+), 14 deletions(-)
diff --git a/pool_process_query.c b/pool_process_query.c
index fab705d56..d5b1e4b6e 100644
--- a/pool_process_query.c
+++ b/pool_process_query.c
@@ -110,7 +110,8 @@ static POOL_STATUS EmptyQueryResponse(POOL_CONNECTION *frontend,
POOL_CONNECTION_POOL *backend);
static int RowDescription(POOL_CONNECTION *frontend,
- POOL_CONNECTION_POOL *backend);
+ POOL_CONNECTION_POOL *backend,
+ short *result);
static POOL_STATUS AsciiRow(POOL_CONNECTION *frontend,
POOL_CONNECTION_POOL *backend,
@@ -531,12 +532,7 @@ POOL_STATUS pool_process_query(POOL_CONNECTION *frontend,
case 'T':
/* RowDescription */
- status = RowDescription(frontend, backend);
- if (status < 0)
- return POOL_ERROR;
-
- num_fields = status;
- status = POOL_CONTINUE;
+ status = RowDescription(frontend, backend, &num_fields);
break;
case 'V':
@@ -1487,7 +1483,8 @@ static POOL_STATUS Execute(POOL_CONNECTION *frontend,
status = SimpleForwardToFrontend(kind, frontend, backend);
if (status != POOL_CONTINUE)
return status;
- pool_flush(frontend);
+ if (pool_flush(frontend))
+ return POOL_END;
}
if (ret != POOL_CONTINUE)
return ret;
@@ -1495,7 +1492,8 @@ static POOL_STATUS Execute(POOL_CONNECTION *frontend,
status = SimpleForwardToFrontend(kind, frontend, backend);
if (status != POOL_CONTINUE)
return status;
- pool_flush(frontend);
+ if (pool_flush(frontend))
+ return POOL_END;
/* end load balance mode */
if (in_load_balance)
@@ -1963,11 +1961,12 @@ static POOL_STATUS CompleteCommandResponse(POOL_CONNECTION *frontend,
}
free(string1);
- return POOL_CONTINUE;
+ return pool_flush(frontend);
}
static int RowDescription(POOL_CONNECTION *frontend,
- POOL_CONNECTION_POOL *backend)
+ POOL_CONNECTION_POOL *backend,
+ short *result)
{
short num_fields, num_fields1 = 0;
int oid, mod;
@@ -2087,7 +2086,9 @@ static int RowDescription(POOL_CONNECTION *frontend,
return POOL_END;
}
- return num_fields;
+ *result = num_fields;
+
+ return pool_flush(frontend);
}
static POOL_STATUS AsciiRow(POOL_CONNECTION *frontend,
@@ -2187,6 +2188,10 @@ static POOL_STATUS AsciiRow(POOL_CONNECTION *frontend,
mask >>= 1;
}
+
+ if (pool_flush(frontend))
+ return POOL_END;
+
return POOL_CONTINUE;
}
@@ -2285,6 +2290,10 @@ static POOL_STATUS BinaryRow(POOL_CONNECTION *frontend,
mask >>= 1;
}
}
+
+ if (pool_flush(frontend))
+ return POOL_END;
+
return POOL_CONTINUE;
}
@@ -2330,6 +2339,10 @@ static POOL_STATUS CursorResponse(POOL_CONNECTION *frontend,
return POOL_END;
}
free(string1);
+
+ if (pool_flush(frontend))
+ return POOL_END;
+
return POOL_CONTINUE;
}
@@ -3800,7 +3813,8 @@ POOL_STATUS SimpleForwardToFrontend(char kind, POOL_CONNECTION *frontend, POOL_C
ret = SimpleForwardToFrontend(kind1, frontend, backend);
if (ret != POOL_CONTINUE)
return ret;
- pool_flush(frontend);
+ if (pool_flush(frontend))
+ return POOL_END;
}
if (ret != POOL_CONTINUE)
@@ -3956,7 +3970,8 @@ POOL_STATUS SimpleForwardToBackend(char kind, POOL_CONNECTION *frontend, POOL_CO
if (ret != POOL_CONTINUE)
return ret;
SimpleForwardToFrontend(kind1, frontend, backend);
- pool_flush(frontend);
+ if (pool_flush(frontend))
+ return POOL_END;
}
for (;;)
[parent: 23d7484d8678]