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,
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':
status = SimpleForwardToFrontend(kind, frontend, backend);
if (status != POOL_CONTINUE)
return status;
- pool_flush(frontend);
+ if (pool_flush(frontend))
+ return POOL_END;
}
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)
internal_transaction_started = 0;
}
- pool_flush(frontend);
+ if (pool_flush(frontend))
+ return POOL_END;
if (send_ready)
{
}
static int RowDescription(POOL_CONNECTION *frontend,
- POOL_CONNECTION_POOL *backend)
+ POOL_CONNECTION_POOL *backend,
+ short *result)
{
short num_fields, num_fields1;
int oid, mod;
pool_write(frontend, &mod, sizeof(int));
}
- return num_fields;
+ if (pool_flush(frontend))
+ return POOL_END;
+
+ *result = num_fields;
+
+ return POOL_CONTINUE;
}
static POOL_STATUS AsciiRow(POOL_CONNECTION *frontend,
mask >>= 1;
}
+ if (pool_flush(frontend))
+ return POOL_END;
+
return POOL_CONTINUE;
}
mask >>= 1;
}
+
+ if (pool_flush(frontend))
+ return POOL_END;
+
return POOL_CONTINUE;
}
/* forward to the frontend */
pool_write(frontend, "P", 1);
- if (pool_write(frontend, string, len) < 0)
+ if (pool_write_and_flush(frontend, string, len) < 0)
{
return POOL_END;
}
ret = SimpleForwardToFrontend(k, frontend, backend);
if (ret != POOL_CONTINUE)
return ret;
- pool_flush(frontend);
+ if (pool_flush(frontend) != 0)
+ return POOL_END;
}
status = pool_read(MASTER(backend), &res1, sizeof(res1));
return POOL_ERROR;
}
SimpleForwardToFrontend(kind1, frontend, backend);
- pool_flush(frontend);
+ if (pool_flush(frontend))
+ return POOL_END;
}
for (;;)